OHLC 1 minute vs chaque tick - résultats opposés

 

J'obtiens des résultats complètement opposés lorsque je teste sur chaque tick ou 1min OHLC. L'EA et les paramètres d'entrée sont exactement les mêmes mais dans le cas de 1min ohlc j'obtiens 50000 profit alors que dans chaque tick j'obtiens -7000 pertes.

Cela se produit sur de nombreuses paires testées sur une période de 2 ans 0811-0813.

quelqu'un a eu le même problème ? Je ne comprends pas quel est le problème et que dois-je faire pour trader en argent réel.

les deux graphiques ci-dessous

1minute OHLC

1minute ohlc

chaque tick

chaque tic-tac

 

Il est difficile de répondre à cette question sans savoir comment votre EA décide d'acheter ou de vendre.

Nous voyons sur le marché beaucoup de situations où une barre a une très grande taille (par exemple sur des nouvelles importantes ).

Le testeur génère donc jusqu'à 11 ticks pour une telle barre. En fonction de votre logique, le comportement est très différent (dans le test uniquement).

Si vous utilisez votre EA avec de l'argent réel, je suis sûr que ce sera bien pire, car de telles barres peuvent avoir jusqu'à 200 ticks en une minute.

Je suppose que votre logique agit sur la barre actuelle, vous devriez essayer votre logique avec les valeurs de la barre précédente.

Bonne continuation

Uwe

 
ugo58:

Il est difficile de répondre à cette question sans savoir comment votre EA décide d'acheter ou de vendre.

Nous voyons sur le marché beaucoup de situations où une barre a une très grande taille (par exemple sur des nouvelles importantes).

Le testeur génère donc jusqu'à 11 ticks pour une telle barre. En fonction de votre logique, le comportement est très différent (dans le test uniquement).

Si vous utilisez votre EA avec de l'argent réel, je suis sûr que ce sera bien pire, car de telles barres peuvent avoir jusqu'à 200 ticks en une minute.

Je suppose que votre logique agit sur la barre actuelle, vous devriez essayer votre logique avec les valeurs de la barre précédente.

Bonne continuation

Uwe

Je vous envoie maintenant une astuce pour ne faire des "ticks" que sur une seule barre. Il suffit de mettre cette logique au début du tick. Si la barre n'est pas nouvelle, elle s'arrête...

Dans quelles situations pensez-vous que cette astuce puisse être efficace ?

   //--- Let's first check if a new bar has come!         
   if(CopyTime(_Symbol, _Period, 0, 1, m_currentBarTime) > 0) 
     {
      if(m_previousBarTime != m_currentBarTime[0])
        {
         m_isNewBar = true;
         m_previousBarTime = m_currentBarTime[0];
        }
     }
   else
     {
      Alert("Error copying historical data, error: ", GetLastError());
      return;
     }
     
   if(!m_isNewBar) return;

Que recommanderiez-vous également pour résoudre ces ticks supplémentaires ? Y a-t-il un article ou autre qui explique cela ? Merci.

 
laplacianlab:

J'envoie maintenant une astuce pour ne "ticker" que dans une seule barre. Il suffit de mettre cette logique au début du tick. Si la barre n'est pas nouvelle, elle s'arrête...

Dans quelles situations pensez-vous que cette astuce peut fonctionner correctement ?

Que recommanderiez-vous également pour résoudre ces ticks supplémentaires? Y a-t-il un article ou quelque chose qui explique cela ? Merci.

Que voulez-vous dire par "pour résoudre ces tics supplémentaires" ?
 
ugo58:

Il est difficile de répondre à cette question sans savoir comment votre EA décide d'acheter ou de vendre.

Nous voyons sur le marché beaucoup de situations où une barre a une très grande taille (par exemple sur des nouvelles importantes).

Le testeur génère donc jusqu'à 11 ticks pour une telle barre. En fonction de votre logique, le comportement est très différent (dans le test uniquement).

Si vous utilisez votre EA avec de l'argent réel, je suis sûr que ce sera bien pire, car de telles barres peuvent avoir jusqu'à 200 ticks en une minute.

Je suppose que votre logique agit sur la barre actuelle, vous devriez essayer votre logique avec les valeurs de la barre précédente.

Bonne continuation

Uwe

Bonjour,

Que voulez-vous dire par utiliser les valeurs de la barre précédente ? utiliser maVal[1] (où maVal contient les valeurs de la moyenne mobile et le tableau est défini comme série) au lieu de maVal[0] ?

ou vérifier si la condition a été vérifiée pendant la dernière barre et donc entrer à l'ouverture de cette barre ?

ci-dessous une partie du code de mon EA très simple

 triggerLong=maVal[1]-diff;
 triggerShort=maVal[1]+diff; 

......
.......

Buy_Condition_1=(now_ask<triggerLong);
Sell_Condition_1=(now_bid>triggerShort);

Exit_long_Condition=(closeAtCross? now_ask>=maVal[1]:false) || Sell_Condition_1;
Exit_short_Condition=(closeAtCross? now_bid<=maVal[1]:false) || Buy_Condition_1;

que j'utilise maVal[1] ou maVal[0] la situation ne change pas tant que ça, l'ohcl est toujours profitable alors que chaque tick ne l'est pas.

merci

 
ugo58:

Il est difficile de répondre à cette question sans savoir comment votre EA décide d'acheter ou de vendre.

Nous voyons sur le marché beaucoup de situations où une barre a une très grande taille (par exemple sur des nouvelles importantes).

Le testeur génère donc jusqu'à 11 ticks pour une telle barre. En fonction de votre logique, le comportement est très différent (dans le test uniquement).

Si vous utilisez votre EA avec de l'argent réel, je suis sûr que ce sera bien pire, car de telles barres peuvent avoir jusqu'à 200 ticks en une minute.

Je suppose que votre logique agit sur la barre actuelle, vous devriez essayer votre logique avec les valeurs de la barre précédente.

Bonne continuation

Uwe

Ce n'est pas vrai, le testeur peut générer bien plus que 11 ticks. Voir ce post.
 
angevoyageur:
Que voulez-vous dire par "pour résoudre ces ticks supplémentaires" ?

Je suis tout à fait d'accord avec ugo58. Les grandes barres peuvent déclencher l'événement OnTick de nombreuses fois, alors que les petites barres le déclencheront beaucoup moins souvent.

Cela peut avoir un impact sur votre stratégie de trading automatisé, donc nous, les développeurs, devons chercher des solutions qui atténuent le fait que votre événement OnTick peut être exécuté plusieurs fois par barre.

Je pense que ce que j'ai envoyé précédemment n'est qu'une solution. ugo50 a proposé une autre solution : exécuter votre logique OnTick dans la barre passée la plus récente. Quoi qu'il en soit, si vous voulez exécuter votre logique OnTick sur la barre actuelle, vous pouvez peut-être utiliser quelque chose de similaire à ce que j'ai envoyé précédemment.

Nous essayons d'implémenter quelque chose comme un événement OnBar.

Que pensez-vous de cela ?

 
michelino:

Bonjour,

Que voulez-vous dire par utiliser les valeurs de la barre précédente ? utiliser maVal[1] (où maVal contient les valeurs de la moyenne mobile et le tableau est défini comme série) au lieu de maVal[0] ?

ou vérifier si la condition a été vérifiée pendant la dernière barre et donc entrer à l'ouverture de cette barre ?

ci-dessous une partie du code de mon EA très simple

que j'utilise maVal[1] ou maVal[0] la situation ne change pas tant que ça, l'ohcl est toujours profitable alors que chaque tick ne l'est pas.

merci

Il y a évidemment une grande différence si votre code utilise maVal[1] ou maVal[0], ou en général si vous travaillez sur une barre fermée seulement ou sur une barre ouverte ou à l'intérieur d'une barre.

Dans le dernier cas, vous devez utiliser le mode Every tick, tous les autres modes ne sont pas appropriés.

 
angevoyageur:
Ce n'est pas vrai, le testeur peut générer beaucoup plus que 11 ticks. Voir ce post.

Merci. Oh, bien. Une des choses que j'ai dû réapprendre ;)


Comme je l'ai dit, cela dépend de votre logique.

Il y a plusieurs façons de résoudre ces problèmes, maVal[1]est l'une des solutions les plus faciles car les moyennes mobiles ne changent pas si vite sur chaque barre (selon la longueur de la période et la méthode de lissage).

Cela pourrait être différent si par exemple vous dépendez d'un haut et d'un bas d'une série de barres.

 
Merci de partager... Nice
 
Ce lien est peut-être aussi utile,https://www.mql5.com/en/articles/159
"New Bar" Event Handler
"New Bar" Event Handler
  • 2010.10.11
  • Konstantin Gruzdev
  • www.mql5.com
MQL5 programming language is capable of solving problems on a brand new level. Even those tasks, that already have such solutions, thanks to object oriented programming can rise to a higher level. In this article we take a specially simple example of checking new bar on a chart, that was transformed into rather powerful and versatile tool. What tool? Find out in this article.