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

 

ビューアーでスピードコントロールのホットキーが機能しない。



ZS 効いてますね。どうやら、何かやっかいなバグがあるようです。

 
同じ入力パラメータで99-100%のモデリング品質で、MT5上の異なるブローカーでExpert Advisorを実際のティックでテストしたところ、宇宙規模の利益から損失まで、まったく異なる結果が得られました。それ以前は、MT4では同じモデリング品質を実現するのが難しいので、あえてMT4から離れたのです。では、その結果はどうだったのでしょうか。実際の取引では、Expert Advisorはどのように動作するのでしょうか? 誰かいい情報を教えてくれるかも?
 
ganri:
同じ入力パラメータで99-100%のモデリング品質でMT5を使用して、異なるブローカーでExpert Advisorを実際のティックでテストしたところ、全く異なる結果が得られました:宇宙規模の利益から損失まで。それ以前は、MT4では同じモデリング品質を実現するのが難しいので、あえてMT4から離れたのです。では、その結果はどうだったのでしょうか。実際の取引では、Expert Advisorはどのように動作するのでしょうか?誰かいい情報を教えてくれるかも

テスター+アドバイザーは、各ベクトル(数列-相場)に数値(利益)を割り当てる数学関数である。

そのため、(一般的に)ベクトルが違えば、利益も違ってきます。そして、これらの利益は、いかなるルール(例えば、ポジティブであること)にも従う必要はないのです。


ブローカーが違えば、ベクトル(相場)も違う。ティックでもバーでも、他のものでもかまいません。重要なのは、ベクトルが違うということです。

 
fxsaber:

テスター+アドバイザーは、各ベクトル(数列-相場)に数値(利益)を割り当てる数学関数である。

そのため、(一般的に)ベクトルが違えば、利益も違ってきます。そして、これらの利益は、いかなるルール(例えば、ポジティブであること)にも従う必要はないのである。


ブローカーが違えば、ベクトル(相場)も違う。ティックでもバーでも、他のものでもかまいません。要は、ベクトルが違うんです。

私の理解では、このような場合、EAのテスト結果が 最も良いブローカーを選んで作業すれば良いのだと思います。ありがとうございます。

 

MEでは、これらのデバッグ設定を分離するのが論理的です。

例えば、EURUSDではターミナルで、EURUSD_Customではテスターでデバッグします。今はそのように設定することは不可能です。

おそらく、テスターのために、そのような設定を入力できる設定のテキストフィールドを作成することは理にかなっていると思います。

[Tester]
Period=M1
Optimization=0
Model=0
FromDate=2019.07.22
ToDate=2019.07.24
ForwardMode=0
Deposit=10000
Currency=USD
ProfitInPips=0
Leverage=100
ExecutionMode=0
OptimizationCriterion=6
Visual=1

そうすれば、自由自在に設定ができるようになります。GUIに負荷がかからない。

検索文字列: Uluchshenie 001.

 
Agentは1つだけ有効です。一度作られたそのビジュアライゼーションウィンドウは閉じない。Testerでは、Optimisationが選択され、開始されます。
2020.02.15 11:23:01.818 Tester  complete optimization started
2020.02.15 11:23:01.855 Core 1  agent still started in visual mode

ビューワを閉じても、赤い停止ボタンは点灯したままです。何も起こらないので、手で停止を押す必要があります。その後、ギブアップする。

2020.02.15 11:25:52.278 Tester  optimization finished, total passes 0
2020.02.15 11:25:52.278 Statistics      optimization done in 2 minutes 51 seconds
2020.02.15 11:25:52.279 Tester  stopped by user

しかも、パスがゼロのopt-fileまで作ってしまうのです。


おそらく、ここの挙動を修正する必要があるのでしょう。

検索文字列: Uluchshenie 002.
 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

MetaTrader 5 Strategy Tester: バグ、不具合、改善のための提案

fxsaber, 2020.02.11 01:58

テスターが本物のティックでおかしな挙動をする原因を長い間探した。見つけた。
const bool Init = EventSetTimer(1);

void Func()
{
  static datetime PrevTime = 0;
  
  const datetime time = TimeTradeServer();
  
  if (time < PrevTime)
    DebugBreak(); // Срабатывает
  
  PrevTime = time;
}

void OnTick()
{
  Func();
}

void OnTimer()
{
  Func();
}

サーバーの時間は進み、そして戻ってくる。実トレードサーバーで発生するのですが、カスタムシンボルでなんとか再生ができるようになりました。


実行

sinput datetime inDateFrom = D'2020.01.01';

void OnStart()
{
  const string Name = "TEMP12345";                                                           // Имя кастомного символа
  const string SymbOrig = "EURUSD";                                                          // Имя оригинального символа

  MqlTick Ticks[];
  
  const int Size = CopyTicksRange(SymbOrig, Ticks, COPY_TICKS_ALL, (long)inDateFrom * 1000); // Считали EURUSD-тики.
    
  if ((Size > 0) && CustomSymbolCreate(Name, NULL, SymbOrig) && SymbolSelect(Name, true))    // Создали символ на основе EURUSD.
  {
    CustomTicksReplace(Name, 0, LONG_MAX, Ticks);                                            // Поместили в него историю EURUSD.        
    
    CustomRatesDelete(Name, D'2020.01.03 23:00', D'2020.01.04 00:00');                       // Удалили несколько баров.
  }
}


ティック履歴を 持つシンボルが作成されますが、いくつかのバーが削除されています。そして、このモードで上のEAのデバッグを開始します。

[Tester]
Symbol=TEMP12345
Period=M1
Optimization=0
Model=4
FromDate=2020.01.01
ToDate=2020.01.08
ForwardMode=0
Deposit=100000
Currency=USD
ProfitInPips=1
Leverage=100
ExecutionMode=0
OptimizationCriterion=6


止まってしまう。

時間が2回目のタイムループをしたことがわかる。

検索文字列:Oshibka 002.

 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

MetaTrader 5 Strategy Tester: バグ、不具合、改善のための提案

fxsaber, 2020.02.01 13:43

このEAでもpipsモードではVirtualの2倍以上遅いです。

input int inFakeRange = 0;
sinput int inOffset = 10000;

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

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnTick()
{
  static long Ticket = -1;
  
  if (Ticket == -1)
    Ticket = OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - inOffset * _Point, 0, 0, 0);
}

なぜ、このようなことが起こるのでしょうか?Expert Advisor全体は、BuyLimitを設定することで、最初のティックになります。他にはない!?

検索文字列: Uluchshenie 003.
 
カッコイイ!
2020.02.18 13:24:06.618 Core 1  pass 0 returned result 0 in 0:00:05.288 + history synchronization 0:00:03.098
 

ティックサイズを1以下に設定することはできません。

処方した後、再度入力すると値は0になります。1より大きい値では、すべて問題ありません。

検索文字列: Uluchshenie 004.

理由: