staticdatetime Old_Time;
datetime New_Time[1];
bool IsNewBar=false;
// копируем время текущего бара в элемент New_Time[0]int copied=CopyTime(_Symbol,_Period,0,1,New_Time);
if(copied>0) // ok, успешно скопировано
{
if(Old_Time!=New_Time[0]) // если старое время не равно
{
IsNewBar=true; // новый барif(MQL5InfoInteger(MQL5_DEBUGGING))
Print("Новый бар",New_Time[0],"старый бар",Old_Time);
Old_Time=New_Time[0]; // сохраняем время бара
}
}
else
{
Alert("Ошибка копирования времени, номер ошибки =",GetLastError());
ResetLastError();
return;
}
//--- советник должен проверять условия совершения новой торговой операции только при новом бареif(IsNewBar==false)
{
return;
}
教えてください、さらなる作業(修正)のために位置を送信することができる関数は、使用しています , ulong deal; // チケット取引、それが前に覚えて、取引のチケットで作られている場合?おそらく、この選択には、左手で右耳を磨くような、複雑なアルゴリズムが必要になるのではないでしょうか?
みなさん、こんばんは。この支店に興味を持つ人がいるんですね。チャンピオンシップについて...
まだ専門家が、選手権のために閉じた情報から送信された私のデータをチェックしていない - チェックされた!?
いつチェックされるのですか?
みなさん、こんばんは。この支店の人たちは興味があるようですね。チャンピオンシップについて...
まだ専門家が、選手権のために閉じた情報から送信された私のデータをチェックしていない - チェックされた!?
いつチェックされるのですか?
みなさん、こんばんは。この支店の人たちは興味があるようですね。チャンピオンシップについて...
まだ専門家が、選手権のために閉じた情報から送信された私のデータをチェックしていない - チェックした
いつチェックされるのですか?
質問があります。
記事にあった、新しいバーの開始を定義するコードがあります。
すべて正常に動作しています。しかし、最後のifに異なる重い統計の計算を含めたいのです。新しいバーの瞬間に最小限の計算をさせたい。
ここで質問です。統計が比較的長い時間(例えば2秒)計算され、古いバーと新しいバーのティックの間のギャップが最小である場合、このコードはどのように動作するのでしょうか。
私の理解では、OnTick()関数が 計算している間、ティックはスキップされますが、次のティックはEAにとって新しいものでしょうか、それはバー内の最初のものではありませんが。
手動チェックはまだうまくいっていない
OnTick()関数が 2秒間実行されると、この間に来たすべての相場はEAによって無視されます。明確にしたかったのは、この点でしょうか?
ここでは、この2秒間は無視されますが(この間のティックも)、例えば3回目のティックでは、別のティックが来て、コードはそれをバー内の新しいものとして認識するのでしょうか?
これは、EAを実行すると、次のティックが必ず1番になることで間接的に確認できます。
90秒間の統計計算を行った場合、M1の新しいティックの条件は少なくとも1回は実行されるのでしょうか?
各取引には、ポジションの識別子があります。この識別子を使用して、ポジション自体を検索することができます。
まあ、上記で既に完成しているんですけどね。繰り返しになりますが、Expert Advisor の「新しい」気配値は、次の OnTick() 関数の完了直後に到着する気配値で、この気配値が「バーの最初のティック」でない場合もあります。 新しいバーが来るというあなたの条件
は、Expert Advisor が「前の」バーに来た気配値の処理を終えた後にのみチェックされます。 ...OnTick() 関数が 90 秒間実行されて 00.00.00 に開始された場合、「M1 の新しいティックの条件は、ある時点、すなわち 00.01.30 以降で実行されます」。