besoin d'aide pour le codage, s'il vous plaît - page 2

 

deVries, si vous arrêtiez de fulminer assez longtemps pour expliquer POURQUOI le code avec lequel j'ai commencé est si "mauvais", je pourrais comprendre ce que je peux faire pour le corriger. Relisez votre réponse, puis expliquez comment votre réponse pourrait aider quelqu'un.

Merci, RaptorUK, enfin une réponse que je peux utiliser.

Pour aider à expliquer, je veux seulement que cet EA fonctionne sur une paire, une transaction à la fois. Comme je l'ai dit plus tôt, "... et j'en ai placé un sur chacun des 5 graphiques de paires différentes, tous sur la même plateforme MT4...", ce qui donne 5 graphiques distincts ( ?) avec cet EA sur eux. À ce stade, je n'ai pas envie ou besoin de vérifier les nombres magiques, n'est-ce pas ?

Concernant le commentaire sur les barres, je vous remercie.

Concernant le slippage, les 4/5 courtiers, etc., à ce stade, cela n'a pas d'importance, n'est-ce pas ? Je l'utilise pour moi-même, avec le même courtier, etc.

 
et j'ai oublié d'ajouter que je ne cherche pas un raccourci, juste de l'aide pour surmonter un problème.
 
Désolé, je n'ai pas vu les autres réponses, alors je m'excuse pour le commentaire de "divagation" et je vous remercie pour l'aide réelle.

J'ai testé le système et il fonctionne bien, sans erreur ni avertissement. Alors pourquoi cela ne fonctionne-t-il pas sur un graphique en direct ? (Je n'ai pas encore mis en œuvre les suggestions ci-dessus).
 
unclebigpete:

1. À ce stade, je n'ai ni envie ni besoin de vérifier les chiffres magiques, n'est-ce pas ?

2. Concernant le slippage, les 4/5 courtiers, etc., à ce stade, cela n'a pas d'importance, n'est-ce pas ? Je l'utilise pour moi-même, avec le même courtier, etc.

1. Si vous n'avez jamais l'intention de placer une transaction manuelle sur l'une des mêmes paires... alors vous pouvez travailler sans Numéros Magiques... si vous oubliez et que vous placez une transaction manuelle sur l'une des paires sur lesquelles vous faites tourner cet EA, alors l'EA gèrera votre transaction manuelle également... si vous le codez correctement, ce ne sera pas un problème.

2. Cela n'a pas d'importance... tant que vous n'oubliez pas de régler les paramètres externes correctement... par exemple, le code que vous avez posté a un slippage de 3... sur un courtier à 5 chiffres, cela équivaut à un slippage de 0,3 pip... si vous le codez correctement, 3 signifiera toujours 3 pips sur un courtier à 4 ou 5 chiffres et vous aurez moins de possibilités d'erreurs. Ne pas le coder correctement est un raccourci qui vous fera probablement perdre du temps à long terme... .

 
unclebigpete:

Et je l'ai testé, et il fonctionne bien, pas d'erreurs, pas d'avertissements. Alors pourquoi cela ne fonctionne-t-il pas sur un graphique en direct ? (Je n'ai pas encore mis en œuvre les suggestions ci-dessus).
Vous l'avez testé où ? dans le testeur de stratégie? où avez-vous cherché les erreurs ?
 
Oui, j'ai testé dans le testeur de stratégie, et je l'ai compilé, en obtenant laréponse "pas d'erreurs, pas d'avertissements".
 

Al right here's mine :

Soyez discipliné avec le codage, le premier paramètre de iCustom est <string Symbol>, utilisez Symbol() ou NULL au lieu de zéro.

MetaEditor > Fenêtre de navigation (Ctrl +D) > onglet dictionnaire > Indicateur technique > iCustom

int QQE_4hr    = iCustom( Symbol(), 240, "c_QQEA",  SF,     RSI_Period,    DART_Factor,     0, 1 );
int QQE_4hr_2  = iCustom( Symbol(), 240, "c_QQEA",  SF,     RSI_Period,    DART_Factor,     0, 2 );

Vous utilisez shift 1 et 2 dans un graphique de 4 heures, cela va être très long.

La sélection d'ordre que j'ai mentionnée précédemment, écrivez-la comme ceci.

MetaEditor > Fenêtre de navigation (Ctrl +D) > onglet dictionnaire > Fonctions de trading > OrderSelect()

for(int i=0; i<Total; i++)
     {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
        {

J'écrirai plus sur cette fonction OrderSelect().

Il y a 2 fermetures d'ordre, écrivez-les comme ceci, toutes les deux

MetaEditor > Fenêtre de navigation (Ctrl +D) > onglet dictionnaire > Fonctions de trading > OrderClose()

OrderClose(OrderTicket(),
           OrderLots(),
           OrderClosePrice(),//Bid,
           Slippage,
           MediumSeaGreen);

Et j'ai une approche différente de celle de RaptorUK, qui donne le même résultat, mais il y en a deux, et vous devez les changer tous les deux.

if (Ticket > 0)
  {
  if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES))
     {
      Print("SELL order opened : ",
             OrderOpenPrice());
             if(SignalMail)
                SendMail("[Signal Alert]",
                         "["
                         +Symbol()
                         +"] "
                         +DoubleToStr(Bid,Digits)
                         +" Open Sell");
       } // if(Order... // ==>> moved from below 
     } // if(Ticket...   
     else
     {
     Print("Error opening SELL order : ",
           GetLastError());
     } // else
   } ==>> move this parenthesis up there

Amusez-vous bien

:)

 
unclebigpete:
Oui, je l'ai testé dans le testeur de stratégie, et je l'ai compilé, en obtenant laréponse "pas d'erreurs, pas d'avertissements".
OK, donc pas d'erreurs lors de la compilation... qu'en est-il des erreurs lors de l'exécution dans le testeur de stratégie? Exécutez-la à nouveau et regardez dans l'onglet Journal. . .
 

Je viens de l'utiliser sur audnzd du 17/05 au 22/05, et il a ouvert 3 transactions, 2 achats qui ont été arrêtés, et une vente qui a été fermée à la fin du test.

Voici les informations du journal, la ligne supérieure en premier.

2012.05.22 21:38:51 QQE-4hr_15min- testing-2205 : chargement réussi.

2012.05.22 21:38:53 QQE-4hr_15min- testing-2205 entrées : MagicNumber=0 ; Lots=1 ; Slippage=3 ; StopLoss=300 ; TakeProfit=1000 ; TrailingStop=300 ; Nbr_Period=10 ; Multiplier=3 ;

2012.05.22 21:38:53 2012.05.17 00:00 c_QQEA AUDNZD,H4 : chargement réussi

2012.05.22 21:38:53 2012.05.17 00:00 c_QQEA AUDNZD,M15 : chargé correctement

2012.05.22 21:39:13 2012.05.17 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4 : open #1 buy 1.00 AUDNZD at 1.29960 sl : 1.29660 ok

2012.05.22 21:39:13 2012.05.17 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4 : ordre BUY ouvert : 1.2996

2012.05.22 21:39:13 2012.05.17 18:32 Tester : stop loss #1 à 1.29660 (1.29660 / 1.29698)

2012.05.22 21:39:15 2012.05.18 20:00 QQE-4hr_15min- testing-2205 AUDNZD,H4 : open #2 buy 1.00 AUDNZD at 1.30386 sl : 1.30086 ok

2012.05.22 21:39:15 2012.05.18 20:00 QQE-4hr_15min- testing-2205 AUDNZD,H4 : ordre BUY ouvert : 1.3039

2012.05.22 21:39:15 2012.05.18 23:09 Tester : stop loss #2 à 1.30086 (1.30083 / 1.30121)

2012.05.22 21:39:16 2012.05.21 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4 : open #3 sell 1.00 AUDNZD at 1.29739 sl : 1.30039 ok

2012.05.22 21:39:16 2012.05.21 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4 : ordre de VENTE ouvert : 1.2974

2012.05.22 21:39:17 2012.05.21 23:59 Tester : l'ordre n°3 est fermé

2012.05.22 21:39:17 2012.05.21 23:59 c_QQEA AUDNZD,M15 : supprimé

 
Votre slippage peut être le problème. Le backtesting n'utilise jamais le slippage. Lisez les fonctions de test et la limite dans MetaTrder4https://www.mql5.com/en/articles/1512