MT4の優秀性

プロトレーダーの多くがMT4を使った裁量トレードを行っています。
MT4は非常に優秀な取引ツールです。
殆どの国内FXブローカーは取引ツールとして独自ツールを提供していますが、一度MT4を使ったトレーダーにとって、決して魅力があるツールとは言えません。
MT4は素のまま使っても使えるツールですが、MT4はもともとシステムトレードのベースとして設計されていますから、カスタマイズ性は少々オーバーですが無限大であり、国内FXブローカーが提供する(高機能?)ツールの比ではありません。

取引ツールにいくら多くの機能が搭載されていても、その機能が迅速にストレスなく、自然に使えなければ全く意味がありません。
車を運転する時、ハンドルやアクセルやブレーキなどの操作を意識していないはずです。操作は体が覚えていて無意識の中で自然に行っています。

弊社が提供するMT4インジケーターやスクリプトといったプログラム群は、こうしたMT4のカスタマイズ性を十分活かし、機能を迅速にストレスなく、自然に使えることを目標に開発しています。

ショートカットキーという解決策

昔から、PCの作業効率を上げる解決策としてショートカットキーが使われてきました。
メニューを介さずキー一発で起動できるから操作性は抜群です。

さきほど、『機能を迅速にストレスなく、自然に使えることを目標としている。』と記述しましたが、その解決策の一つとして、プログラムにショートカットキーを対応しました。

AutoHotkeyとBS_object_Modifier

MT4にもショートカットキーが搭載されていますが、実際のトレードでは(辛口ですが)使い物になりません。
そこで、登場するのが、有名なAutoHotkeyというソフトウェアです。
AutoHotkeyは非常に良くできた汎用的なソフトウェアでMT4専用という訳ではありませんが、これを使えば、多くのMT4の操作がショートカットキーで可能になります。
具体的には、水平ライン、トレンドライン、FIBOなどのオブジェクトや時間足の変更などをAutoHotkeyに定義したショートカットキーを使って操作することが可能です。
さすがに、オブジェクト内部の設定変更まではできませんが、弊社のBS_object_Modifierを使えば、実現可能になります。

たとえば、AutoHotkeyでは現在のマウスポインタの位置でhキー(任意に定義したもの)を押せば水平ライン、tキーを押せばトレンドラインが引けます。そして、BS_object_Modifierに登録したキーを使ってラインの色や種別や太さなどを変更することが可能になります。

このように、AutoHotkeyとBS_object_Modifierを組合して使うと、ショートカットキーだけでシームレスに迅速にオブジェクトの設定が可能になります。
特に、多くの通貨ペアを分析するときや、難しい局面でのチャート分析をする場合などには、たくさんのラインを引くことがあります。
こんな時にショートカットキーを使ってラインやFIBOが一発で設定できればストレスなくトレードに集中して取り組むことができると思います。

AutoHotkeyのMT4設定サンプル

以下の設定は実トレード用のサンプルです。
このままでも十分使えますが、好みで変更して使ってください。

; Accela.ahk(アクセラ)
;
;
;使用時は
;http://www.autohotkey.com/download/ をインストールする
;コメントアウトは先頭に「;」を書く。もしくは、 /* */ で囲む
;「#If」で始まる行は削除注意。
;修飾キー ^ Ctrl , ! Alt , + Shift , # Win

;MT4ウィンドウに限定
#IfWinActive ahk_class MetaQuotes::MetaTrader::4.00

;Fast Navigation にフォーカスがあるときは1を返す関数
CheckFN(){
ControlGetFocus, control
IfNotInString, control, Edit,return 0
return 1
}

;——————————————————————-
;以下が、キー割り当て設定。—ラインで区切られたブロック単位で削除可能。
;——————————————————————-
;MT4に割当てたキーの組み合わせを1キーで押す場合。
;「Alt」=「! 」, 「Ctrl」= 「^」という表記に注意。
;A::Send !a ; Alt + a,Script割当てしたものを実行
;——————————————————————-
;C::Send ^f ; Ctrl+ F,Cが押されたらクロスカーソル
X::Send ^f ; Ctrl+ F,Xが押されたらクロスカーソル
;——————————————————————-
;メッセージ送信後、クリックする場合、複数行に分けてreturn を書く
E::
PostMessage, 0x111,33253,0 ;テキスト
MouseClick
return
^E::
PostMessage, 0x111,33261,0 ;テキスト
MouseClick
return

;——————————————————————-
;直接メッセージを送るだけの場合。
F::PostMessage, 0x111,33237,0 ;フィボナッチ
^F::PostMessage, 0x111,33256,0 ;フィボナッチタイム

;——————————————————————-
^I::
PostMessage, 0x111,33310,0 ;インジケーター、スクリプト起動
MouseClick
return
;——————————————————————-
^M::
PostMessage, 0x111,33263,0 ;メタエデッター起動
MouseClick
return
;——————————————————————-
H::
PostMessage, 0x111,33244,0 ;水平線
MouseClick
return
;——————————————————————-
;L::
PostMessage, 0x111,35463,0 ;価格左
MouseClick
return
;——————————————————————-
;P::
PostMessage, 0x111,35463,0 ;価格左
MouseClick
return

;^P::
PostMessage, 0x111,35464,0 ;価格右
MouseClick
return

;——————————————————————-
;S::PostMessage, 0x111,33054,0 ;画像保存
;——————————————————————-
T::PostMessage, 0x111,33257,0 ;トレンドライン
L::PostMessage, 0x111,33257,0 ;トレンドライン
;——————————————————————-
V::
PostMessage, 0x111,33260,0 ;垂直線
MouseClick
return
;——————————————————————-
; 矢印
;Y::PostMessage, 0x111,33231,0
;^Y::PostMessage, 0x111,33230,0
;——————————————————————-

;——————————————————————-
; 四角形
R::PostMessage, 0x111,33247,0
;; 円形
^R::PostMessage, 0x111,35408,0
;——————————————————————-

;——————————————————————-
; チェックサイン
;C::PostMessage, 0x111,33232,0

; ストップサイン
;S::PostMessage, 0x111,33251,0
;——————————————————————-

;キーコンビネーションの例
;Winキー + 1
#1::MsgBox, 262208,, Windows+1
;SPACEキー + q
Space & Q::MsgBox, 262208,, Space+q
;——————————————————————-
;既存のファンクションキーも上書きできる
;使うなら先頭の;を消す。
;F2::Send !a ; Alt + a,Script割当てしたものを実行
;F3::Send !b ; Alt + b,Script割当てしたものを実行
;F4::Send !c ; Alt + c,Script割当てしたものを実行
;——————————————————————-

;——————————————————————-
; 自動スクロール id = 33017
F12::PostMessage, 0x111,33017,0
;——————————————————————-

;——————————————————————-
; チャート右端シフト id = 33023
F11::PostMessage, 0x111,33023,0
;——————————————————————-

;——————————————————————-
; ローソク足 id = 33019
F3::PostMessage, 0x111,33019,0
;——————————————————————-

;——————————————————————-
; ラインチャート id = 33022
F4::PostMessage, 0x111,33022,0
;——————————————————————-

;操作時に効果音を鳴らしたい時は複数行に分けてreturn を書く
;F5::
PostMessage, 0x111,33324,0 ;チャートの更新
SoundPlay,*48 ;システム音の再生例
;SoundPlay,error.wav ;error.wav を同じフォルダに置く場合。
return
;——————————————————————-
; ロウソク拡大  id = 33025
F2::PostMessage, 0x111,33025,0
;——————————————————————-
;——————————————————————-
; ロウソク縮小  id = 33026
F1::PostMessage, 0x111,33026,0
;——————————————————————-

;——————————————————————-
; 期間区切り表示非表示切り替え
F10::PostMessage, 0x111,98713,0
;——————————————————————-

;——————————————————————-
; ナビゲーター(インジケーター表示)
F7::PostMessage, 0x111,98846,0
;——————————————————————-

;——————————————————————-
; 使用インジケーター表示
F8::PostMessage, 0x111,100955,0
;——————————————————————-

;——————————————————————-
; 使用ライン表示
F9::PostMessage, 0x111,100938,0
;——————————————————————-
;——————————————————————-
; 板注文決済画面
!0::PostMessage, 0x111,103837,0
;——————————————————————-
;——————————————————————-
; 板注文決済画面
!F11::PostMessage, 0x111,103837,0
;——————————————————————-

;——————————————————————-
; 注文画面
!9::PostMessage, 0x111,98802,0
;——————————————————————-
;——————————————————————-
; 注文画面
!F12::PostMessage, 0x111,98802,0
;——————————————————————-

;——————————————————————-
;確認ダイアログを作るなら以下のように。
;Windows + D で矢印全削除
#D::
MsgBox, 4,, Would you like to delete Arrows?
IfMsgBox Yes
PostMessage, 0x111,33204,0 ;矢印の全削除
return
;——————————————————————-
;数字キーに時間足変更を割り当てた例
;Fast Navigation を使う場合は以下のように書く。
;Fast Navigation を使う場合はアルファベットの割当ても書き換える必要有。
1::
if CheckFN()==0
PostMessage, 0x111,33137,0
else
Send 1
return
;——————————————————————-
2::
if CheckFN()==0
PostMessage, 0x111,33138,0
else
Send 2
return
;——————————————————————-
3::
if CheckFN()==0
PostMessage, 0x111,33139,0
else
Send 3
return
;——————————————————————-
4::
if CheckFN()==0
PostMessage, 0x111,33140,0
else
Send 4
return
;——————————————————————-
5::
if CheckFN()==0
PostMessage, 0x111,33135,0
else
Send 5
return
;——————————————————————-
6::
if CheckFN()==0
PostMessage, 0x111,33136,0
else
Send 6
return
;——————————————————————-
7::
if CheckFN()==0
PostMessage, 0x111,33134,0
else
Send 7
return
;——————————————————————-
8::
if CheckFN()==0
PostMessage, 0x111,33141,0
else
Send 8
return
;——————————————————————-
9::
if CheckFN()==0
PostMessage, 0x111,33334,0
else
Send 9
return
;——————————————————————-

#IfWinActive