Stops suiveurs et bénéfices suiveurs - page 3

 
deVries:


Merci pour les corrections.

Si nous utilisons count=count-1 ; alors il n'est pas nécessaire d'utiliser la boucle 'for' que j'essayais d'éclaircir dans deux messages précédents.

Et parfois, cela vaut la peine d'essayer. Comme tout à l'heure, j'ai corrigé quelques erreurs par moi-même et cela m'a donné un tel plaisir !

Merci encore une fois. La partie Take Profit fonctionne jusqu'à présent comme prévu.

 
Arav007:


Merci pour les corrections.

Si nous utilisons count=count-1 ; alors il n'y a pas besoin d'utiliser la boucle 'for' que j'ai essayé d'éclaircir dans deux messages précédents.

Et parfois, ça vaut la peine d'essayer. Comme tout à l'heure, j'ai corrigé quelques erreurs par moi-même et cela m'a donné un tel plaisir !

Merci encore une fois. La partie Take Profit fonctionne jusqu'à présent comme prévu.


Continuez à tester et à lire les codes que vous voyez et vous apprendrez beaucoup,

vous pouvez faire vous-même beaucoup d'apprentissage

si vous essayez de comprendre et d'explorer les choses

en les testant et en les créant sur votre propre compte de test 'démo'.

 
deVries:


continuez à tester et à lire les codes que vous voyez et vous apprenez beaucoup,

vous pouvez faire vous-même beaucoup d'apprentissage

si vous essayez de comprendre et d'explorer les choses

avec des tests et en les créant sur votre propre compte de test "démo".


Oui, j'essaie de comprendre ce que je veux dire.

Maintenant, pour la partie'Stop Loss Trailing', j'ai pensé à quelque chose.

La condition pour démarrer la boucle 'Trailing Stop' :

if(OrdersTotal()>0){

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

Trailing Stops ;

}

}

Je pensais que cette boucle serait exécutée autant de fois que le nombre total d'ordres ouverts. Et mon objectif est de ne pas traîner les stops pour le dernier/troisième ordre.

Donc si j'arrête la boucle au deuxième ordre, comment cela se passera-t-il ?

for(cnt=OrdersTotal()-1;cnt>0;cnt--)

 
Arav007:


Oui, j'essaie de comprendre ce que je veux dire.

Maintenant, pour la partie 'Stop Loss Trailing', j'ai pensé à quelque chose.

La condition pour démarrer la boucle 'Trailing Stop' :

if(OrdersTotal()>0){

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

Trailing Stops ;

}

}

Je pensais que cette boucle serait exécutée autant de fois que le nombre total d'ordres ouverts. Et mon objectif est de ne pas traîner les stops pour le dernier/troisième ordre.

Donc si j'arrête la boucle au deuxième ordre, comment cela se passera-t-il ?

for(cnt=OrdersTotal()-1;cnt>0;cnt--)


trouver le bon symbole et le bon numéro magique

alors c'est un trade de votre EA maintenant vérifiez si Bid/Ask est à xx pips de l'ordreopenprice()

Faites quelques recherches ici et vous trouverez des exemples que vous pourrez utiliser.

 
deVries:


trouvez le bon symbole et le bon numéro magique

alors c'est un trade de votre EA maintenant vérifiez si Bid/Ask est à xx pips de l'orderopenprice()

Faites quelques recherches ici et vous trouverez des exemples que vous pourrez utiliser.


J'ai la vérification et la partie conditionnelle.

 if(OrdersTotal()>0){



        for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

        

        if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;

        if(OrderSymbol() == Symbol() && OrderMagicNumber() ==  MagicNumber){

sl     = OrderStopLoss(); // Stop Loss. 

                tStopLoss = NormalizeDouble(OrderStopLoss(), Digits); // Stop Loss. 

                

                if(OrderType()==OP_BUY){

                

                        if(Ask> NormalizeDouble(OrderOpenPrice()+TrailingStart* vPoint,Digits)

                        && tStopLoss < NormalizeDouble(Bid-(TrailingStop+TrailingStep)*vPoint,Digits)){

 tStopLoss = NormalizeDouble(Bid-TrailingStop*vPoint,Digits); 

}

}

Mais ici, je ne comprends pas comment distinguer les transactions. La fonction 'Trailing Stop' est appelée au début du programme.

 

*Après avoir atteint une certaine limite de profit, disons 10 pips, le Stop Loss passera à 5 pips. Maintenant, si cette transaction revient à 5 pips, les "deux tiers" de la transaction seront fermés.

*Le tiers restant restera en cours et le stop suiveur ne sera pas appliqué.

Vous avez trois trades, comment voulez-vous gérer ces trois trades ?

pour qu'ils fassent ce que vous voulez ?

ou lequel doit être modifié, après certains profits...

 
deVries:

*Après avoir atteint une certaine limite de profit, disons 10 pips, le Stop Loss passera à 5 pips. Maintenant, si cette transaction revient à 5 pips, les "deux tiers" de la transaction seront fermés.

*Le tiers restant restera en cours et le stop suiveur ne sera pas appliqué.

Vous avez trois trades, comment voulez-vous gérer ces trois trades ?

pour qu'ils fassent ce que vous voulez ?

ou lequel doit être modifié, après un certain profit...


Pour simplifier les choses, j'ai décidé d'opter pour "trois" transactions séparées du même lot, donc si deux d'entre elles sont fermées, "deux tiers" des transactions totales (lots) seront fermées.

Et la transaction restante (un tiers) continuera à fonctionner, c'est-à-dire que le "Trailing Stop" ne lui sera pas appliqué.

LeStop Loss sera déplacé à un certain nombre de pips de profit pour les deux premiers trades mais pour le troisième, il ne bougera pas.

 
Arav007:


Pour simplifier les choses, j'ai décidé d'opter pour "trois" trades séparés du même lot. Ainsi, si deux d'entre eux sont fermés, "deux tiers" du total des trades (lots) seront fermés.

Et la transaction restante (un tiers) continuera à fonctionner, c'est-à-dire que le "Trailing Stop" ne lui sera pas appliqué.

Le Stop Loss sera déplacé à un certain nombre de pips de profit pour les deux premiers trades mais pour le troisième, il ne bougera pas.


Vous devez utiliser certaines fonctions pour que la modification soit bien faite.

A ce stade, vous devez trouver un moyen de sélectionner le trade que vous souhaitez modifier.

Vérifiez les fonctions ici Trade Functions et voyez si vous pouvez sélectionner le trade 1.

 
deVries:


Vous devez utiliser certaines fonctions pour que la modification soit bien effectuée.

pour l'instant, vous devez trouver un moyen de sélectionner le trade que vous devez modifier.

Vérifiez les fonctions ici Trade Functions et voyez si vous pouvez sélectionner le métier 1.


Le numéro d'index peut-il être comparé au numéro de ticket ?

   if (count==3) 

    {

  SellOrder_1=OrderSend(Symbol() , iOrderType_Sell , LotSize,OpenPrice,Slippage ,dStopLossPrice ,dTakeProfitPrice_1 , "Sell Order",MagicNumber , 0,Red);

                

    if (SellOrder_1>0) //Checking if the order was opened or not

      { 

      sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Sell order 1 sent successfully. Ticket=" + SellOrder_1;

      Sell_Order_Ticket_1=SellOrder_1;

      count = count - 1; 

      }

     else {

          iLastError = GetLastError();                               

          sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Error sending sell order 1. Error code=" + ErrorDescription(iLastError);



} 

} 

//Trailing Stop Function 

if(OrdersTotal()>0){

//

        for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

        

        if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;

        if(OrderSymbol() == Symbol() && OrderMagicNumber() ==  MagicNumber){

                sl     = OrderStopLoss(); // Stop Loss. 

                tStopLoss = NormalizeDouble(OrderStopLoss(), Digits); // Stop Loss. 

                

                if(OrderType()==OP_BUY){

if (cnt==Sell_Order_Ticket_1){

Proceed to Next 

} 

Veuillez vous référer aux parties Color Blocked ci-dessus.

Merci

 
Arav007:


Le numéro d'index peut-il être comparé au numéro de ticket ?

Veuillez vous référer aux parties Color Blocked ci-dessus.

Merci


for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

Le total de vos commandes est de 3 transactions

faites ceci

//for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

for(cnt= 3 -1;cnt>=0;cnt--)
   {
   Print ("cnt =  ",cnt);
   }

Que lisez-vous si vous ouvrez le Terminal et regardez les Experts ?

Sell_Order_Ticket_1 aura-t-il la même valeur que cnt ?

Si oui, pouvez-vous me prouver que c'est le cas ?

Si non, pourquoi ?