// Возвращает true только в случае, если выбран (в тестере) режим по реальным тикам// Перед использованием должен быть хотя бы один OnTick вызван тестеромbool IsRealTicks( void )
{
MqlTick Tick;
return(SymbolInfoTick(_Symbol, Tick) && (Tick.volume || !(Tick.flags & TICK_FLAG_LAST)));
}
使用例
// Советник будет тестироваться только в режиме по реальным тикамvoidOnTick()
{
staticbool IsRemove = true;
if (IsRemove)
{
IsRemove = MQLInfoInteger(MQL_TESTER) && !IsRealTicks();
if (IsRemove)
{
Print("Real ticks mode is needed!");
ExpertRemove();
return;
}
}
//........
}
どのようなGUIかわかりませんが、テスターウィンドウのパラメータタブで、スタートフィールドとストップフィールドを設定 することができます。そして、テスターはパラメータ値の数を正しく判断する。
フィールドステップ
フィールドステップ
ステップ・フィールド
おそらく、列挙型のフィールドには、どのステップの倍数にもならないような固有値が与えられることがあるからだ。
その理由は、列挙型フィールドには固有値が与えられるが、その固有値はどのステップの倍数にもならない可能性があるためと思われる。
はい、バグではありません、だからこのスレッドで話し始めたのです。最適化ステップが必要な場合は、MQL for enumで設定することができます。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
ライブラリ: TesterBenchmark
fxsaber さん 2017.11.22 16:54
MT5の各バリエーションに1行だけ挿入する
本格派は67%、職人派は108%に加速!?
しかし、それは本題ではありません。1行でEAを高速化することに成功!そして、これはCommentが何の役にも立たないOptimizerでの話です。
使用例
OnInitで(OnTickなしで)これを行う方法 - 知りません。この話題に関する 対談の一部をご紹介します。
この2つの文字列が、Optimizeモードではどのように違うのか、例を挙げて説明してください。
最初のケースで最適化する場合、文字列式は印刷の前に計算されます。プリント自体は呼び出されますが、うまくいきません。
2番目の場合、Printは呼び出されますが、動作しません。また、i+dの文字列変換もうまくいきません
簡単なテストでは、1回目と2回目の呼び出しの結果は、時間、受信出力ともに同じになります。
つまり、Optimizeモードの入力パラメータを1つだけ文字列として形成するよりも、Printをカンマで区切って使用する方がはるかに安上がりなのです。
一方、Printの内部ですべてを1つの文字列として形成する場合は、Optimizeモードで
が、カンマが使われていると、このような構成はうまくいきません。さらに、このような構成にすると、Optimizeモードでも無効化されます
したがって、(他の理由もありますが)本当に重要な関数はPrintの内部で呼び出さない方がよいでしょう。その結果、Optimizeモードでパフォーマンスをケアした場合でも、次のようなことが必要になります。
ダイアログの一部を抜粋してご紹介します。
つまり、Optimizeモードでは、単一の入力パラメータを文字列として形成するよりも、カンマ付きのPrintを使用する方がはるかに安上がりなのです。
一方、Printの右側ですべてを一本の線として形成する場合、Optimizeモードでその形成を無効にするのは簡単である。
が、カンマが使われていると、このような構成はうまくいきません。さらに、このような構成にすると、Optimizeモードでも無効化されます
したがって、(他の理由もありますが)本当に重要な関数はPrintの内部で呼び出さない方がよいでしょう。その結果、Optimizeモードでパフォーマンスを重視する場合は、やはり次のような工夫が必要になります。
すみません、もしかしたら理解できないかもしれませんが、なぜプリントで重要な関数を呼び出す必要があるのでしょうか?
禁じ手ではありません。
禁じ手ではありません。
私もそう思います。
ということを知りたかっただけです。
この度、履歴に1000件以上の取引があり、履歴の利益を計算するために履歴処理機能などを呼び出すと、問題が発生しました。+ なぜこの問題に悩まされるのかわからない。つまり、見積もりには遅延が発生します。