[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 85

 
OTPOK:

Une dernière chose - Comment puis-je changer le stoploss d'un ordre déjà ouvert de manière programmatique ?


https://docs.mql4.com/ru/trading/OrderModify
 
FOReignEXchange:


Bon après-midi. Je suppose que vous n'avez jamais attribué de valeurs aux variables. C'est très facile à faire.

PrixAcheter=Demander


En fait, PriceBuy=Bid ;
 
Roger:

En fait, PriceBuy=Bid ;

Eh bien, c'est une question d'opinion. Et si c'est réaliste, Asc.
 

Bonjour.

Veuillez me dire si l'expression pour calculer la somme totale d'une séquence de nombres delta*(2*Lot+Lot*(i-2))*(i-1)/2est correcte :

for (int i=1 ; i<=MaxOrders ; i++) {

double Sum=Lot ;

Sum+=delta*(2*Lot+Lot*(i-2))*(i-1)/2; }

S'il n'y a pas d'erreurs, comment substituer la valeur "Sum+" dans une expression comme X=("Sum+" + Y)/Z ? ???

Code source :

for (int i=1; i<=MaxOrders; i++)
   {
      if (BUY)
      {
         Price = NormalizeDouble(Ask-delta*i*Point,Digits);
         double Sum=Lot;
         Sum+=delta*(2*Lot+Lot*(i-2))*(i-1)/2;
         DeltaProfitL = (Sum+i*delta*Lot+Lot*R_Lot*R_point+Lot*R_Lot*delta*i)/((2*Lot+Lot*(MaxOrders-1))*MaxOrders/2+Lot+Lot*R_Lot);
         if (takeprofit!=0) TP  = NormalizeDouble(Price + (takeprofit + DeltaProfitL*zero_tp)*Point,Digits); else TP=0;
         if (stoploss!=0)   SL  = NormalizeDouble(Price - stoploss*Point,Digits); else SL=0;     
         OPENORDER ("Buy Limit",Price,SL,TP,i);
      }
   }

Merci d'avance.

 
nemo811:

Bonjour.

Veuillez me dire si l'expression pour calculer la somme totale d'une séquence de nombres delta*(2*Lot+Lot*(i-2))*(i-1)/2est correcte :

pour (int i=1 ; i<=MaxOrders ; i++)

double Sum=Lot ;

Sum+=delta*(2*Lot+Lot*(i-2))*(i-1)/2;

S'il n'y a pas d'erreurs, comment substituer la valeur "Sum+" dans une expression comme X=("Sum+" + Y)/Z ? ???

Merci d'avance.


Ça ne marcherait pas ?

for (int i=1; i<=MaxOrders; i++)

Sum=Sum+delta*(2*Lot+Lot*(i-2))*(i-1)/2;

Seulement, la raison de Sum=Lot n'est pas claire ; et à quoi cela sert-il en général.

 
FOReignEXchange:


Seulement il n'est pas clair pourquoi Sum=Lot ; Et pour quoi faire en général.

J'ai posé une question similaire à la page 81. J'ai tout fait selon la réponse qui m'a été donnée. Mais jusqu'à présent, il n'y a aucun résultat.

Sum=Sum+delta*(2*Lot+Lot*(i-2))*(i-1)/2 ; - ne convient pas à mon calcul.

 
delta*(2*Lot+Lot*(i-2))*(i-1)/2 est la formule du nombre pour la séquence en question. J'ai besoin d'additionner TOUS les nombres de la séquence donnée.
 
nemo811:
delta*(2*Lot+Lot*(i-2))*(i-1)/2 est la formule du nombre de la séquence en question. Je dois faire la somme de TOUS les nombres de la séquence donnée.


J'ai donc écrit une formule pour ça.

Je comprends que vous devez calculer quelque chose comme ceci

Somme =delta*(2*Lot+Lot*(1-2))*(1-1 )/2 +delta*(2*Lot+Lot*(2-2))*(2-1 )/2 +delta*(2*Lot+Lot*(3-2))*(3-1)/2 + ... etc.

Il s'agit de la formule Sum=Sum+delta*(2*Lot+Lot*(i-2))*(i-1)/2, où vous définissez les limites pour i dans le corps de l'opérateur. Lorsque l'opérateur termine, Sum prend la valeur souhaitée. Il est important que la somme soit égale à zéro avant que l'opérateur ne commence à faire des calculs. A la sortie de l'opérateur, Sum prendra la valeur souhaitée.

 

Je ne sais pas combien cela coûterait de commander une EA, mais je suis sûr que je peux la faire fonctionner dans les deux graphiques.

Ah, et en général il est possible de le faire fonctionner une fois pour 2 devises différentes (simultanément sur deux graphiques) et ouvert sur chacune des différentes transactions.

Par exemple, j'ai acheté sur le premier et vendu sur le second ?

Et à la clôture de l'une des transactions ouverte en sens inverse de la transaction déjà ouverte.....

Et peut-être que quelqu'un sait, peut-être qu'il existe un tel conseiller expert, juste une bonne idée m'est venue à l'esprit......

 
for (int i=1; i<=MaxOrders; i++)
   {
      if (BUY)
      {
         Price = NormalizeDouble(Ask-delta*i*Point,Digits);
         double Sum=0;
         Sum=Sum+delta*(2*Lot+Lot*(i-2))*(i-1)/2;   ........
      }
}
Merci. Est-ce que c'est la bonne chose à faire ?