Testeur de stratégie MetaTrader 5 : bugs, anomalies, suggestions d'amélioration - page 57

 

Les touches de raccourci du contrôle de la vitesse ne fonctionnent pas dans la visionneuse.



ZS Ça marche. Apparemment, c'est une sorte de bug délicat.

 
Après avoir testé le conseiller expert sur des ticks réels avec différents courtiers sur MT5 avec la qualité de modélisation de 99-100% avec les mêmes paramètres d'entrée, j'ai obtenu des résultats absolument différents : des profits cosmiques aux pertes. Avant cela, j'ai délibérément laissé MT4 parce qu'il est plus difficile d'y obtenir la même qualité de modélisation. Quel a été le résultat ? Comment le conseiller expert se comporterait-il en situation réelle ? Peut-être que quelqu'un me donnera un bon tuyau ?
 
ganri:
Après avoir testé le conseiller expert sur des ticks réels chez différents courtiers utilisant MT5 avec une qualité de modélisation de 99-100% avec les mêmes paramètres d'entrée, j'ai obtenu des résultats absolument différents : d'un profit cosmique à une perte. Avant cela, j'ai délibérément laissé MT4 parce qu'il est plus difficile d'y obtenir la même qualité de modélisation. Quel a été le résultat ? Comment le conseiller expert se comporterait-il en situation réelle ? Peut-être que quelqu'un me donnera un bon tuyau?

Le testeur+conseiller est une fonction mathématique qui attribue un nombre (profit) à chaque vecteur (série de nombres - citations).

Par conséquent, (en général) des vecteurs différents signifient des bénéfices différents. Et ces bénéfices ne doivent obéir à aucune règle (par exemple, être positifs).


Des courtiers différents signifient des vecteurs (cotations) différents. Peu importe qu'il s'agisse de tics, de barres ou d'autres éléments. Ce qui compte, c'est que les vecteurs sont différents.

 
fxsaber:

Le testeur+conseiller est une fonction mathématique qui attribue un nombre (profit) à chaque vecteur (série de nombres - citations).

Par conséquent, (en général) des vecteurs différents signifient des bénéfices différents. Et ces bénéfices ne doivent obéir à aucune règle (par exemple, être positifs).


Des courtiers différents signifient des vecteurs (cotations) différents. Peu importe qu'il s'agisse de tics, de barres ou d'autres éléments. L'essentiel est que les vecteurs sont différents.

D'après ce que je comprends, dans cette situation, nous devrions choisir le courtier qui a obtenu les meilleurs résultats en testant l'EA et travailler avec lui. Merci.

 

Dans ME, il est logique de séparer ces paramètres de débogage.

Par exemple, vous devez déboguer dans le Terminal sur EURUSD, et dans le Testeur sur EURUSD_Custom. Il est maintenant impossible de le configurer de cette façon.

Peut-être serait-il judicieux de créer pour le testeur un champ de texte de paramètres dans lequel nous pourrions entrer ces paramètres.

[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

Nous disposerons alors d'une flexibilité totale des paramètres. L'interface graphique n'est pas surchargée.

Chaîne de recherche: Uluchshenie 001.

 
Un seul agent est activé. Sa fenêtre de visualisation, une fois réalisée, n'est pas fermée. Dans le Testeur, l'Optimisation est sélectionnée et démarrée.
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

Le bouton rouge Stop reste allumé même si vous fermez la visionneuse. Rien ne se passe, vous devez appuyer sur Stop à la main. Après quoi, il s'éteint.

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

Et il crée même un fichier opt-file avec zéro passe.


Il faut probablement corriger le comportement ici.

Chaîne de recherche: Uluchshenie 002.
 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Testeur de stratégie MetaTrader 5 : bugs, anomalies, suggestions d'amélioration

fxsaber, 2020.02.11 01:58

On a longtemps cherché la cause du comportement étrange du testeur sur les tics réels. Je l'ai trouvé.
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();
}

Le temps du serveur avance et revient. Cela se produit sur le serveur de commerce réel, mais j'ai réussi à créer une lecture sur un symbole personnalisé.


Exécuter

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');                       // Удалили несколько баров.
  }
}


Un symbole avec un historique de ticks sera créé, mais avec plusieurs barres supprimées. Ensuite, nous commençons à déboguer l'EA ci-dessus dans ce mode.

[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


Il s'arrête.

Nous pouvons voir que le temps a fait une deuxième boucle.

Nom de recherche: Oshibka 002.

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Testeur de stratégie MetaTrader 5 : bugs, anomalies, suggestions d'amélioration

fxsaber, 2020.02.01 13:43

Même cet EA est plus de deux fois plus lent que Virtual en mode pips.

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);
}

Pourquoi cela se produit-il ? L'ensemble du Conseiller Expert est sur le premier tick en fixant BuyLimit. Rien d'autre !

Chaîne de recherche: Uluchshenie 003.
 
Cool !
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
 

Il n'est pas possible de définir la taille du tick à une valeur inférieure ou égale à un.

Si vous prescrivez puis entrez à nouveau, la valeur est de zéro. Pour les valeurs supérieures à un, tout va bien.

Chaîne de recherche: Uluchshenie 004.

Raison: