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

 
Vovo4ka:

Pourquoi le profit pris, n'est pas celui qui devrait être..... lorsque le lot est fermé, mais lorsque le profit devrait être de 30pp dans le profit est écrit d'une manière complètement différente.....


Qu'est-ce que c'est que cette absurdité : "calculer essentiellement la différence entre l'ouverture d'un ordre et sa fermeture) et summarise ?????? ...

Et sur quels volumes ? Vous n'avez pas besoin de savoir ? Le prix d'un point sera différent...

Le profit n'est pas calculé en points, mais en devises, en fonction du volume des positions négociées.

 
Vovo4ka:

Pour une raison quelconque, le bénéfice est pris, pas celui qui devrait être..... lorsque le lot est fermé, inversement lorsque le bénéfice devrait être de 30pp dans le bénéfice, il est écrit complètement différent.....


Le bénéfice de l'ordre n'est pas en points, mais dans la monnaie de dépôt.

 

Correct - ici la perte totale (perte) est calculée à partir de l'historique des ordres LOCAUX fermés à perte.

C'est un peu différent pour vous, mais le principe est le même.

//---------------------расчет по истории ордеров номера очередной итерации----------------------------------------------- 
  Iteration = 0; // зануляем инерации перед их учетом в цикле по истории
  Sum_Loss = 0;  // суммарный убыток по этим итерациям
  datetime 
  Time_at_History_Current = 0,
  Time_at_History_Previos = 0;      
  if(OrdersHistoryTotal() != 0)
   {
    for(int counter = OrdersHistoryTotal()-1; counter >= 0; counter--)
      {
       OrderSelect(counter, SELECT_BY_POS, MODE_HISTORY);
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderType() == OP_BUY || OrderType() == OP_SELL)
            {
             if(OrderProfit() < 0) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера
                                   // для последующего его анализа при подсчете количества итераций
                {
                 double lastLoss = OrderProfit();
                 Sum_Loss=Sum_Loss+lastLoss;  // считаем общий убыток по закрытым подряд убыточным ордерам
                 Time_at_History_Current = OrderCloseTime();
                } 
             
             //Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));
             //Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
             
             if(Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
               {
                Time_at_History_Previos = Time_at_History_Current ;
                Iteration++;              
                //Print("Iteration at History в условии сравнения  = ",  Iteration);
               }   
             else // они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
               {
                if(OrderProfit() >= 0) 
                  break;
               }
            }
         }
      }
   }
 
PapaYozh:


Le bénéfice de l'ordre n'est pas en pips, mais dans la devise du dépôt.


j'en ai besoin en pips, le lot est fixé à 1.... mais le profit ou la perte ne correspond pas à la réalité..... et je veux calculer le nombre de pips en profit et en drawdown plus facilement et les additionner pour obtenir le résultat=)
 
Roman.:

Correct - ici la perte totale (perte) est calculée à partir de l'historique des ordres LOCAUX fermés à perte.

C'est un peu différent pour vous, mais le principe est le même.


Merci, je vais m'en occuper maintenant=)
 
Vovo4ka:

J'en ai besoin en pips, le lot est fixé à 1.... mais le profit ou la perte ne correspond pas au réel..... et je veux calculer le nombre de pips en profit et en drawdown plus facilement et les additionner pour obtenir le résultat=)


Encore une fois :

Le bénéfice de l'ordre n' est pas en pips, mais dans la devise du dépôt.

 
Vovo4ka:

J'en ai besoin en points, le lot est constant 1.... mais pour une raison quelconque le profit ou la perte ne correspond pas à la réalité un..... à moi je veux calculer le nombre de points de profit et de drawdown plus facile à additionner et obtenir le résultat =)

Eh bien, si le lot est constant, divisez le bénéfice du testeur par le point. Vous obtiendrez le bénéfice en pips.
 

La dernière fonction publiée par Kim, GetPotentialLossInCurrency (https://forum.mql4.com/ru/11287/page107), ne compte que les ordres ouverts :

if (OrderType()==OP_BUY) {
                pl+=(OrderOpenPrice()-OrderStopLoss())/po*OrderLots()*tv;
              }
if (OrderType()==OP_SELL) {
                pl+=(OrderStopLoss()-OrderOpenPrice())/po*OrderLots()*tv;
              }
J'ai essayé de l'étendre un peu pour inclure les ordres en attente (en ajoutant simplement d'autres types) :
if (OrderType()==OP_BUY || OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP) {
                     pl+=(OrderOpenPrice()-OrderStopLoss())/po*OrderLots()*tv;
                     }
if (OrderType()==OP_SELL || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP) {
                     pl+=(OrderStopLoss()-OrderOpenPrice())/po*OrderLots()*tv;
                  }
mais les commandes en cours ne sont pas prises en compte. Sont-ils comptés différemment ? La documentation ne dit rien à ce sujet.....
 
artmedia70:
Affichez tous les drapeaux sur le graphique avec Commentaire` et vous verrez pourquoi le trade s'ouvre.

je l'ai mis, maintenant les transactions ne s'ouvrent pas du tout.
Dossiers :
1_1.mq4  21 kb
 
Ivn:

Je l'ai mis, et maintenant il ne fait plus de sdeks du tout.

Pourquoi tu ferais ça ? Affichez tous les drapeaux d'un commentaire en une seule fois.

Ici :

int start()
  {
//----


 RefreshRates();                        // Обновление данных
 Symb=Symbol();
 int cnt, ticket, total;
 int ABuy=0;                               // флаг на покупку /продажу   
 int ASell=0;   
 
   Comment(".....Вот сюда и пишите вывод всех флагов......");

 if (NewBar() == true)
{        
     x=x0; //передаем данные 
    x1=x01;
    x2=x02;