int start() { int OpenHH=14,OpenMM=25; bool Trade=true; //---- if (Trade) // Разрешение на торговлю. if (TimeHour(TimeCurrent()) >= OpenHH ) // В назначенный час { OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); } // открыть ордера. //---- return(0); } //+------------------------------------------------------------------+ void OpenOrders(){return(0);}
その方がいいのかもしれませんね。
入れ替わるだけ。それでも、時分よりHour()>OpenHHの方が頻度が高い。
これでEAの速度が上がると思いますか?どうだろう、もしかしたら...。正直なところ、IFで条件の順番なんて考えたこともないのですが......)。
これでEAの速度が上がると思いますか?面白い、かも...。正直、IFで条件を設定する順番なんて考えたことなかった...)
すべて正しいようです、動作するはずです。あなたのコードを私のコードで試してみました - 分で動作します。ただし、14:25から14:59まで、15:25から15:59まで等のみ。
{
int OpenHH=14,OpenMM=25;
bool Trade=true;
//----
if (Trade) // Разрешение на торговлю.
if (TimeHour(TimeCurrent()) >= OpenHH ) // В назначенный час
{ OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); } // открыть ордера.
//----
return(0);
}
//+------------------------------------------------------------------+
void OpenOrders(){return(0);}
しかし、分単位を追加するとすぐに ( TimeMinute(TimeCurrent()))>= OpenMM ) - 結果が出ません。
EAはまた、StrToTime()関数を使用する場合、分単位で注文を出すことを拒否します。
いつもありがとうございます...これからも掘り続けます...。
その方がいいのかもしれませんね。
いや...これもダメなんです...。
別の関数 StrToTime() を使っても、時間を時間単位で指定するとすべてうまくいくのですが、分を追加するとすぐに結果が出なくなります。もっとも、1回目の投稿で書いたように、金曜日は問題なく23:45に注文が締め切られますが...。
bool Trade=true;
string OpenTime = "14:00"; // Вот так работает!!!
string OpenTime = "14:25"; // А вот так - не работает!!!
if ( StrToTime(OpenTime) == TimeCurrent() && Trade )
{ OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); }
//----
return(0);
}
//+------------------------------------------------------------------+
void OpenOrders(){return(0);}
いや...これもダメなんです...。
別の関数 StrToTime() を使っても、時間を時間単位で指定するとすべてうまくいきますが、分を追加すると途端に結果が出なくなります。とはいえ、1回目の投稿で書いたように、金曜日の23:45には問題なく注文は終了するのですが...。
bool Trade=true;
string OpenTime = "14:00"; // Вот так работает!!!
string OpenTime = "14:25"; // А вот так - не работает!!!
if ( StrToTime(OpenTime) == TimeCurrent() && Trade )
{ OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); }
//----
return(0);
}
//+------------------------------------------------------------------+
void OpenOrders(){return(0);}
どうだろう...このコードは私にも有効です...。
どのようにテストするのですか?例えばH1で始値の場合、おそらくうまくいかないでしょう。 。
テストはどのように行うのですか?例えばH1で始値の場合、おそらくうまくいかないでしょう。 。
ほら、簡単でしょう...。分数はTFの倍数であること ...
今/ if (TimeCurrent()== StrToTime(OpenTime) && Trade ), if OpenTime = 14:25 /は動作しますが、TF=M1とM5でのみ動作します ... 。注文を開始する機能には現在の相場が必要ですが、注文を閉じる機能には相場が必要ないのですが・・・。
この点は(私の経験不足で)何となく見逃していました...。
ありがとうございました。
Sepulca:
テストはどのように行うのですか?例えば、H1で始値の場合は、おそらく動作しないでしょう。ははは...。そして、ここに嘘がある...。
問題はOpenOrders()関数にあることが判明しました。ローソク足(バー)のブレイクダウンでの注文開始の制御を外すのをすっかり忘れていました。
if (Volume[0] > 1) return;
つまり、Expert Advisorがテストしていたのは何TFで、その分、注文を開始していたのか...。
一般的にバカは、ハードで・・・。
ありがとうございます...