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

 
rapid_minus:

Veuillez clarifier, je suis totalement confus :

J'ai trouvé un script qui ferme les ordres avec profit ou avec moins, mais je ne comprends pas la logique - dans les variables externes le bool close_only_profit_orders=false est mis, et ensuite dans le début de f-i il est vérifié par la négation : if(OrderType()==OP_BUY && (!close_only_profit_orders || order_prof>0). C'est-à-dire que si elle n'est pas fausse ou s'il y a des ordres avec un profit, alors la fonction OrderClose() suit. Mais nulle part dans le code, il n'y a de conditions sous lesquelles la variable close_only_profit_orders devient vraie. Alors à quoi ça sert ?


Il n'y a rien à trouver par cette variable. C'est le fruit de l'imagination du programmeur ; seul le développeur sait ce que contient votre EA. Je ne peux que spéculer sur la raison pour laquelle cela peut se produire et comment le vérifier. Je viens de rencontrer un EA qui a bêtement fermé tous les ordres sur toutes les paires avant de commencer à fonctionner. Eh bien, c'est le fruit de l'imagination du programmeur. Ainsi, si votre conseiller expert fonctionne comme il le devrait, nous devons chercher où il a été écrit de fermer les ordres et pour quelle raison. Peut-être que des magiciens différents aideront.
 

Veuillez aider à résoudre ce problème.

int n1=..... ;

int n2=..... ;

M1[i]=iMA(NULL,0,n1,n2,MODE_SMA,PRICE_CLOSE,i) ;

J'affiche les valeurs de n1 et n2 dans le commentaire, les valeurs sont correctes, mais la souris n'est pas dessinée correctement, pas sur tout le graphique. Mais si je tape les valeurs de n1 et n2 à la main au lieu de ces variables, tout est dessiné comme il se doit. Je ne comprends pas comment cela est possible lorsque les valeurs des variables sont correctes ? Comment faire pour que le graphique soit dessiné avec un décalage vers la droite? Maintenant, il n'est dessiné que jusqu'à la barre zéro, c'est-à-dire la barre actuelle.

 
Alexandr24:

Veuillez aider à résoudre ce problème.

int n1=..... ;

int n2=..... ;

M1[i]=iMA(NULL,0,n1,n2,MODE_SMA,PRICE_CLOSE,i) ;

J'affiche les valeurs de n1 et n2 dans le commentaire, les valeurs sont correctes, mais la souris n'est pas dessinée correctement, pas sur tout le graphique. Mais si je tape les valeurs de n1 et n2 à la main au lieu de ces variables, tout est dessiné comme il se doit. Je ne comprends pas comment cela est possible lorsque les valeurs des variables sont correctes ? Comment faire pour que le graphique soit dessiné avec un décalage vers la droite ? Maintenant, il n'est dessiné que jusqu'à la barre zéro, c'est-à-dire la barre actuelle.

Si n1 n'est pas égal à la valeur du TF, alors je comprends pourquoi il n'est pas dessiné correctement. Mais un déplacement vers la droite rendra n2 plus ! Vérifié !
 
borilunad:
Si n1 n'est pas égal à la valeur TF, alors je comprends pourquoi il n'est pas dessiné correctement. Et le décalage vers la droite rendra n2 avec moins.

Je ne comprends pas ce que TF a à voir avec ça, n1 est la période de calcul de la moyenne pour le calcul de l'indicateur. J'ai une bonne idée de ce qu'il faut en faire, je ne suis pas sûr de ce qu'il faut en faire, mais je ne suis pas sûr de ce qu'il faut en faire.

UPD. J'ai mis 0 à la place de n2 et shift est bien rendu, mais n1 est un peu bizarre :(

 
double  iMA(
   string       symbol,           // имя символа
   int          timeframe,        // таймфрейм
   int          ma_period,        // период - n1    
   int          ma_shift,         // сдвиг средней - n2
   int          ma_method,        // метод усреднения
   int          applied_price,    // тип цены
   int          shift             // сдвиг
   );

C'est vrai ! C'est moi qui me suis trompé, mais pourquoi ça ne marcherait pas si tu le fais bien ? !

 
borilunad:

C'est vrai ! C'est moi qui ai tort, mais pourquoi ça ne peut pas marcher si tu le fais bien ? !

Oui, ce paradoxe me laisse également perplexe. Si je redémarre le terminal, le wagon est rendu comme il devrait l'être, mais redémarrer à chaque fois est peu pratique.

UPD J'ai résolu le problème en appuyant sur le bouton droit et en sélectionnant "Rafraîchir" dans le menu, mais si j'appuie sur compiler dans le code, le dessin est raté... Mais c'est une broutille, je vais juste rafraîchir :))

 
Alexandr24:

Ce paradoxe me laisse également perplexe. Si je redémarre le terminal, le wagon est dessiné comme il devrait l'être, mais c'est peu pratique de redémarrer à chaque fois.

UPD Le problème a été résolu en faisant un clic droit et en sélectionnant "Refresh" dans le menu, mais si j'appuie sur "compile" dans le code, le wagon est dessiné incorrectement... mais c'est une broutille, je vais juste rafraîchir :))

Montrez-moi le code, pas seulement des bouts et des morceaux
 

Je l'ai résolu moi-même, merci pour votre contribution :)

 
Salutations, TOUS !
J'ai cherché sur le forum et sur Internet - je ne l'ai pas trouvé. C'est pourquoi j'ai une question pour vous :

1. Un EA ouvre (sur la base du croisement avec la MA) plusieurs (3) ordres de marché au même prix (par exemple, BUY à 1.1180).

Avant le franchissement de la MA, les ordres étaient des ordres d'achat stop.

2. Ensuite, le conseiller expert doit fixer ces trois ordres Takeprofit à des niveaux différents (ils ne sont déterminés que lorsqu'ils croisent la MA, selon l'indicateur Fibo standard).

Supposons que ces niveaux soient les suivants :
Ur1 = 1.1200
Ur2 = 1,1220
Ur3 = 1,1240

Et maintenant une question :
Comment définir ces niveaux définis pour les ordres ouverts ?

J'ai trouvé une telle construction sur le forum (voir ci-dessous), mais je n'ai pas d'autre idée. Si je ne suis pas sûr de ce que je cherche, je préfère avoir des conseils sur la manière de procéder.
J'ai besoin d'un autre compteur ? Mais comment ? Ou devrai-je utiliser des tableaux, des majuscules, ou... ? ???

double Ur1 = 1.1200
double Ur2 = 1.1220  
double Ur3 = 1.1240
for(int i=OrdersTotal()-1;i>=0;i--) 
{
   if(OrderSelect(i, SELECT_BY_TICKET, MODE_TRADES)==false) continue;
   if(OrderSymbol()!=Symbol()) continue;
      if(OrderType()!=0) continue;
                   
   // вот тут мы можем работать с нашим ордером
   
   if (OrderTicket() = ???? );
 
 bool mod_Buy1 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur1,0,clrNONE);
 bool mod_Buy2 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur2,0,clrNONE);
 bool mod_Buy3 = OrderModify (OrderTicket(???),OrderOpenPrice (), NULL,Ur3,0,clrNONE);


}  

 
vadimvborisov:
Comment placer les trois ordres ouverts à ces niveaux donnés ?

1. Qu'est-ce qui vous empêche de fixer les TPs appropriés pour les ordres dès leur ouverture ?
2. Qu'est-ce que ce mod_Buy1/2/3 ? - Comprenez-vous l'objectif du cycle de vie ci-dessus ?