Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 340

 
evillive :


Il y a un bouton SRC dans le panneau d'édition, le code y est coloré automatiquement ;)

Quant au code, s'il utilise if (OrderSymbol() == Symbol()...) puis if (OrderSymbol()!= Symbol()) continue, nous n'avons pas besoin de l'un ou l'autre.

for (int k = 0 ; k < OrdersTotal() ; k++) vous feriez mieux de remplacer ceci par

for (int k = OrdersTotal()-1 ; k >=0 ; k--), c'est plus sûr



Je l'ai écrit de cette façon


if(NumberOfPositionsSell(Symbol())==1 &&  NumberOfPositionsBay_otl(Symbol())==1  &&GetOrderLotsOtlBay(Symbol())==start_Lot*2  &&GetOrderLotsSell(Symbol())==start_Lot)
{
 
     for (int kk = OrdersTotal()-1; kk >=0 ; kk--) 
      {
      
       if (OrderSelect(kk,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:
      
      if (OrderSymbol() == Symbol() && OrderType() == OP_BUYSTOP ) {
      

      tp_buy_otl=NormalizeDouble(b+((((2*Point)+spred+(b+Point+spred-GetOrderPriceSell(Symbol()))/Point)/2)*Point), Digits);
      sl_buy_otl=NormalizeDouble(GetOrderPriceSell(Symbol()), Digits);
      OrderModify(OrderTicket(), NormalizeDouble(b+Point+spred, Digits),sl_buy_otl,tp_buy_otl,0);
     
       Alert("tp_buy_otl = ",DoubleToStr(tp_buy_otl, Digits)+"\n"+"sl_buy_otl =  ",DoubleToStr(sl_buy_otl, Digits)+"\n"+" цена открытия бай стоп = ",  DoubleToStr(b+Point+spred, Digits)+"\n"+"OrderSymbol() =  ",OrderSymbol()+"\n"+"OrderType() = ",OrderType());
     
      
     }
      
      
      if (OrderSymbol() == Symbol() && OrderType() == OP_SELL ) {
      
      sl_sell_otl=NormalizeDouble(b+spred+Point, Digits);
      OrderModify(OrderTicket(),OrderOpenPrice(), sl_sell_otl,OrderTakeProfit(),0);
       
      }
      }
      }
      
} 

а в алерте почемуто OrderSymbol()==GBPUSD посмотрите на скин
да и открытый селл он модифицировал а отложенный нет


Dès que j'ai supprimé l'ordre en attente pour gbpusd et que j'ai retiré l'EA de celui-ci, l'ordre pour euro a été modifié immédiatement.


 
max020780:

Dès que j'ai supprimé l'ordre en attente sur gbpusd et que j'ai retiré l'EA de celui-ci, l'ordre euro a été modifié immédiatement.

Utilisez Magicky pour filtrer les commandes. Et il n'y a pas de contrôle de la modification répétée des arrêts (qui provoque l'erreur de modification 1).
 

Bonjour à tous. Les amis, pouvez-vous me dire si ce test d'un EA sur 5 ans peut être considéré comme un succès. Ou bien la rentabilité est faible et le drawdown important. J'aimerais avoir mon avis, les données du testeur sont-elles très différentes du compte réel (je l'ai testé dans le terminal Alpari) ? Je montre les résultats :

Période montant rentabilité rabattement le montant de la transaction
01.06.2012-30.05.2013 1490.63 1.7 37.08% (389.71)
213
01.06.2011-30.05.2012
1242.23 1.48 25.82% (448.34) 231
01.06.2010-30.05.2011 1677.66 1.62 53.26% (880.57)
213
01.06.2009-30.05.2010 1664.33 1.68 32.16% (560.68) 208
01.06.2008-30.05.2009 1817.72 1.48 43.73% (472.15) 233
 
alexey1979621:

Bonjour à tous. Les amis, pouvez-vous me dire si ce test d'un EA sur 5 ans peut être considéré comme un succès. Ou bien la rentabilité est faible et le drawdown important. J'aimerais avoir mon avis, les données du testeur sont-elles très différentes du compte réel (je l'ai testé dans le terminal Alpari) ? Je montre les résultats :

Période montant rentabilité rabattement le montant de la transaction
01.06.2012-30.05.2013 1490.63 1.7 37.08% (389.71)
213
01.06.2011-30.05.2012
1242.23 1.48 25.82% (448.34) 231
01.06.2010-30.05.2011 1677.66 1.62 53.26% (880.57)
213
01.06.2009-30.05.2010 1664.33 1.68 32.16% (560.68) 208
01.06.2008-30.05.2009 1817.72 1.48 43.73% (472.15) 233

C'est un énorme drawdown, et la rentabilité n'est pas suffisante... Quel est le prélèvement sur les fonds ?

Ou ça pourrait l'être :

Dégradation abs. : 2 .40 USD
Maximum : 9 ,08 USD

Relatif : 0 ,78%)

Argent maximum : 97.81% ))))

 
evillive:

C'est un gros drawdown, et la rentabilité est un peu faible... Quel est le prélèvement sur les fonds ?

C'est peut-être le cas :

Dégradation abs. : 2,40 USD.
Maximum : 9,08 USD

Relatif : 0,78 %.

Max. de fonds : 97,81% ))))

Le rabattement relatif est indiqué. Le drawdown absolu est à peu près le même en pourcentage et en argent. Les données du testeur diffèrent-elles beaucoup du compte réel? Alors que dois-je faire avec le conseiller expert - dois-je le placer sur le compte réel (il semble fonctionner correctement pendant 3 semaines sur le compte de démonstration) ou le mettre de côté jusqu'à ce qu'il y ait de nouvelles idées pour l'améliorer ?
 
Laissez-le travailler sur la démo pendant au moins six mois. Le testeur ne montre pas le drawdown par des moyens, mais vous pouvez le voir sur le temps réel. Ce que j'ai montré - travail sans arrêts, tirages trop importants. La durée de vie des comptes précédents - 2-3 mois, celui-ci est vivant depuis le mois d'août, je vais voir combien de temps il va durer ;)))
 
Si vous avez de l'expérience, quels paramètres devez-vous utiliser comme point de départ - rentabilité minimale et drawdown ? Si la rentabilité est inférieure à 1,5 % et que la perte est supérieure à 50 % en 5 ans, alors mon conseiller expert doit être mis de côté jusqu'à des temps meilleurs.
 
Forexman77:

J'utilise mon propre indicateur dans l'EA, je vois visuellement pendant le test qu'il se développe et selon les conditions il devrait ouvrir l'achat, mais cela ne se produit pas.

Je vois les erreurs suivantes dans le journal (j'ai deux types, je les montre un par un) :

TestGenerator : erreur de données non correspondantes (limite de volume 372 à 2013.12.11 21:00 dépassée)

TestGenerator : erreur de données non concordantes (la valeur basse 1.33097 à 2013.09.12 19:45 n'est pas atteinte depuis la période la plus basse, le prix bas 1.33105 ne concorde pas)

Peut-être y a-t-il des particularités dans le fonctionnement des indicateurs personnalisés ? Je m'amuse avec cet EA depuis deux mois et je le repousse indéfiniment.

Téléchargez l'historique complet du symbole à tester. Ce n'est pas l'EA qui provoque l'erreur, c'est l'histoire "tordue".
 
Forexman77:

Les erreurs 129,138 se produisent de temps en temps sur un EA. Le problème n'est résolu qu'après le redémarrage du terminal.

Je veux ajouter la fonction Market Info pour mettre à jour l'offre et la demande et ensuite vérifier.

Est-il possible d'appeler artificiellement les erreurs 129,138 ?

Erreur 129 - mauvais prix

Erreur 138 - nouveaux prix (requote)

Avant d'envoyer une demande de transaction, obtenez les derniers prix soit en rafraîchissant l'environnement de négociation à l'aide de RefreshRates(), soit directement à partir de MarketInfo().

N'oubliez pas cela :

Les conseillers experts et les scripts travaillent avec leur propre copie des données historiques. La copie des données sur le symbole courant est créée au premier lancement du conseiller expert ou du script.

À chaque nouvelle exécution du conseiller expert ou du script, la copie initialement créée est mise à jour. Pendant l'exécution du conseiller expert ou du script, un ou plusieurs nouveaux ticks peuvent arriver, de sorte que les données peuvent devenir obsolètes.

 
artmedia70:

Erreur 129 - prix incorrect

Erreur 138 - nouveaux prix (requote)

Avant d'envoyer une demande de transaction, obtenez les derniers prix soit en mettant à jour l'environnement de négociation à l'aide de RefreshRates(), soit directement à partir de MarketInfo().

N'oubliez pas cela :

Les conseillers experts et les scripts travaillent avec leur propre copie des données historiques. La copie des données sur le symbole courant est créée au premier lancement du conseiller expert ou du script.

À chaque nouvelle exécution du conseiller expert ou du script, la copie initialement créée est mise à jour. Pendant l'exécution du conseiller expert ou du script, un ou plusieurs nouveaux ticks peuvent arriver, de sorte que les données peuvent devenir obsolètes.


Merci beaucoup !

Maintenant je sais quel est le problème.

Je l'ai utilisé pour acheter :

if  (iClose(Symbol(),Period(),0) <= MA_6_t) 
          {                                          
          Opn_B=true;                    
          }

Pour autant que je sache, l'achat se fait sur la demande, mais iClose(Symbol(),Period(),0) prend les prix de la demande. Cela peut être la raison de l'erreur.

Maintenant, j'utilise la combinaison suivante :

double pa=MarketInfo(Symbol(),MODE_ASK);
if  (pa <= MA_6_t) 
          {                                          
          Opn_B=true;                    
          }
Mais, alors la question se pose, car l'EA n'est pas un Pips, le prix était dans la zone d'achat depuis longtemps et mis à jour avec chaque tick.

Pourquoi le commerce ne s'ouvre-t-il pas ? Il s'avère que l'EA s'accroche à l'erreur et ne voit pas d'autres mouvements de prix ?

J'ai pris le modèle pour mon conseiller expert sur https://c.mql5.com/mql4/book/mq4/experts/tradingexpert.mq4.

À votre avis, dois-je ajouter à la fonction de traitement des erreurs dans cet EA une vérification des erreurs 129 et 138 ?

Si oui, comment faire ?