int hh int CurrentHour CurrentHour=TimeHour(TimeCurrent())とする。 if (CurrentHour!=hh) { OrderSend(Symbol()、OP_BUY、0.01、Ask、3、Bid-3*Point、Bid+3*Point)を実行。 hh=TimeHour(TimeCurrent())。 }
int countorder; countorder=OrdersTotal(); if (countorder==0) { Alert ("no open orders"); }else { Alert ("have open orders"); } int hh; int CurrentHour; int LastOrderCloseTime; CurrentHour=TimeHour(TimeCurrent()).LastOrder(); int LastOrder().LastOrderCloseTime; int LastOrder().LastOrder(); int CurrentHour=TimeHour();
demlin:
Еще вопрос: какой функцией можно вытащить стоимость одного пункта инструмента?
https://docs.mql4.com/ru/constants/marketinfo
MarketInfo(Symbol(), MODE_TICKVALUE);
EAを1時間に1回しか取引しないようにするには、どのようなコードをEAに記述すればよいか教えてください。
例えば、EAがトリガーされ、注文が開かれ(それ以上には興味がない)、私は1時間のタイムフレームで現在のバーで注文を開かないようにしたい。
全部同じに見える
int hh
int CurrentHour
CurrentHour=TimeHour(TimeCurrent())とする。
if (CurrentHour!=hh)
{
OrderSend(Symbol()、OP_BUY、0.01、Ask、3、Bid-3*Point、Bid+3*Point)を実行。
hh=TimeHour(TimeCurrent())。
}
しかし、数え切れないほどの注文がある
皆さん、こんにちは。
この意味を教えてください。
買い注文......失敗 [取引タイムアウト]。
特に、どのようなタイムアウトなのかに興味があります。
https://www.mql5.com/ru/forum/112612
これは期限切れのサーバーレスポンスである --- 取引が開かれたかどうかにかかわらず。また、トレードが開かなかったという 保証はありません。
だから、1分後に注文が開かれているかどうかを確認してから、取引を続行しなければならない。
rlx です。
は、start() および init() の前に設定する必要があります。
int hh = 0; int init() { return(0); }.int start() { //------------------------------------------------- int countorder; countorder=OrdersTotal(); if (countorder==0) { Alert ("no open orders"; }else { Alert ("have open orders"; } int hh; int CurrentHour; CurrentHour=TimeHour(TimeCurrent()); if ((CurrentHour!=h)&&(countorder==0)){ OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point); hh=TimeHour(TimeCurrent()); } ・・・・・・・・・・。//------------------------------------------------- return(0); }.int deinit() { return(0); }.
言われた通りやってみたが効果なし、未決済注文のカウントを追加したら、決済後すぐに注文が開くようになった。
OrderCloseTime()で回避したところ、うまくいったようです。
int countorder;
countorder=OrdersTotal();
if (countorder==0)
{
Alert ("no open orders");
}else
{
Alert ("have open orders");
}
int hh;
int CurrentHour;
int LastOrderCloseTime;
CurrentHour=TimeHour(TimeCurrent()).LastOrder(); int LastOrder().LastOrderCloseTime; int LastOrder().LastOrder(); int CurrentHour=TimeHour();
OrderSelect(HistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY); hh=TimeHour(OrderCloseTime());
if ((CurrentHour!=hh)&&(countorder==0)){ OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point); }.
https://www.mql5.com/ru/forum/112612
これは、サーバーが応答するまでの待ち時間で、取引が開始されたかどうかを示します。また、取引が開始されて いない保証はありません。
そのため、開発者が推奨しているように、1分後に注文が開始されたかどうかを確認し、その後で操作を行うようにしてください。
ただし、面倒なことはしたくない。
OrderTotal() がゼロの場合、どのように注文が開かれるのか説明してください。
ありがとうございます。
下図は、その条件で実行されるコードのブロックを括弧で限定したものです。
OrderSend() 操作は、 この条件の影響を受けない。
バー・ナンバーを取得する方法、「未来」において :)
iBarShift() は、ヒストリーからバー番号を取得するのには問題ありませんが、このようなコードで、行を右側に移動した場合、つまりゼロバーを超えた場合は、どのようにしてバー番号を取得するのでしょうか。
バー・ナンバーを取得する方法、「未来」において :)
iBarShift() は、ヒストリーからバー・ナンバーを取得するためにはうまく機能しますが、このコードで行を右にシフトした場合、つまりゼロ・バーを超えた場合、どのようにしてバー・ナンバーを取得できるのでしょうか。
Time[0]からの相対的なオフセットを取得することができます。
Time[0]からの相対的なオフセットを取得することができます。
ありがとうございました。これで万事OK!