[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 892

 

Bonjour ! Je n'arrive pas à comprendre ce qui ne va pas avec ? ???. Ne modifie pas l'ordre de marché
slb =NormalizeDouble(Bid - (StopLoss * Point),Digits) ; // calculer le stop pour les positions d'achat//
tpb =NormalizeDouble(Ask + (TakeProfit* Point),Digits) ; // calculer le profit pour les positions d'achat//
sls =NormalizeDouble(Ask + (StopLoss * Point),Digits) // calcul du stop pour les positions de vente//
tps =NormalizeDouble(Bid - (TakeProfit* Point),Digits) ;

//================================================== ==================//
int total=OrdersTotal() ;
int n=0 ;
for (int i=total-1 ; i>=0 ; i--)
{
if(OrderSelect(i, SELECT_BY_POS))
{
if(OrderSymbol()==Symbol())
{
n++ ;
}}
if ( total == 1 )
{
for (int k=total-1 ; k>=0 ; k--)
{
if(OrderSelect(k, SELECT_BY_TICKET)
Alert("l'ordre est", k) ;
{
if ((OrderType()==OP_BUY)&&(OrderTakeProfit()==0)&&(O rderStopLoss()==0))
{
OrderModify(k,OrderOpenPrice(),slb,tpb,0,Blue) ;
Alert("error", GetLastError()) ;

}}}}
return(0);}

QUEL EST LE PROBLÈME ? AIDEZ-NOUS S'IL VOUS PLAÎT ........... ?????

 

Toute question d'un nouvel arrivant, afin de ne pas encombrer le forum. Ne laissez pas les professionnels passer à côté de vous. Pas sans toi.

 
belck:

Toute question de débutant, afin de ne pas encombrer le forum. Ne laissez pas les professionnels passer à côté de vous. C'est nulle part sans toi.

Où voulez-vous en venir ? C'est un peu comme si tu avais le droit de poser des questions sur le temps... ou la santé... :))))))
 


Désolé, je ne comprends pas quel est le problème. Je pense que je n'ai jamais rempli la condition while, parce que si je mets Comment à l'intérieur de la boucle, cela ne se reflète pas. De plus, au-dessus de la boucle, j'ai la variable B égale à la valeur normale attendue, comme 0,0011, mais si je la multiplie par Point, cela donne 0 !!!!.

int start()

{
double A,B,C ;A=Close[1];B=Close[Bars] ;
C=A-B ;Comment("Valeur de la différencei ", B*Point) ;
while (B*Point >Swing)
{ Comment("Valeur de la différence ", B) ;
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point,"macd sample",16384,0,Green);}

while (0-B*Point<Point)
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+stoploss*Point,Bid-TakeProfit*Point,"macd sample",16384,0,Red) ;

Alert("Value ", B) ;

Comment("Value differencei ",B) ;

//----

//----
return(0) ;
}

 

Je ne suis pas sûr, mais la bonne façon de faire serait de

int start()

{
double A,B,C ;A=Close[1];B=Close[bars] ; Que signifie Close[bars] ; ? ??? Fermer [séquence de numéros de barre à l'envers, sans courant]

clôture de la bougie précédente [1]. clôture de la bougie précédente [2].

B=(A-B)*Point ; Comment("Valeur de la différence ", B) ; B sera égal à la clôture de la bougie précédente moins la clôture de la bougie que vous avez définie dans B= close [....].]
while (B > B) et très probablement pas while a si la condition
{ Comment("Value Difference ", B) ;
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point, "macd sample",16384,0,Green) ;

}

while (0-B<Round) et très probablement pas while une condition if

{

OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+stoploss*Point,Bid-TakeProfit*Point, "macd sample",16384,0,Red) ;
}
Alert("Valeur ",B) ;

Comment("Valeur differencei ",B) ;

//----

//----
return(0) ;
}
Peut être faux.....

 
Merci ! !! Je vais essayer. Pendant trois jours, je n'arrive pas à comprendre ce qui ne va pas, techniquement tout semble normal.
 
Non, c'est la même chose. Merci pour la réponse. Je ne sais pas quel est le problème.
 

Il y a beaucoup d'erreurs dans votre code ...... que voulez-vous faire quel résultat ??? Il ne devrait pas y avoir de lettres russes...

Vous ne pouvez pas avoir C dans la feuille de calcul parce que C a un nombre en mémoire comme 1.23456.

0-B serait un nombre négatif....

 

et il est préférable de calculer le bénéfice et la perte comme suit

slb =NormalizeDouble(Bid - (StopLoss * Point),Digits) ; // calculer le stop pour les positions d'achat//
tpb =NormalizeDouble(Ask + (TakeProfit* Point),Digits) ; // calculer le profit pour les positions d'achat//
sls =NormalizeDouble(Ask + (StopLoss * Point),Digits) // calculer le stop pour les positions de vente//
tps =NormalizeDouble(Bid - (TakeProfit* Point),Digits) ; // calculer le profit pour les positions de vente///

 
Dimka-novitsek:


Désolé, je ne comprends pas quel est le problème. Je pense que je n'ai jamais rempli la condition while, parce que si je mets Comment à l'intérieur de la boucle, cela ne se reflète pas. De plus, au-dessus de la boucle, j'ai la variable B égale à la valeur normale attendue, comme 0,0011, mais si je la multiplie par Point, cela donne 0 !!!!.

int start()

{
double A,B,C ;A=Close[1];B=Close[Bars] ;
C=A-B ;Comment("Valeur de la différencei ", B*Point) ;
while (B*Point >Swing)
{ Comment("Valeur de la différence ", B) ;
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point,"macd sample",16384,0,Green);}

while (0-B*Point<Point)
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+stoploss*Point,Bid-TakeProfit*Point,"macd sample",16384,0,Red) ;

Alert("Value ", B) ;

Comment("Value differencei ",B) ;

//----

//----
return(0) ;
}

Et vous prétendez qu'il faut multiplier la différence entre A et B par Point ?

Les valeurs de A et B sont des nombres réels. En multipliant leur différence par Point, vous augmentez encore le nombre de décimales. Si vous avez besoin d'obtenir un nombre entier pour le comparer à un nombre entier "étalé", vous devez plutôt diviser par Point.

Raison: