MT4のEAでボタンを作る
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

MT4のEAでボタンを作る

2018-03-21 13:49

    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

    のしのし
    -----
    ボタンは便利だねー。
    少し重くなる気がするけど、
    今後も使っていこうと思います。



    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。