MetaTraderにキーボードショートカットを割当てるAccela.ahk
昨日紹介した、MetaTraderにキーボードショートカットを割当てるAccela.ahk について簡単に解説します。
このスクリプトは、誰でも簡単に編集して自由にショートカットキーを割当てられますので、是非活用してみてください。
…と言う訳で、もっとも単純な割り当て方から。
#IfWinActive ahk_class MetaQuotes::MetaTrader::4.00 A::Send !a
1行目は、MT4のメインウィンドウがアクティブな場合のみ有効になる..という呪文です。ファイルの先頭に1度だけ書けばOKです。
2行目は、「A」キーが押されたら( :: )、「Alt + a」を代わりに送る(Send)..という意味です。
「!」が「Alt」に相当します。
この2行だけをファイルに書いて、拡張子を .ahk にして保存してダブルクリックするだけで割当てができます。
ahkでの記号表記 | 相当するキー |
^ | Ctrl |
! | Alt |
+ | Shift |
# | Win |
「C」キーが押されたら、「Ctrl + F」を代わりに送る時は、
C::Send ^f
と書きます。「^」が「Ctrl」に相当します。Ctrl + F は、MT4でクロスカーソル(十字線)になります。
キーが押されたら、Windowsメッセージを送ってGUIを操作したい場合は、
キーの種類::PostMessage, 0x111,メッセージID,0
と書きます。0x111は、WM_COMMAND を意味します。メッセージID は、この記事を参考にしてください。
「T」キーでトレンドラインボタンを押したい場合は、
T::PostMessage, 0x111,33257,0
です。33257がトレンドラインボタンを押した時のIDです。
ボタンを押してから、直後にマウスをクリックさせたい時は、
V:: PostMessage, 0x111,33260,0 ;垂直線=33260 MouseClick ;マウス左クリック return
のように複数行に分けて操作を記述し、最後に return と書きます。
これで、「V」キー押下げで、垂直線ボタンが押されて、すぐマウスクリックされるので、垂直線が一発で引けます。
複数のキーを同時押しした時に特定の操作をさせたい場合は、
^r::MsgBox Control+R !r::MsgBox Alt+R +r::MsgBox Shift+R #r::MsgBox Win+R t & r::MsgBox T+R Space & Q::MsgBox Space+Q
のように、「 ^ ! + # 」の時は2文字続けて書き、普通のキーの時は「 & 」で繋ぎます。
「T」を押した状態で、「R」を押すという特殊なキーコンビネーションも出来ます。
キー操作時に音を鳴らしたい場合は、
F5:: PostMessage, 0x111,33324,0 ;チャートの更新 SoundPlay,*48 ;システム音の再生例 return
のように書きます。再生したいWAVファイルをAccela.ahkと同じフォルダに置いた場合は、
SoundPlay,error.wav ;error.wav を同じフォルダに置く場合。
のように指定できます。
Fast Navigation を使う人向けの注意事項
MT4のチャート左下に出るFast Navigation を利用している人は、
上記の方法で英数字にそのままキー割り当てすると、Fast Navigation が使えなくなります。
解決方法としては、
1. キーコンビネーションのみに割当てる。
2. Fast Navigation 使用時にキー割り当てを無効にする。
があります。
1. は、Win キーやSpace キーとの組合せなどでがんばって頂くとして、
2. の時の書き方を説明します。
まず、ahkファイルの中に以下の関数を追加します。
;Fast Navigation にフォーカスがあるときは1を返す関数 CheckFN(){ ControlGetFocus, control IfNotInString, control, Edit,return 0 return 1 }
そして、英数字キーを割当てるときに
1:: if CheckFN()==0 PostMessage, 0x111,33137,0 ;1分足切替命令 else Send 1 ; 1キーを送る return
のように書きます。
これは、数字の1キーが押された時に1分足に切り替えるサンプルですが、
1が押されたら、Fast Navigation 使用中かどうか確認して、使用中は、そのまま1キーをSendするようにしています。
あの機能にこのキーを割当てたい…という要望があれば、コメント欄にお願いします。
とりあえず、今日はこの辺で...Zzzz