Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
Собственно, для советника работающего по onTick, в режиме "Только цены открытия" при тестировании все вычисления индикаторов и вызов функции OnTick() в экспертах происходит только один раз на бар.
потому что вы берете каждый раз новое время тика, и оно конечно не равно предыдущему.
前回の関数ではバーの開始時刻を取得しましたが、ここでもティックタイムではなくバーの時刻を取得します。
コードのどのパラメータをどれに変更すればいいのか、わからない人に説明する。
ティックタイムではなく、バータイムを表現するには?
コード内のどのパラメータをどれに変更すればいいのか、わからない人に説明する。
ティックタイムではなく、バータイムを表現するには?
コード内のどのパラメータをどれに変更すればいいのか、わからない人に説明する。
ティックではなく、バーの時間を表現するには?
以下は、"new bar "イベントハンドラの 一般的な説明です。
一般的に、質問をする前に記事やコードベースを見ることを怠ってはいけません。
Вот тут все популярно описано Обработчик события "новый бар"
一般的に、質問をする前に記事やコードベースを見ることを怠らないようにしましょう。
mql4では、バーが新しいか どうかを5行で知ることができました。そして今、大量のファイルが書き込まれ、どこに置くべきか、プログラムの中に何を書くべきか、はっきりしない......。
要するに、専門家がいるならば、私が苦しまないように、私にコードの例を与え、私は自分自身で、電子または実物のどちらかのライブラリに誰でも送ることができます。
mql4とmql5で同じEAを作成し、テスト結果を 比較された方はいらっしゃいますか?コードがきちんと変換されていれば、パーフェクトシミラーになるはずですよね?それとも私が間違っているのでしょうか?
テストがperbarとmql5の両方であり、ロジックがonTickに配置されている場合、同様のことが行われます。
違いはスプレッドだけかもしれません。5では、履歴にスプレッドが含まれています。4バージョンでは、テスターの広がりは、端末の現在の広がりと同じです。
ティック毎に」テストすると、ティック生成のアルゴリズムがバージョンによって異なるため、さらに小さくなるようです。
mql4では、バーが新しいか どうかを5行で知ることができました。そして今、大量のファイルが書き込まれ、どこに置くべきか、プログラムの中に何を書くべきか、はっきりしない......。
要するに、専門家がいる場合、私は苦しんでいないように、私にコードの例を与え、私は自分自身、電子または実際のライブラリに誰を送信することができます。
ここでは、変数lastbar を static またはグローバルに宣言し、iTime 配列をグローバルに宣言します。
isNewBar関数のページに例があります。
https://www.mql5.com/ru/forum/2804/38752#comment_38752
1.mql4とmql5で同じストラテジーを試した結果について、何も聞かなかったのです。
以前は、条件が合えば新しいバーでエントリーし、インジケータが逆のシグナルを示せばポジションをクローズして、新しいバーで再度エントリーしていました。
mql4では、この手順で新しいバーでエントリーしていました。
void Fun_New_Bar() // Ф-ия обнаружения ..
{ // ... 新しいバー
static datetime New_Time=0; // 現在のバーの時間
New_Bar=false; // 新しいバーを表示しない。
if(New_Time!=Time[0]) // 時刻の比較
{
New_Time=Time[0]; // 今の時刻は
New_Bar=true; // 新しいバーが捕まる
}
}
私のストラテジーを使ってmql4でロボットをテストした結果はこのようになります。
新バー決定までの手順を送っていただき、ありがとうございました。働いているのです。新しいバーでAlertを書き込むスクリプトを作り、M1でテストしたので、あまり待たずに済みました。
しかし、同じストラテジーが、mql5 Expert Advisorで両方のプロシージャを使用すると、まったく異なる結果(同じもの)が得られます。
私は何もせずにシャツを破り、足を踏み鳴らしてきたわけではありません。繰り返したいのですが、結果が一致しません。
mql4のonStart関数はおおよそ以下のような感じです。
int start()
{
GetIns()です。
Fun_New_Bar()。
if (New_Bar==false) return(0);
if (Total()>0)
{
CloseSellEnd()。
CloseBuyEnd()。
}
if (Total()<1)
{
OpenBuy()です。
OpenSell()です。
}
return(0)です。
}
mlq5でも同様です。
void OnTick()
{
GetIns()です。
if (NewBar())
{
if (Total()>0) TryToClose()。
if (Total()<1)
{
OpenBuy(Lots,10, "EUR/USD (Buy)",102406)。
OpenSell(Lots,10,「EUR/USD (Sell)」,102406)。
}
}
}
GetInsはインジケータパラメータを処理するために、Total() -はmql4のために必要なマジックまたはmql5のために必要なシンボルを持つポジションの数を提供します。
助けてください。
矛盾の原因がわかった気がします。信じられませんよね。MT4とMT5では、見積もり履歴が異なります。微妙に違うようで、大差で攻略法を試される!!!!
こちらは、異なる端子での1つのプロットです。
よく見ると、違いがあるんです。小さいやつ?そして、戦略のテスト結果の差も小さいとは......。
開発者に連絡します!なんとベータ版!!!