MetaTrader 5 Strategy Tester: バグ、不具合、改善のための提案 - ページ 41

 
Slava:
そして、取引が開始されると、別のシンボルであるEURUSDがロードされます。

いいえ、読み込まれません。ビジュアライザーで見てみると、すべてが正しく、取引中に1つのシンボルが表示されています。

 
fxsaber:

カスタムシンボルでは、すべての通貨がアカウント通貨と同じになります。すなわち、「by pips」とほぼ同様のモードであること、マージン計算のために他のシンボルを接続する必要がないこと、などです。

手数料が発生するサーバー(ForexTimeFXTM-Demo01で 再現、EUR、Hedge)では、最初の取引 後にリアルティクによるモードで標準とは別のシンボルが接続されています。そして、すべてが、もちろん、必要以上に遅くカウントされるのです。


手数料のないMQ-Demoでは、すべてが正しく機能します(これは、誤って、手数料の正しさのテストがメインのデモサーバーで実行されていないためです)。


この問題は再現されているのでしょうか?

このバグのため、コミッションが必要な場合、最適化が極端に遅くなる。

 

このスライダーにポジション番号を表示することは可能でしょうか?

スライダーをクリックし、キーボードのLEFT/RIGHTキーで速度を変えています。ペンタックスピードが必要な場合もあります。スライダーが今どこにあるのか、目視で正確に確認することはできません。また、最終速度の選択も非常に簡単です。

選択すると、ビューアーがフリーズします。そして、その結果をすべて捨て去ることができる。画面のようなデジタルスピードエイドがあればいいと思います。


ZSトレードを しなければ、ビジュアライザーの最高速度はハングアップしないことがわかりました。ほとんど死んだようなホバリングは、取引操作によるものであることが判明。

 

MT5 Testerが、これまで使われていた競合テスターと異なるバックテスト結果を示すことを理解できない人がいます。

以下は、その再現です。


MQ-Demo、EUR、Hedge in the testerにこのEAを置き、DLLを有効にします(ブラウザで自動的にHTMLレポートを開くために必要です)。

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define  VIRTUAL_TESTER // Запуск в виртуальном торговом окружении
#define  VIRTUAL_LIMITS_TP_SLIPPAGE // Лимитники и TP исполняются по первой цене акцепта - положительные проскальзывания
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/ru/code/22577

#define  REPORT_TESTER             // В тестере будут автоматически записываться отчеты
//#define REPORT_TESTER_INPUTS      // В отчете одиночного прохода будут видны входные параметры советника - требует разрешения DLL.
#define  REPORT_BROWSER            // Создание отчета с запуском браузера - требует разрешения DLL.
#include <Report.mqh> // https://www.mql5.com/ru/code/18801

int OnInit()
{
  // Если стоп/фриз-уровень не нулевой - выходим.
  return(!MQLInfoInteger(MQL_TESTER) ||
         SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL) ||
         SymbolInfoInteger(_Symbol, SYMBOL_TRADE_FREEZE_LEVEL));
}

void OnTick()
{
  static bool FirstRun = true;
  
  if (FirstRun)
  {
    MqlTick Tick;
    
    if (SymbolInfoTick(_Symbol, Tick) && Tick.bid && Tick.ask/* && Tick.last*/)
    {
      // Сформировали комментарий для ордера: время и цена текущего тика.
      const string comment = TimeToString(Tick.time, TIME_SECONDS) + "." + IntegerToString(Tick.time_msc % 1000, 3, '0') + " " + 
                             DoubleToString(Tick.bid, _Digits) + "/" + DoubleToString(Tick.ask, _Digits);
                             
      OrderSend(_Symbol, OP_BUYLIMIT, 1, Tick.ask, 0, 0, 0, comment); // Выставляем BuyLimit по текущей цене

      FirstRun = false;
    }  
  }    
  else if (!OrdersTotal()) // Если нет открытых ордеров - выходим.
    TesterStop();
  
  if (OrderSelect(0, SELECT_BY_POS) && (OrderType() <= OP_SELL)) // Выставляем TP позиции по текущей цене
    OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), OrderClosePrice(), 0);  
}


ストラテジーテスターの設定タブで、CTRL+Vを押すと、これらの行が表示されます。

[Tester]
Symbol=EURUSD
Period=M1
Optimization=0
Model=4
FromDate=2019.12.13
ToDate=2019.12.14
ForwardMode=0
Deposit=100000
Currency=EUR
ProfitInPips=1
Leverage=100
ExecutionMode=0
OptimizationCriterion=6
Visual=0
[TesterInputs]
VirtualTester=false
ReverseDeals=false
Report=true


走る。ブラウザがレポートをポップアップ表示します。

そして、VirtualTester=trueに 設定して再度実行し、ブラウザにもう一回レポートを取得します。


1回目は内蔵のMT5ストラテジーテスターで、2回目はサードパーティーのテスターで取引しました。


レポートを比較してみよう。1枚の写真にまとめてみました(上が標準のMT5-Tester、下がサードパーティ製のもの)。



結果が大きく異なることがよくわかります。開店と閉店は時間や価格によって一致しない。一般に、どこに間違いがあるかは、誰でも自分で判断できる。


SZZ ワークアラウンドが出てきましたね

 
fxsaber:

結果がかなり違うことがよくわかると思います。開店・閉店時間や価格が一致しない。結局のところ、どこがエラーなのか、みんな自分で決めればいいんです。

MT5が2.6秒後にしか指値を実行しなかったのはなぜですか?設定後、すぐに反対側へ価格が動いたか?それともダニがいなかったのか?

 
Andrey Khatimlianskii:

MT5が2.6秒後にしか指値を実行しなかったのはなぜですか?設定後、すぐに反対側に価格が動いたのでしょうか?それとも、ダニがいなかったのでしょうか?

次にリミットを満たす刻みは、その時間以降だった。もちろん、Testerでは、現在の 価格で指値を設定し、約定させないことも可能です。例えば、極限値で制限を設けることができます。

 
fxsaber:

次にリミッターを満足させる刻みは、そんな時間の後だった。もちろん、Testerでは、現在の 価格で指値を設定し、約定させないことも可能です。例えば、極限値でリミットを設定することが可能です。

FX、Exchange、Rannなど、何を言っているのか特定できていますか?

FXには指値注文はありませんし、ありえません。

 
Sergey Chalyshev:

FX、証券取引所、RANNなど、何を言っているのか特定していますか?

テスターの話をしているのです。

 
fxsaber:

テスターについてです。

テスターは、為替口座とFX口座で異なる動作をします。
 
Sergey Chalyshev:
テスターは、株式とFXの口座で異なる動作をします。

どのキャラクターでも再生できるような説明書を用意しています。何か質問があれば、実行してみてください。