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

 
Link_x:
Je pense que le manque de compréhension des fonctions trouvées dans les indicateurs techniques. Si je ne le comprends pas, alors je devrais le comprendre, en utilisant les informations trouvées "de l'autre côté" des liens qui me sont transmis par vous, en tapant et en envoyant via le réseau Internet.
"Apprendre, apprendre et apprendre encore !" - J'adore cette phrase. )))

Ouvrez le CCI dans MetaEditor, par exemple, et mettez tout ce que vous ne comprenez pas dans le livre de référence (cliquez sur une fonction ou une expression peu claire et appuyez sur F1). De cette façon, l'apprentissage sera beaucoup plus amusant.
 

extern int MartinStep = 2;
extern double LOT = 0.01;


double GetLot(){

int time = 0;double profit = 0; double lots = 0; double Lot = 0;
for(int i = OrdersHistoryTotal()-1;i>=0;i--){
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){
if(OrderSymbol() == Symbol()&& OrderMagicNumber() == Magic){
if(time<OrderCloseTime()){
time=OrderCloseTime();
profit=OrderProfit();
lots = OrderLots();
}
}
}
}


if(profit == 0 &&time == 0)
{
Lot = LOT;
}
if(profit >= 0)
{
Lot = LOT;
}
if(profit < 0 )
{
Lot = NormalizeDouble (lots*MartinStep,2);
}

return(Lot);
}
Veuillez aider à corriger les erreurs de fonction. L'EA ouvre plusieurs ordres correctement, puis le journal affiche une erreur "invalid lots amount". Je ne comprends pas ce qui ne va pas.
 
Trader7777:


lots = OrderLots();

Lot = NormalizeDouble (lots*MartinStep,2);

Veuillez aider à corriger les erreurs de fonction. L'EA ouvre plusieurs ordres correctement, puis le journal affiche une erreur "invalid lots amount". Je ne comprends pas ce qui ne va pas.

Soit je ne suis jamais arrivé à l'opérateur lots = OrderLots() ; et les lots restent toujours =0. Ou les lots*MartinStep ont dépassé la taille maximale autorisée du lot.
 

J'ai trouvé la solution, l'erreur est ici

if(profit >= 0)


J'aurais dû mettre un signe égal, car après un ordre qui a clôturé à 0, l'EA ne savait pas quoi faire).
 

Bonjour à tous ! Pouvez-vous me dire comment mettre en œuvre la réinitialisation de l'EA en fin de journée ? Eh bien, dans init(), il y a certaines actions qui doivent être répétées à un certain moment. Je ne veux pas les réécrire dans start(). Je suis plus intéressé par la possibilité théorique de redémarrer l'EA. Merci d'avance.

 
Pyro:

Bonjour à tous ! Pouvez-vous me dire comment mettre en œuvre la réinitialisation de l'EA en fin de journée ? Eh bien, dans init(), il y a certaines actions qui doivent être répétées à un certain moment. Je ne veux pas les réécrire dans start(). Je suis plus intéressé par la possibilité théorique de redémarrer l'EA. Merci d'avance.

Avez-vous essayé d'appeler init() à un moment précis ?
 
Oui, je n'y avais pas pensé :( Merci ! !!
 
Pourriez-vous me dire si les drapeaux et les variables statiques sont réinitialisés ou restent dans la mémoire de l'EA lors du redémarrage de l'EA (le retirer du graphique puis le remettre) ?
 
Forexman77:
Pourriez-vous me dire si les drapeaux et les variables statiques sont réinitialisés ou restent dans la mémoire de l'EA lors du redémarrage de l'EA (le retirer du graphique puis le remettre) ?

Pendant l'initialisation, tout est remis à zéro, sauf les variables globales.
 
Pyro:

Tout est remis à zéro pendant l'initialisation, sauf les variables globales.
Et il convient ici de préciser que les GV sont des variables terminales, et non des variables EA.