Questions des débutants MQL5 MT5 MetaTrader 5 - page 970

 
Les amis. Nous avons travaillé ensemble pour écrire l'algorithme du conseiller expert que j'avais en tête,
et merci beaucoup. On peut dire que nous l'avons tous fait)
Cela fonctionne, les résultats sont conformes aux attentes et nous pouvons passer à autre chose.
---
Question sur les tests en mode OHLC M1.
Est-il réaliste de programmer le Conseiller Expert pour que les résultats du test sur OHLC M1 soient proches de ceux sur "tous les ticks" ?
J'ai cherché sur tout le forum, il y a des explications claires pourquoi le mode OHLC M1 avec la génération de 4 points de référence ne coïncide pas
avec les modes basés sur les tics.

Mais je n'ai pas trouvé de recommandations, exemples comment programmer cette condition pour être similaire à OHLC M1, et est-ce possible du tout ?

J'aime le mode OHLC M1 uniquement en raison de la rapidité des calculs.
Particularités de l'EE. (Si c'est important)
Il définit des ordres stop avec des SL et TP fixes, il modifie souvent les ordres à de nouveaux niveaux de prix, en attendant le déclenchement.
Il n'y a pas d'indicateurs, seulement des compteurs de prix.
S'il n'est pas possible de simuler le mode "OHLC M1", peut-être serait-il préférable d'utiliser le mode "Par les prix d'ouverture" ?
En fin de compte, j'aimerais comprendre quel mode il est raisonnable d'utiliser, afin que les calculs soient rapides et...
J'aimerais comprendre ce que je devrais utiliser pour faire des calculs rapides et pour minimiser les divergences entre les modes tout-techniques.

Jusqu'à présent, j'ai obtenu la divergence suivante sur le même type de paramètres.

"OHLC M1 ; 8 ans ; 1681 transactions. (initialement, j'ai utilisé cette méthode)

OHLC M1

"Cours d'ouverture" ; 8 ans ; 1655 transactions.

Prix d'ouverture uniquement

"Tous les tics" 8 ans ; 1676 transactions.

tous les tics

L'algorithme semble être robuste, et je pourrais même être en mesure d'améliorer les résultats de chaque méthode séparément,

mais elle perdrait en polyvalence et semblerait redondante.




 
vladzeit:


En bref, à titre d'exemple, si vous avez des positions d'achat TP fixées à 1,16000, alors "tous les ticks" se fermeront à peu près à ce prix. L'OHLC fermera à ce prix au-dessus de 1.16000 et cela peut être une grande différence, donc toujours l'OHLC montrera de meilleurs résultats. Même histoire avec "Aux prix d'ouverture".

 
Nauris Zukas:

En bref, à titre d'exemple, si les positions d'achat du TP sont fixées à 1,16000, "tous les ticks" se clôtureront approximativement à ce prix. OHLC fermera au prix qui était au-dessus de 1.16000 ceci et peut être une différence assez grande, donc toujours OHLC montrera de meilleurs résultats. Même histoire avec "Aux prix d'ouverture".

Nauris, merci. Je comprends (je peux deviner) pourquoi les résultats diffèrent d'une méthode à l'autre. Mais ce que je veux comprendre, c'est ceci :

Si le testeur a simulé la méthode "OHLC M1", alors comment répéter la même méthode dans l'Expert Advisor de manière programmatique.

Le testeur l'a reproduit en quelque sorte...

 
vladzeit:

Nauris, merci. Je comprends (je peux deviner) pourquoi les résultats diffèrent d'une méthode à l'autre. Mais ce que je veux comprendre, c'est ceci :

Si le testeur a simulé la méthode "OHLC M1", alors comment répéter la même méthode dans l'Expert Advisor de manière programmatique.

Le testeur l'a en quelque sorte reproduit...

Croyez-moi, vous n'avez pas besoin d'une telle précision, optimisez le résultat et exécutez-le sur tous les ticks, la meilleure option ...

Si vous n'êtes pas à 3-4 pips, cela ne ferait pas une grande différence si elle clôturait avec deux pips de plus ou de moins...

Rejouer quelque chose dans le conseiller expert ne fera pas avancer votre temps, au contraire, cela le ralentira...

 
xxz:

Croyez-moi, vous n'avez pas besoin d'une telle précision, optimisez le résultat et exécutez-le sur tous les ticks, la meilleure option ...

Si vous n'êtes pas à 3-4 pips, alors il n'y a pas de grande différence si vous avez fermé avec deux pips de plus ou de moins...

Rejouer quelque chose dans le conseiller expert n'accélère pas le temps, au contraire, cela le ralentit...

Merci. Si personne ne poursuit la mise en œuvre de la méthode"OHLC M1", alors je serai condamné à utiliser vos conseils)))).

 
vladzeit:

Merci. Si personne ne poursuit la méthode de"OHLC M1", je serai condamné à utiliser vos conseils)))).

Si vous n'avez pas d'idée particulièrement brillante, la différence réside dans la direction des ticks, dans le trading réel, sur les ticks, la bougie peut s'ouvrir, descendre, monter, fermer, et si la bougie est grande, vous pouvez acheter en bas et prendre un bénéfice à la fermeture, dans la simulation, la bougie forme une ouverture, un haut, un bas, une fermeture, disons que l'ouverture et le haut coïncident avec le bas et la fermeture aussi, alors sur une telle bougie, vous pouvez acheter mais pas prendre un bénéfice, et si le marché a baissé, alors ici vous avez un ordre de perte suspendue ....

... d'où la divergence...

 
vladzeit:

Merci. Si personne ne continue sur la façon de mettre en œuvre la méthode"OHLC M1", je serai condamné à suivre vos conseils)))).

La méthode parle d'elle-même. Utilisez uniquement les prix OHLC de toutes les barres minutes incluses dans la barre actuelle dans votre EA.
 
vladzeit:

Merci. Si personne ne continue sur la façon de mettre en œuvre la méthode"OHLC M1", je serai condamné à suivre vos conseils)))).

Ouverture/fermeture dans Expert Advisor non pas par niveaux de prix mais par Open. Il y a un signal d'ouverture/fermeture, attendez la prochaine bougie 1M et ouvrez/fermez.

 
Artyom Trishkin:
La méthode parle d'elle-même. Utilisez dans votre EA uniquement les prix OHLC de toutes les barres minutes incluses dans la barre actuelle.

Artyom, je l'ai essayé. Sur toutes les conditions, ouverture et modification des ordres, j'ai mis une condition "à la naissance d'une nouvelle barre" par la fonction booléenneisNewBar().

comme ça :

if (Buys==true )
   {
   int count_buy_stops=0;   int count_pos_buy=0;
   CalOrders_Buy(count_buy_stops);   CalPosition_Buy(count_pos_buy);
   if(count_buy_stops==0 && count_pos_buy==0) && isNewBar())
   {
   BuyStop();
   }
   }

La fonctionisNewBar() elle-mêmeà partir des exemples et des articles de code.base.

bool isNewBar()
  {
//--- в статической переменной будем помнить время открытия последнего бара
   static datetime last_time=0;
//--- текущее время
   datetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
   if(last_time==0)//--- если это первый вызов функции
   {
   last_time=lastbar_time;    //--- установим время и выйдем 
   return(false);
   }
   if(last_time!=lastbar_time)//--- если время отличается
   {
   last_time=lastbar_time;    //--- запомним время и вернем true
   return(true);
   }
//--- дошли до этого места - значит бар не новый, вернем false
   return(false);
  }

Il semble fonctionner et place les ordres et les modifie seulement à une nouvelle barre, mais pour une raison quelconque, il y a une divergence.

Il y a une divergence entre l'OHLC sur M1 que j'ai appliqué sansisNewBar() et "tous les ticks" avec la fonctionisNewBar().

Je m'attendais à ce qu'en appliquantisNewBar() sur "tous les ticks" j'obtienne le même résultat queOHLC sur les prix actuels.

Donc, je ne comprends pas si j'ai dû me tromper dans le code ou si je ne comprends pas correctement le modeOHLC et pense que c'est impossible.

Je ne sais pas où creuser.

Artyom, dites-m'en plus, si ce n'est pas difficile.

L'ordre peut être fixé et modifié sur une nouvelle barre, mais le SL et le TP (dans le testeur) fonctionneront de toute façon dans l'ancienne barre ?

 
J'ai essayé sans succès de convertir un lot fixe en lot en pourcentage. Quelqu'un peut-il me conseiller sur le code complet ?
Dossiers :
Experiment.mq5  38 kb