[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 1070

 
dzhini:
Mais ça ne marche pas :(
Donc, cela ne fonctionne pas ailleurs ou j'ai raté quelque chose.
 
Reshetov:
Donc, cela ne fonctionne pas ailleurs ou j'ai raté quelque chose.
Je peux frapper à votre porte en personne ?
 
dzhini:
Je peux frapper à votre porte en personne ?
Non. Les messages privés sont réservés aux communications personnelles. Et les erreurs dans le code doivent être discutées publiquement, afin que d'autres ne fassent pas les mêmes erreurs, ou quelqu'un pourrait alors partager un lien vers une solution toute faite.
 

Bonjour. Ce code simple fonctionne avec une erreur. Je n'arrive pas à trouver la raison moi-même.

Le premier ordre ouvre, modifie. Le second ouvre et... Ne modifie pas. Il le garde jusqu'à ce qu'il échoue.

Dans le journal, il est écrit :

"01:23:22 MarkTrade a démarré pour le test

01:23:22 2010.01.29 00:00 MarkTrade EURUSD,H1 : ouvert #1 acheter 1.00 EURUSD à 1.3965 ok

01:23:22 2010.01.29 00:00 MarkTrade EURUSD,H1 : modify #1 buy 1.00 EURUSD at 1.3965 sl : 1.3935 tp : 0.0000 ok

01:23:22 2010.01.29 00:28 Testeur : stop loss #1 à 1.3935 (1.3935 / 1.3937)

01:23:22 2010.02.01 00:00 MarkTrade EURUSD,H1 : ouvert #2 acheter 1.00 EURUSD à 1.3877 ok

01:23:22 2010.05.05 13:17 MarkTrade : arrêté à cause du Stop Out

01:23:22 2010.05.05 13:17 Testeur : la commande #2 est fermée

J'ai fait une erreur ! OrderSend renvoie une valeur non booléenne!

int start()
  {
  int total=OrdersTotal();
  if (total==0)
   {
      if (TimeHour(TimeCurrent())==00&&TimeMinute(TimeCurrent())==00)
      {
      Buy();
      }
   }
return(0);
  }
//////////////////////////
void Buy()
 {
 RefreshRates();
 if (OrderSend(Symbol(), OP_BUY, 1, NormalizeDouble(Ask,Digits), 0,0,0,"",123321,0,Blue)==true)
         {
           Modify();
         }
 }
/////////////////////////////
void Modify()
 {
    int total = OrdersTotal();
      for(int i=total-1;i>=0;i--)
       {
       OrderSelect(i, SELECT_BY_POS,MODE_TRADES);
       if (OrderModify (OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-NormalizeDouble(30*Point,Digits),OrderTakeProfit(),0,CLR_NONE)== false) Modify();
       }
 }
 

bon après-midi

Comment créer un testeur qui travaille sur différents référentiels.

et le faire passer dans l'histoire.

 

Bonjour !

Veuillez clarifier. Lors de l'optimisation d'Expert Advisor, j'ai remarqué qu'en fixant différents TP avec l'algorithme génétique activé, j'obtiens des résultats différents, c'est-à-dire que si je fixe TP=400, alors j'optimise par étapes de 1 à 400, puis je fixe 350, puis j'optimise par étapes de 1 à 350 et ainsi de suite jusqu'à TP=50. Il s'avère donc que si je n'exécute qu'à TR = 400, alors je " saute " les résultats qui sont à TP inférieur et meilleur ! Est-ce dû à la génétique ? (L'article https://www.mql5.com/ru/article s/1347 (Créé : 25.12.2009 Auteur : Rider) dit : "...La génétique est certainement une chose utile, mais dans des limites raisonnables. Le fait est que son algorithme peut jouer une farce cruelle - un ensemble de paramètres avantageux, de son point de vue, sera identifié, et toute optimisation ultérieure se fera "autour" jusqu'à la fin. Je pense que les conséquences sont claires. La plupart des très bonnes variantes qui fonctionneront en dehors de la zone d'optimisation seront laissées "en dehors" et n'apparaîtront pas dans le tableau "Résultats de l'optimisation".

Il y a plusieurs façons de s'en sortir. Une solution radicale consiste à rejeter l'utilisation de l'algorithme génétique dans l'optimisation. Mais ce n'est pas toujours une bonne solution pour une raison ou une autre. Les deux suivantes sont des demi-mesures, mais au moins quelque chose :

- Effectuez l'optimisation non pas une, mais deux ou plusieurs fois. La première fois, par exemple, en fonction de l'"équilibre", la suivante en fonction du "prélèvement maximal" ou autre chose..."). Donc, pour ne pas obtenir le meilleur résultat, je devrais l'exécuter avec différents TPs + par différents "paramètres optimisables" et plus, par exemple, 9 tests avant avec 9 optimisations pour chaque test pour la fiabilité ?

 
eddy:

le cycle n'est pas interrompu pour une raison quelconque

Dans votre cas, Break déclenche et interrompt la boucle uniquement lorsque la condition est remplie. Si la condition n'est pas remplie, la boucle est infinie. Essayez de cette façon.

int sec=Seconds();
       while(true) 
        {if(sec!=Seconds())          // new sec
          { int ms=GetTickCount(); }
       break;
        }
 
volshebnik:

Dans votre cas, larupture ne fonctionne que si la condition est remplie.

c'est pourquoi c'est dans if()
 
Bonjour, comment modifier les propriétés d'un symbole dans le terminal ? Il est indiqué que le niveau d'arrêt minimum est de 300. Je ne peux pas tester l'EA.
 
Pro

Pour modifier le spread par exemple il existe un programme TakeMySpread, mais comment ou avec quoi on peut modifier le "Stop Level" pour tester l'EA dans différentes conditions. Au secours !