Доброго времени суток, Прошу помощи по Коду

 
double ProfitCalculator(int Type)
   {
      double Profit= 0;
      for (int i = OrdersTotal()-1;i>=0;i--)
         {
            if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
               {
                  if (OrderType()==Type && OrderMagicNumber()==MAGIC)
                     {
                         Profit =Profit+OrderProfit(); 
                     }  
                }  
         }
return(Profit);
   }

//----------------------------------------------------



double ReturnOrderProfit(int Ticket)

   {

double orderprofit 0 ; 

     if (OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)==true)

        {

         orderprofit = OrderProfit();

        }

   return orderprofit;     

   }

//-----------------------------------------------------


Не могу разобраться в чем причина, берем один ордер , подставляем в функции, в режиме реальной торговли все норм , результаты сходятся, в тестере результаты разные. Есть мысли где ошибка ?

 
Ivan Elsukov:


Не могу разобраться в чем причина, берем один ордер , подставляем в функции, в режиме реальной торговли все норм , результаты сходятся, в тестере результаты разные. Есть мысли где ошибка ?

Вот тут посмотрите правильно составленные условия

Помогите, пжл, доработать советник на основе Машек.
Помогите, пжл, доработать советник на основе Машек.
  • 2018.08.22
  • www.mql5.com
Всем доброго дня! Народ, помогите, пжл, немного модернизировать советник...
 
Vitaly Muzichenko:

Вот тут посмотрите правильно составленные условия

Спасибо любезный за информацию, но эта функция по сути та же самая, без учета свопов и комиссий, на сколько я знаю во время теста советник не учитывает ни то ни другое.

 
Ivan Elsukov:

Спасибо любезный за информацию, но эта функция по сути та же самая, без учета свопов и комиссий, на сколько я знаю во время теста советник не учитывает ни то ни другое.

Вы очень мало знаете, если такой вывод.

Так-же сравните ту функцию, со своей, и найдите отличие

 
Ivan Elsukov:

Не могу разобраться в чем причина, берем один ордер , подставляем в функции, в режиме реальной торговли все норм , результаты сходятся, в тестере результаты разные. Есть мысли где ошибка ?

double ProfitCalculator(int Type)
   {
   double Profit=0.0;
   for(int i=OrdersTotal()-1; i>=0; i--) 
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType()<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC){
   if (OrderType()>1 || Type>1 || OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC) continue;
      if (OrderType()==Type) Profit+=OrderProfit()+OrderCommission()+OrderSwap(); 
         }  
return(Profit);
   }

Если нужен профит последней позиции

double LastProfit(int Type)
   {
   datetime t=0;
   double Profit=0.0;
   for(int i=OrdersTotal()-1; i>=0; i--) 
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType()<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC){
   if (OrderType()>1 || Type>1 || OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC) continue;
      if (OrderType()==Type && t<OrderOpenTime()) {t=OrderOpenTime(); Profit=OrderProfit()+OrderCommission()+OrderSwap();} 
         }  
return(Profit);
   }
 
похоже на формулу вычисления
 
(OrderType()==Type)
 

FXwin

Зачем лишняя проверка  

if (OrderType()>1 || Type>1 || OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC) continue;


 если в предыдущей мы всё лишнее уже отсекли?

 
Profit =Profit+OrderProfit();

Прибыль накапливается по всем ордерам

orderprofit = OrderProfit();
А это прибыль определенного ордера
 
Vitaly Gorbunov:

FXwin

Зачем лишняя проверка  
если в предыдущей мы всё лишнее уже отсекли?

Лучше перебздеть, чем недобздеть))

 
FXwin:

Лучше перебздеть, чем недобздеть))

В кабак или с санузел по два раза заходите. Вдруг не зашел