Apprendre et écrire ensemble en MQL5 - page 21

 

потому что вы берете каждый раз новое время тика, и оно конечно не равно предыдущему.

Dans la dernière fonction, vous avez pris l'heure de début de la barre. Donc, ici aussi, prenez l'heure de la barre et non l'heure du tic-tac.

Expliquez à quelqu'un qui ne comprend pas quel paramètre du code il faut changer pour lequel.

Comment décrire l'heure de la barre et non celle du tic-tac ?

 
Khomtchenko:

Expliquez à quelqu'un qui ne comprend pas quel paramètre du code il faut changer en quel paramètre.

Comment décrire l'heure de la barre plutôt que l'heure du tic-tac ?

Par exemple, https://www.mql5.com/ru/docs/series/copytime
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTime
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTime
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyTime - Документация по MQL5
 
Khomtchenko:

Expliquez à quelqu'un qui ne comprend pas quel paramètre du code il faut changer en quel paramètre.

Comment décrire le temps d'une barre et non d'un tic ?

Voici une description populaire du gestionnaire d'événement "nouvelle barre".

En général, ne soyez pas paresseux et regardez parfois les articles et la base de code avant de poser une question.

 

Вот тут все популярно описано Обработчик события "новый бар"

En général, ne soyez pas paresseux et consultez les articles et les bases de code avant de poser une question.

Oui, j'ai regardé là-bas. Ils ont commencé pour la santé et se sont retrouvés avec un tas de fichiers qui font quelque chose de spécifique, mais j'ai juste besoin d'une fonction et c'est tout. Ils ne pouvaient pas me donner le code du produit final. Ils ont fait un désordre...
 

Dans mql4, on pouvait savoir en cinq lignes si la barre était nouvelle ou non. Et maintenant, tout un tas de fichiers ont été écrits, on ne sait pas où les mettre, ce qu'il faut écrire dans le programme...

En bref, s'il y a des experts, alors donnez-moi un exemple de code, afin que je ne souffre pas, et je peux envoyer moi-même n'importe qui à la bibliothèque, électronique ou réelle.

Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 
Khomtchenko:
Je n'en doute pas, mais je demande juste pour vérifier - est-ce que quelqu'un a créé une seule et même EA dans mql4 et mql5 et a comparé les résultats des tests? Il devrait être parfaitement similaire si le code est correctement transformé, n'est-ce pas ? Ou ai-je tort ?

Si les tests sont mis en parallèle ici et que dans mql5 la logique est placée dans onTick, alors ce sera similaire.

La seule différence réside peut-être dans les écarts. En 5, l'histoire contient les écarts. Dans la version 4, l'écart du testeur est égal à l'écart actuel dans le terminal.

Si l'on teste "chaque tick", il semble que ce sera encore plus petit, car les algorithmes de génération de tick sont différents dans les versions.

 
Khomtchenko:

Dans mql4, on pouvait savoir en cinq lignes si la barre était nouvelle ou non. Et maintenant, tout un tas de fichiers ont été écrits, je ne sais pas où les mettre, ce qu'il faut écrire dans le programme...

En bref, s'il y a des experts, alors donnez-moi un exemple de code, afin que je ne souffre pas, et je peux envoyer moi-même n'importe qui à la bibliothèque, électronique ou réelle.

Ici, déclarez la variable lastbar comme statique ou globale, le tableau iTime comme global.

bool NewBar()
  {

   if(CopyTime(_Symbol,_Period,0,1,iTime)<1)return(false);

   if(lastbar!=iTime[0])
     {
      lastbar=iTime[0]];
      return(true);
     }
   else
     {
      return(false);
     }
  }
 

Il y a un exemple sur la page avec la fonction isNewBar

https://www.mql5.com/ru/forum/2804/38752#comment_38752

Что меняет режим тестера "только цены открытия"?
Что меняет режим тестера "только цены открытия"?
  • www.mql5.com
Собственно, для советника работающего по onTick, в режиме "Только цены открытия" при тестировании все вычисления индикаторов и вызов функции OnTick() в экспертах происходит только один раз на бар.
 

1. Je n'ai rien demandé sur les résultats des tests des mêmes stratégies sur mql4 et mql5.

J'avais l'habitude d'entrer sur le marché sur une nouvelle barre si les conditions répondent aux exigences d'entrée et de fermer la position si les indicateurs montrent le signal opposé et d'entrer à nouveau sur une nouvelle barre.

Sur mql4 j'ai utilisé cette procédure pour entrer sur une nouvelle barre :

void Fun_New_Bar() // Ф-ия обнаружения ..

{ // ... nouvelle barre

static datetime New_Time=0 ; // Heure de la barre actuelle

New_Bar=false ; // pas de nouvelle barre

if(New_Time!=Time[0]) // Comparez les temps

{

New_Time=Time[0] ; // L'heure actuelle est la suivante

New_Bar=true ; // La nouvelle barre est capturée

}

}

Voici à quoi ressemble le résultat du test du robot sur mql4 en utilisant ma stratégie :

Résultats des tests de l'EA mql4

Merci d'avoir envoyé les procédures pour déterminer la nouvelle barre. Ils travaillent. J'ai fait un script qui écrit Alert sur une nouvelle barre et je l'ai testé sur M1 donc je n'ai pas attendu trop longtemps.

Mais la même stratégie donne des résultats complètement différents (et les mêmes) en utilisant les deux procédures dans mql5 Expert Advisor :

Résultats des tests du conseiller mql5

Je n'ai pas déchiré ma chemise et tapé du pied pour rien. Je veux répéter les résultats, mais ils ne coïncident pas.

Voici à quoi ressemble approximativement la fonction onStart dans mql4

int start()

{

GetIns() ;

Fun_New_Bar() ;

si (New_Bar==false) return(0) ;

si (Total()>0)

{

CloseSellEnd() ;

CloseBuyEnd() ;

}

si (Total()<1)

{

OpenBuy() ;

OpenSell() ;

}

retour(0) ;

}

La même chose dans mlq5 :

void OnTick()

{

GetIns() ;

si (NewBar())

{

si (Total()>0) TryToClose() ;

si (Total()<1)

{

OpenBuy(Lots,10, "EUR/USD (Buy)",102406) ;

OpenSell(Lots,10, "EUR/USD (Sell)",102406) ;

}

}

}

GetIns pour traiter les paramètres des indicateurs, et Total() - donne le nombre de positions avec la magie requise pour mql4 ou avec le symbole requis pour mql5.

Aide.

 

Je pense avoir trouvé la raison de cette divergence. Tu ne vas pas le croire. Les MT4 et MT5 ont un historique de cotation différent. Il semble que la stratégie soit légèrement différente et qu'elle soit testée avec une énorme différence !!!!.

Voici un tracé sur différents terminaux :

Si vous regardez de plus près, il y a une différence. Un petit ? Et quelle est la différence entre les résultats des tests de la stratégie, également faible ???

Je vais contacter les développeurs ! Quelle bêta ! !!

Raison: