// --- если обычное тестирование без оптимизации и визуализацииbool IsUsualTester = (MQLInfoInteger(MQL_TESTER) && !MQLInfoInteger(MQL_OPTIMIZATION) && !MQLInfoInteger(MQL_VISUAL_MODE));
// --- если не тестирование и не оптимизация, значит видимый графикbool IsVisibleChart = (!IsUsualTester && !MQLInfoInteger(MQL_OPTIMIZATION));
В статье рассматривается идея мультирежимного программирования торговых роботов на MQL5. Используется объектно-ориентированный подход для реализации каждого из режимов. Приводится пример иерархии режимных классов и пример классов для тестирования. Предполагается, что мультирежимное программирование торговых роботов полностью учитывает особенности каждого режима работы MQL5-советника. Для идентификации режимов создаются функции и перечисление.
//true если работа на чарте или в визуальном тестировании, в остальных случаях falsebool CheckMode ()
{
if(MQLInfoInteger(MQL_DEBUG) ||
MQLInfoInteger(MQL_PROFILER) ||
(MQLInfoInteger(MQL_TESTER) && ! MQLInfoInteger(MQL_VISUAL_MODE)) ||
MQLInfoInteger(MQL_OPTIMIZATION) ||
MQLInfoInteger(MQL_FRAME_MODE)) returnfalse;
returntrue;
}
if (ChartID()!=0) {
// Graphical chart presents
// draws on it
}
どういう意味ですか?
どういう意味ですか?
アンドリュー、ここはスレッド違いだ。別のスレッドで調べてくれ。
アンドリュー、ここはスレッド違いだ。そんなことは別のスレッドで調べるべきだ。
どう思う?
これを試してみる?
どう思う?
Andreiさん、記事(セクション2.MQL5のモード)を見てください。)
どういう意味ですか?
これは正しい分岐ではないと思われるかもしれませんが、簡単なことです:
もし ChartID が妥当な値を示せば、それは GUI にその場所があり、描画が可能であることを意味します。
ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE)が無効なハンドルを返した場合、テスターの中にいることになります。(あるいはMQ VPS - 触ったことがないのでわかりません)。
間違ったスレッドに見える人もいるかもしれないが、簡単なことだ:
もしChartIDが合理的であれば、それはGUIにその場所があり、描画できることを意味する。
もしChartGetInteger(ChartID(),CHART_WINDOW_HANDLE)が無効なハンドルを返したら、テスターの中です。(あるいはMQ VPS - 触ったことがないのでわかりません)。
テスターにも仮想ではあるがチャートがある。
テスターもバーチャルとはいえチャートを持っているので、行き止まりの道だ
そのスレッドでお答えしました(質問は同じです)。
どう思う?
私はそのスレッド(同じ質問)であなたに答えた。
まあ、あなたにはすべての権利がある。オフトピックなところは削除して・・・何か問題でも?