どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 249

 
Sepulca:

その方がいいのかもしれませんね。

場所を入れ替えればいいだけです。Hour()>時分よりHHを開く頻度が高い。
 
artmedia70:
入れ替わるだけ。それでも、時分よりHour()>OpenHHの方が頻度が高い。


これでEAの速度が上がると思いますか?どうだろう、もしかしたら...。正直なところ、IFで条件の順番なんて考えたこともないのですが......)。
 
Sepulca:

これでEAの速度が上がると思いますか?面白い、かも...。正直、IFで条件を設定する順番なんて考えたことなかった...)
まあ...大幅に増えたというわけではないのですが、それでも......。新しいMQL4を搭載した更新端末が リリースされるまで、最初の論理条件が偽であっても、すべての論理条件を最後まで読み込みます
 
Sepulca:


すべて正しいようです、動作するはずです。あなたのコードを私のコードで試してみました - 分で動作します。ただし、14:25から14:59まで、15:25から15:59まで等のみ。


迅速な回答をありがとうございました。コードは、スクリプトの本体とEAの本体の両方で、この方法でしか動作しません。時間的にも機能的にも、すべてが順調です。注文は時計のみです
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);}

しかし、分単位を追加するとすぐに ( TimeMinute(TimeCurrent()))>= OpenMM ) - 結果が出ません。

EAはまた、StrToTime()関数を使用する場合、分単位で注文を出すことを拒否します。

いつもありがとうございます...これからも掘り続けます...。

 
Sepulca:

その方がいいのかもしれませんね。

いや...これもダメなんです...。

別の関数 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);}

 
Crosswert:

いや...これもダメなんです...。

別の関数 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で、始値の 場合は、おそらく動作しません。
 
Sepulca:
どのようにテストするのですか?例えばH1で始値の場合、おそらくうまくいかないでしょう。 。
議事録の始値で テストするように助言する。
 
Sepulca:
テストはどのように行うのですか?例えば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で、その分、注文を開始していたのか...。

一般的にバカは、ハードで・・・。

ありがとうございます...