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

 
solnce600:

Merci pour votre aide. Je vais aller chercher de l'oxygène, et ensuite je décoderai vos conseils.

Peut-être pouvez-vous me donner des conseils plus spécifiques, ou corriger un fragment de mon code.

Ainsi, cela restera dans ma tête et je ne ferai pas les mêmes erreurs.

Merci. (gloussements)



Pour réparer n'importe quelle partie, vous devez écrire un cahier des charges, êtes-vous prêt pour cela ?
 
ALXIMIKS:

Question : Quelle est la dernière commande clôturée dans l'historique des commandes lorsque l'option OrderSelect est sélectionnée ?

1) Zéro "0" ;

2) Le dernier "OrderHystoryTotal -1 "

3) Aléatoire

4) Dépend de la date d'ouverture de l'ordre (ce qui est plus proche de 1 ou 2 alors ?)

Êtes-vous absolument sûr de cela, que c'est ainsi que les commandes sont situées dans la liste ? Que se passe-t-il si l'histoire est remaniée à un moment désagréable et que les ordres qu'elle contient commencent à être situés différemment ? Le moyen le plus fiable est de trouver l'extrême par le temps, pas par une hypothèse hypothétique dans votre tête...

C'est une chose de fabriquer un jouet pour un testeur, mais c'en est une autre de travailler dans le monde réel. Qu'il s'habitue à prendre en compte tous les pièges possibles qui peuvent "soudainement" arriver...

 
ALXIMIKS:

Question : Quelle est la dernière commande clôturée dans l'historique des commandes lorsque l'option OrderSelect est sélectionnée ?


https://www.mql5.com/ru/forum/131859/page4#434227
 
solnce600:

Je vous serais très reconnaissant si vous pouviez expliquer "sur vos doigts" par rapport à mon exemple.

Où ma logique est défectueuse. Je ne comprends pas de quoi il s'agit.

Merci.



if(votre_première_condition)

{

//il y aura

// exécuter

// tous

// ces

// chaînes de caractères, uniquement si

// votre_première_ condition est vraie

}

// cette ligne sera exécutée dans tous les cas



if(votre_second_condition)

// cette chaîne ne sera exécutée que si votre_second_condition est vraie.

// cette chaîne s'exécutera dans tous les cas, même si votre_première_condition renvoie faux.

// cette chaîne restera vraie même si your_second_condition renvoie false.


 
Vinin:

Pour réparer n'importe quelle partie, vous devez écrire un cahier des charges, êtes-vous prêt pour cela ?
Pas encore.
 
artmedia70:

Êtes-vous absolument sûr que c'est ainsi que les commandes sont placées dans la liste ? Et si, à un moment désagréable, l'histoire est remaniée et que les mandats commencent à être disposés différemment ? Le moyen le plus fiable est de trouver le dernier par le temps, pas par une supposition hypothétique dans votre tête...

C'est une chose de fabriquer un jouet pour un testeur, mais c'en est une autre de travailler dans le monde réel. Laissez-le s'habituer à prendre en compte toutes les choses possibles qui peuvent arriver "soudainement"...


Cette question n'est pas tout à fait correcte ((

Cela n'a pas beaucoup de sens de passer en revue tous les ordres fermés à chaque fois avant l'ouverture.

Que pouvons-nous faire ? Eh bien, les données relatives au dernier ordre clôturé doivent être enregistrées dans un fichier et mises à jour lorsque le nombre total d'ordres clôturés change. (Cela représente déjà une sorte d'économie).

Et s'il y a 1000 ou 5000 commandes dans l'historique ? L'historique des commandes est-il jamais nettoyé, ou est-il toujours nettoyé ? Si oui, par qui ?

J'ai demandé quelle partie de OrderSelect contiendra les derniers ordres fermés, car cela augmente le temps nécessaire à la recherche lorsque l'historique augmente,

Je voudrais juste affiner la recherche.

 
digits:

Bon après-midi.

Ma stratégie prend en compte le spread, le spread est défini par une fonction :

Mais comme le spread est constant dans le testeur de stratégie, j'ai besoin d'un émulateur de spread aléatoire. Je veux émuler les changements d'écart dans le testeur dans la gamme de 2 à 3 points (4 chiffres) dans 80% des cas et plus de 3 points dans 20% des cas. Peut-être avez-vous des idées sur la manière de mettre en œuvre cette solution, ou des liens où cette idée a été résolue.


Il est probable que ce sujet n'intéresse personne, mais pour que vous puissiez vous faire une opinion, je vais publier une version où le spread n'est que de 2 ou 3 pips.

double Spread_(){
   int compare = 0;
   int MaRand = 0;
   double sp = 0.0;
   double spread = 0.0;
     if (IsTesting() == TRUE){
         MathSrand(OrderTicket() + TimeLocal() / Bid);
         MaRand = MathRand();
         MaRand = MaRand % 2;
         if(MaRand == compare){
         sp = 2.0;
         }else{
         sp = 3.0;
       }
       spread = sp;
    }else{
       RefreshRates();
       spread = MathRound((Ask - Bid) / Point);
     }
   return(spread);
}  

 
digits:

Ce sujet n'intéresse probablement personne, mais pour que vous puissiez vous faire une opinion, je vais publier une version où l'écart n'est que de 2 ou 3 points.


Vous devriez changer votre avatar. Faites-en quelque chose de neutre. Les liens sont interdits.
 

Bonjour à tous, quelqu'un peut-il me donner une réponse claire ? Tech-analyse+martin

J'ai cherché partout sur le net et je n'ai pas trouvé de réponse claire. Si quelqu'un a des informations, faites-le moi savoir.

 
artmedia70:

if(votre_première_condition)

{

// il y aura

// exécuter

// tous

// ces

// chaînes de caractères, uniquement si

// votre_première_ condition est vraie

}

// cette ligne sera exécutée dans tous les cas



if(votre_second_condition)

// cette chaîne ne sera exécutée que si votre_second_condition est vraie.

// cette chaîne s'exécutera dans tous les cas, même si votre_première_condition renvoie faux.

// cette chaîne sera exécutée dans tous les cas, même si votre_second_condition renvoie false



Si je comprends ce que sont mes première et deuxième conditions et une chaîne qui s'exécute toujours, je serai sur le point de résoudre ce mystère.

C'EST LA PREMIÈRE CONDITION

si ((ot==0))
&&(Bid==Price)
&&(Open[1]-Close[1]>100*Point&&Open[1]-Close[1]<120*Point)
&&(High[1]-Open[1]>40*Point&&High[1]-Open[1]<60*Point)
&&(Close[1]-Low[1]>40*Point&&Close[1]-Low[1]<60*Point))

C'EST LA DEUXIÈME CONDITION

if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot))

C'EST UNE CHAÎNE QUI SERA TOUJOURS EXÉCUTÉE

retour(0) ;

N'est-ce pas ?