見出し画像

スマホのMT4からEAの新規注文を停止する

Hiroです。
EAを稼働していると出先から「新規注文止めたい」時ってありますよね。
スマホからリモートデスクトップ接続でMT4稼働PCに接続して自動売買停止ボタンを押す・・・多くの方はこんなやり方で停止してるのではないでしょうか?

普段から利用しているスマホのMT4から「新規エントリーを停止」することができればちょっとだけ便利ですよね。
今回はそんなお話。

全体の流れ

今回の仕組みには「指値注文(Limit Order)」を利用します。
スマホのMT4から指値注文を入れ、EA側で指値注文が存在する場合エントリーしない。という流れです。
※指値注文の価格は「ありえない価格」にしておかないとこちらで注文は行っちゃうので注意です。

EA側の準備

まずEA側で指値注文有無を判断するロジックを組み込みます。

// buy_limit注文の有無を確認する関数
bool CheckBuyLimitOrder() // 関数名を定義 
{
    int totalOrders = OrdersTotal(); // 注文の総数を取得
    for (int i = 0; i < totalOrders; i++)
    {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if (OrderType() == OP_BUYLIMIT)
            {
                // buy_limit注文が存在する場合
                return true;
            }
        }
    }
    // buy_limit注文が存在しない場合
    return false;
}

このコードでは指値注文に「buy limit」を使用しています。
buy limitの有無を確認するための関数「CheckBuyLimitOrder()」を記述します。型はbool型でbuy limitの有無でtrueかfalseを返します。
オーダープールにあるすべての注文を確認し、buy limitがある場合trueをない場合はfalseを返します。

判定処理

if(CheckBuyLimitOrder() == false) // buy limitがない場合
{
//エントリーロジックを記述
}

これだけです。
buy limitが存在しない場合「CheckBuyLimitOrder()」関数からfalseが返されますので、エントリーロジックが実行されます。逆に存在する場合はtrueが返されますのでエントリーロジックはスルーされます。

スマホ側の手順

iOS版での説明です

停止したいEAが稼働している口座を開き、スマホのMT4右上の「+」から注文画面を表示します。

注文のタイプ「Buy Limit」を選択(間違って成り行き注文しないように!)
価格にありえない数値(Goldであれば100など非常に小さい数値)を入力
「発注」
以上で新規の注文が停止されます。

最後に、個人的にリモートに慣れ切ってるので普通にリモート接続してON/OFFした方が早いかな?とか笑

以上、引き続き良きEAライフを!

いいなと思ったら応援しよう!