[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 46

 

Si vous connaissez la fonction permettant de calculer le solde total des pertes des positions fermées par SL et le solde total des transactions rentables ouvertes, veuillez nous écrire.

Le calcul du solde des pertes doit commencer à partir de la dernière valeur maximale du dépôt.

 

Bon après-midi ! !! Ma fonction est de jurer avec quarante jurons - je n'en savais manifestement pas beaucoup, et j'ai aussi oublié comment les inventer

void  SELL { double Price1_SELL= (Bid-Dist*Point) ; double TP1_SELL=Price1_SELL-TP*Point; double SL1_SELL=Price1_SELL+SL*Point;
   
   double  Price2_SELL= (Price1_SELL -Dist*Point) ;double   TP2_SELL=Price2_SELL-TP*Point;double   SL2_SELL=Price2_SELL+SL*Point;
   
   double  Price3_SELL=(Price2_SELL -Dist*Point) ; double  TP3_SELL=Price3_SELL-TP*Point; double  SL3_SELL=Price3_SELL+SL*Point;
   
   double  Price4_SELL= (Price3_SELL -Dist*Point) ; double  TP4_SELL=Price4_SELL-TP*Point; double  SL4_SELL=Price4_SELL+SL*Point;
   
   double  Price5_SELL= (Price4_SELL -Dist*Point) ;double   TP5_SELL=Price5_SELL-TP*Point; double  SL5_SELL=Price5_SELL+SL*Point;}
 
Dimka-novitsek:

Bon après-midi ! !! Ma fonction est de jurer avec quarante jurons - je n'en savais manifestement pas beaucoup, et j'ai aussi oublié comment les inventer


Diman ! Bonne nuit ! Tu as besoin de repos, pour non pas une fonction, mais une connerie que tu as écrite...

 
Alors j'ai dit que je ne m'en souvenais pas. Je vais le terminer. Les ordres. Quel est le problème avec le compilateur ?
 
Dimka-novitsek:
Je te le dis, je ne me souviens pas. Je vais l'écrire. Les ordres. Qu'est-ce que le compilateur n'aime pas ?

Ce n'est pas comme ça qu'on écrit les F-i. Lisez le manuel.

 
Merci ! !! Lecture.
 
А. Les agrafes n'étaient pas suffisantes pour elle !
 

Bonjour, mon conseiller expert met des stops en attente. Lors de la vérification dans le testeur, seul SELL_STOP fonctionne, au lieu de BUY_STOP une erreur Order Send error/ Error opening Buy order:130 apparaît.

extern int TrailingStop=30;
//-----------------------------------------------------------------------------------------------+
for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELLSTOP &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                    }
              }
           }
         else // go to short position
           {
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
              }
           }
        }
     }

   
   return(0);

Aidez-moi à trouver la raison !

 

La raison est un manque de logique !

for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELLSTOP &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
Comment comprendre ? Si CELLSTOP, qu'est-ce que BAI a à voir avec ça ?
 
Twilight:

Comment puis-je savoir si les dernières commandes 1-2-3 ont été perdues ?

Et en général, comment puis-je savoir quelle a été la dernière commande ?


Récemment, j'ai écrit une fonction qui, dans le cas du dernier ordre perdant, renvoie le type de cet ordre. En d'autres termes, si fHistory() == 0, le dernier ordre perdant était un achat, fHistory() == 1, le dernier ordre perdant était une vente. Si nous voulons suivre les ordres rentables, changez le signe dans la ligne comme ceci : if(OrderProfit() > 0 ).

//+----------------------------------------------------------------------------+
// Прибыльно или убыточно закрылся последний ордер, и возврат типа такого ордера
int fHistory(){
  for(int i=OrdersHistoryTotal(); i >= 0; i--){              // Выборка в истории
     if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true){   // Если есть следующий в истории
        if(OrderMagicNumber()!=magN) continue;               // Ордера не нашего эксперта
        if(OrderProfit() < 0 ) return (OrderType());         // Если убыток по посл.ордеру вернем тип ордера
     }
  }
  return(-1);
}

La variable magN est l'ordre magique déclaré globalement.

Raison: