MT4のEAについて。

発注から一定の時間が経過したら、その注文を取り消したいです。
ですが、order send の最後から2番目に秒数を入力しても全く取り消される気配がありません。
また、time current()+60 と入力した場合、発注自体がされなくなります。
どなたか、お分かりになられる方、ご教授の方、よろしくお願いします。

回答1

OrderSendの有効期限という機能は利用したこと無いので
詳しくはわかりませんが

以下のリファレンスページの引数expirationの説明欄を見る限り
(待機中のオーダーに対してのみ)と説明書きされております。

おそらく、なんらかのサーバートラブルとかで注文が約定せず
待機状態が続いた場合
指定した時間待機した後、注文を取り消すための引数です。

ですので、約定した注文を取り消すためのものではありません。
そもそも、約定した注文は決済はできますが取り消しはできません

http://www.metasys-seeker.net/MQL4_Reference_ver1/20-18_OrderSend.h…

約定時刻から一定時間経過後、決済するのであれば
静的変数に注文約定時の時間+任意の時間を保存して
TimeCurrent()が保存した時間以上になったら
OrderCloseという風にすればいいかと思います。

//================//

datetime setTimer;//(グローバル領域)

ticketNum = OrderSend(~);

if(OrderSelect(ticketNum,~)) setTimer = OrderOpenTime( ) + 60;

//================//

//================//

if(TimeCurrent() >= setTimer)
{
bool closed = OrderClose();
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA