MT4のチャート上にボタンを付けて、
通常であればEAが判断して注文するところを
ボタン押下で即時注文させるようにしたい。
(売買は現在のサイン方向で。)
やってみよう。
対象にするのは今、デモで動かしてるEA。
テクニカルのサインが変わった時にだけ注文するので
待ちくたびれてしまうのです。
●追加した命令
string buttonID = "Button01";
●OnInit()内にボタンの設定を。
ObjectCreate(0,buttonID,OBJ_BUTTON,0,0,0);
ObjectSetInteger(0,buttonID,OBJPROP_CORNER,CORNER_RIGHT_UPPER);
ObjectSetInteger(0,buttonID,OBJPROP_COLOR,clrWhite);
ObjectSetInteger(0,buttonID,OBJPROP_BGCOLOR,clrGray);
ObjectSetInteger(0,buttonID,OBJPROP_XDISTANCE,205);
ObjectSetInteger(0,buttonID,OBJPROP_YDISTANCE,18);
ObjectSetInteger(0,buttonID,OBJPROP_XSIZE,200);
ObjectSetInteger(0,buttonID,OBJPROP_YSIZE,36);
ObjectSetString(0,buttonID,OBJPROP_FONT,"Arial");
ObjectSetString(0,buttonID,OBJPROP_TEXT,"Order !");
ObjectSetInteger(0,buttonID,OBJPROP_FONTSIZE,10);
ObjectSetInteger(0,buttonID,OBJPROP_SELECTABLE,0);
2行目。オブジェクトのコーナーは右上に指定してます。
●OnDeinit()内に終了時の消去を。
ObjectDelete(0,buttonID);
●OnChartEvent()内にボタンの動作を指定します。
if( id == CHARTEVENT_OBJECT_CLICK ){
if( sparam == buttonID ){
if( ObjectGetInteger(0,sparam,OBJPROP_STATE) == true ){
Flag = 1;
ObjectSetInteger(0,sparam,OBJPROP_STATE,0);
} } }
もう少し説明すると、
・チャート上のオブジェクトをクリックしていて
・それがbuttonIDで
・ボタンの状態が押下されているならば
売買フラグを1。
ボタンの状態を元に戻す。(0にセット))
注文するからといって、ここでSendOrderしなくても
私の場合は売買フラグを1にするだけで、OnTick()の方で
で売買してくれる。
んーとりあえずできた。
ボタンの確認はOK!
でもね…元のプログラムも色々変更してしまったので
そもそもEAとしてちゃんと動作するのか?の方が心配。w
のしのし
-----
ボタンは便利だねー。
少し重くなる気がするけど、
今後も使っていこうと思います。