スマホの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が返されますのでエントリーロジックはスルーされます。
スマホ側の手順
停止したいEAが稼働している口座を開き、スマホのMT4右上の「+」から注文画面を表示します。
注文のタイプ「Buy Limit」を選択(間違って成り行き注文しないように!)
価格にありえない数値(Goldであれば100など非常に小さい数値)を入力
「発注」
以上で新規の注文が停止されます。
最後に、個人的にリモートに慣れ切ってるので普通にリモート接続してON/OFFした方が早いかな?とか笑
以上、引き続き良きEAライフを!