Просчет профита закрытых ордеров "HELP" - страница 6

 
Aleksey Semenov:
если у вас например терминал забит сотнями неиспользуемых глоб переменных то да - переборка закончится печально, если нет то работает вполне быстро, если написать правильно
свой лог можно соорудить
 
Aleksey Semenov:
если у вас например терминал забит сотнями неиспользуемых глоб переменных то да - переборка закончится печально, если нет то работает вполне быстро, если написать правильно
Я не против, но лучше всё-же по возможности находить более лёгкие пути. Или мы не ищем лёгких путей) ?
 
Vitaly Muzichenko:
Я не против, но лучше всё-же по возможности находить более лёгкие пути. Или мы не ищем лёгких путей) ?
главно начать писать самому
 
Vitaly Muzichenko:
Я не против, но лучше всё-же по возможности находить более лёгкие пути. Или мы не ищем лёгких путей) ?
Дак где же этот лёгкий путь, так вопрос и не решился.
 

Так и не решили задачу, а ведь это нужная функция и многие этим пользуются и не знают, что профит закрытых ордеров не правильно считает.
Поэтому простое решение:   LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();  не прокатит, а все так и ляпают в своих кодах с перебором исторических ордеров.

Грамотного решения даже по всей сети нет - "google" говорит. Получается что все пользуются стандартным не правильным решением, или правильным но только оного последнего ордера ?

 
Natashe4ka:

Так и не решили задачу, а ведь это нужная функция и многие этим пользуются и не знают, что профит закрытых ордеров не правильно считает.
Поэтому простое решение:   LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();  не прокатит, а все так и ляпают в своих кодах с перебором исторических ордеров.

Грамотного решения даже по всей сети нет - "google" говорит. Получается что все пользуются стандартным не правильным решением, или правильным но только оного последнего ордера ?

Мы посоветовали, Вы не поняли....
 
Renat Akhtyamov:
Мы посоветовали, Вы не поняли....

Хорошо, тогда по полочкам: есть время закрытия ордеров, есть тикет или номер ордеров которые совпадают по времени закрытия. Как это объединить и посчитать профит этих ордеров?
Вроде не сложно, но так и не понятно. 

 

Так считает правильно, но только если закрылись 1-3 ордера, если больше 3-х, то профит с не понятным значением получается.
Что ещё можно тут добавить? 

//+----------------------------------------------------------------------------+
//     Возвращает суммарный профит в валюте депозита серии закрытых ордеров    |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
  double LastProfit=0;
  datetime t=0;
   for(i=OrdersHistoryTotal()-1;i>=0;i--)
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
       if (OrderSymbol()!=Symbol()||OrderMagicNumber()!=magic) continue;
       if (t<OrderCloseTime()) {t=OrderCloseTime();}
       if ((op<0||OrderType()==op) && t==OrderCloseTime()) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();}
       }
  return(LastProfit);
   }
 
Natashe4ka:

Так считает правильно, но только если закрылись 1-3 ордера, если больше 3-х, то профит с не понятным значением получается.
Что ещё можно тут добавить? 

//+----------------------------------------------------------------------------+
//     Возвращает суммарный профит в валюте депозита серии закрытых ордеров    |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
  double LastProfit=0;
  datetime t=0;
   for(i=OrdersHistoryTotal()-1;i>=0;i--)
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
       if (OrderSymbol()!=Symbol()||OrderMagicNumber()!=magic) continue;
       if (t<OrderCloseTime()) {t=OrderCloseTime();}
       if ((op<0||OrderType()==op) && t==OrderCloseTime()) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();}
       }
  return(LastProfit);
   }

Вот Вы не пытались лично задаться вопросом  - "Почему и что написано в моём коде?"

Я уже Вам выше трижды сказал что и  как нужно сделать.

Выкладывайте весь код, иначе не сдвинуться с мёртвой точки.

 
Natashe4ka:

Хорошо, тогда по полочкам: есть время закрытия ордеров, есть тикет или номер ордеров которые совпадают по времени закрытия. Как это объединить и посчитать профит этих ордеров?
Вроде не сложно, но так и не понятно. 

и где это все это есть? вы это записываете куда-то в переменную или массив? покажите сначала где вы это храните, дальше будет видно что дальше делать.