Проблемы с нахождением точки безубытка. - страница 3

 
Anton Novokhatskii #:

что такое op и mn?

op = OP_BUY  или OP_SELL

mn = MagicNumber

 
Volodymyr Zubov #:

op = OP_BUY  или OP_SELL

mn = MagicNumber

Там еще po. без кода. Хорошо бы если можно)))

 
Valeriy Yastremskiy #:

Там еще po. без кода. Хорошо бы если можно)))

po.PositionType()==OP_SELL && (op<0 || po.PositionType()==op))
po.PositionType()

Это библиотека MQL5 которая используется и компилируется в файл ex5

 
#include <Trade\SymbolInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\TerminalInfo.mqh>
#include <Trade\AccountInfo.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\OrderInfo.mqh>
#include <Indicators\Trend.mqh>
#include <Trade\DealInfo.mqh>
#include <Indicators\Oscilators.mqh>
 

вот как она на МТ 4 ищется - на МТ 5- формулы - теже там цена, объем...

робот есть в коде база на МТ4 https://www.mql5.com/ru/code/viewcode/20612/185705/ea_rsi_averange.mq4


  double MaxOrderBuy=0,MinOrderSell=0,MinOrderBuy=0,MaxOrderSell=0,OL=0,LB=0,LS=0,PB=0,PS=0;
   double OSL,OTP,OOP,SL,Profit=0,ProfitB=0,ProfitS=0;
   int i,b=0,s=0,tip;
   for (i=0; i<OrdersTotal(); i++)
   {    
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
         if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
         {
            tip = OrderType();
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            OL = OrderLots();
            if (tip==OP_BUY)            
            {  
               PB += OOP*OL; LB+=OL;
               ProfitB+=OrderProfit()+OrderCommission()+OrderSwap();
               b++;
               if (MaxOrderBuy < OOP || MaxOrderBuy==0) MaxOrderBuy = OOP;
               if (MinOrderBuy > OOP || MinOrderBuy==0) MinOrderBuy = OOP;
            }                                        
            if (tip==OP_SELL)        
            {
               PS += OOP*OL; LS+=OL;
               ProfitS+=OrderProfit()+OrderCommission()+OrderSwap();
               s++;
               if (MinOrderSell > OOP || MinOrderSell==0) MinOrderSell = OOP;
               if (MaxOrderSell < OOP || MaxOrderSell==0) MaxOrderSell = OOP;
            }
         }
      }
   }
   //---
   Profit=ProfitB+ProfitS;
   double NLb=0,NLs=0;
   if (b>0) NLb = NormalizeDouble(PB/LB,Digits);
   if (s>0) NLs = NormalizeDouble(PS/LS,Digits); 
 
Volodymyr Zubov #:
Спасибо) так понятно)