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

 
void start()
  {
  double tickvalue = MarketInfo(Symbol(), MODE_TICKVALUE);
  double profitbuy, profitsell;
  
  for(int i = OrdersTotal()-1; i >= 0;i--)
    {
    if(!OrderSelect(i,SELECT_BY_POS)) continue;
    if(OrderSymbol()!=Symbol() || OrderType() >= 2) continue;
    if(OrderType() == 0)
      profitbuy +=((Bid - OrderOpenPrice())/Point*tickvalue*OrderLots())+OrderCommission()+OrderSwap();
    if(OrderType() == 1)
      profitsell+=((OrderOpenPrice() - Ask)/Point*tickvalue*OrderLots())+OrderCommission()+OrderSwap();
    }
  
  Comment(profitbuy+profitsell);
  }
В чем прикол, не могу правильно рассчитать суммарный профит для всех ордеров по одной паре, в терминале пишет одно, а у меня получается другое?

Итак, мои домыслы, своп в терминале нужно нормализовать обязательно, там точность больше двух бывает - это проверил, но как нормализовать - для каждого ордера или суммарно? Непонятно в общем...
Я уже всяко перепробовал, минимальная разница доходила до 0.02 центов, но это все равно не то, что нужно.

Вопрос, как мне мой код подогнать под работу функции - AccountProfit()?

 
Je vois ce que vous voulez dire, est-ce que je compte mal ? Je m'explique : j'ai des transactions ouvertes sur une seule paire, j'exécute ce script sur cette paire et il donne un résultat différent de celui renvoyé par la fonction de profit du compte. La solution que vous proposez ne me convient pas, car au lieu de asc et bid je mettrai les nouvelles données, est-ce clair ?
 
fore-x:
Ah je vois ce que vous voulez dire, est-ce que je compte mal ?

Non, je voulais dire

Вопрос, как мне мой код подогнать под работу функции - AccountProfit()?

Cela semble être bien expliqué là-bas.

Et essayez de normaliser l'expression (OrderOpenPrice() - Ask)/Point en un nombre entier.

 
Roger:

Non, je voulais dire

Cela semble être bien expliqué là-bas.

Et essayez de normaliser l'expression (OrderOpenPrice() - Ask)/Point en un nombre entier.

void start()
  {
  double tickvalue = MarketInfo(Symbol(), MODE_TICKVALUE);
  double profitbuy, profitsell;
  
  for(int i = OrdersTotal()-1; i >= 0;i--)
    {
    if(!OrderSelect(i,SELECT_BY_POS)) continue;
    if(OrderSymbol()!=Symbol() || OrderType() >= 2) continue;
    if(OrderType() == 0)
      Alert(
            OrderTicket(),"   ",
            NormalizeDouble(OrderCommission()+OrderSwap(),2),"   ",
            NormalizeDouble(NormalizeDouble((Bid - OrderOpenPrice())/Point,0)*tickvalue*NormalizeDouble(OrderLots(),2),2)
           );
           
    if(OrderType() == 1)
      Alert(
            OrderTicket(),"   ",
            NormalizeDouble(OrderCommission()+OrderSwap(),2),"   ",
            NormalizeDouble(NormalizeDouble((OrderOpenPrice() - Ask)/Point,0)*tickvalue*NormalizeDouble(OrderLots(),2),2)
           );
    }
  }

Не получается, но хоть со спредом вопрос отпал!
 
Qu'est-ce qui ne marche pas ? Où est la divergence ?
 
Roger:
Qu'est-ce qui ne marche pas ? Où est la divergence ?


Ou est-ce mon alerte qui est gelée et la vôtre qui ne l'est pas ?
 
fore-x:


Et toi, ça a donné quelque chose ?
Suggérez-vous que je devrais aussi préparer un conseiller rapide et commencer à le vérifier ? Eh bien, virez-moi, je préfère le faire virtuellement.
 
Roger:
Qu'est-ce qui ne marche pas ? Où est la divergence ?

J'ai échangé l'offre et la demande, et maintenant c'est comme ça :


C'est mieux :))))

 
Quelle monnaie ?