HistoryDealGetDouble(ticket, DEAL_PROFIT) не считает убыток

Petr Zharuk  

Доброго времени суток, коллеги!


Код ниже не считает мне убыточные сделки. Хотя они есть. Только профит. Прошу поделится мыслями.


void closePart()

    {

     double profit = 0;

     double losses = 0;

     int loss = 0;

     int wins = 0;

     int deals = 0;

     datetime end = TimeCurrent();

     datetime start = end - 3 * PeriodSeconds(PERIOD_D1);

     HistorySelect(start, end);

     int totalDeals = HistoryDealsTotal();

     if(totalDeals > 0)

         {

          for(int i = 0; i < totalDeals; i++)

              {

               ulong ticket = HistoryDealGetTicket(i);

               if(ticket > 0)

                   {

                    if(HistoryDealGetInteger(ticket, DEAL_MAGIC) == magicn)

                        {

                         if(HistoryDealGetInteger(ticket, DEAL_ENTRY) == DEAL_ENTRY_OUT)

                             {

                              deals++;

                              double result = HistoryDealGetDouble(ticket, DEAL_PROFIT);

                              if(result > 0)

                                   profit += result;

                              if(result > 0)

                                   wins++;

                              if(result < 0)

                                   losses += result;

                              if(result < 0)

                                   loss++;

                             }

                        }

                   }

              }

              Comment("Deals ",deals,"\n","Profit ",profit,"\n","Losses ",losses,"\n","Wins ",wins,"\n","Loss ",loss);

         }

    }


Получаю вот такое:


Sergey Gridnev  
Petr Zharuk:

Доброго времени суток, коллеги!


Код ниже не считает мне убыточные сделки. Хотя они есть. Только профит. Прошу поделится мыслями.


А как происходит закрытие убыточной позиции?
Petr Zharuk  
Sergey Gridnev #:
А как происходит закрытие убыточной позиции?

Руками в окне терминала.

Sergey Gridnev  
Petr Zharuk #:

Руками в окне терминала.

Там не происходит каких-нибудь разворотов?
Alexey Viktorov  
Petr Zharuk #:

Руками в окне терминала.

Если руками, то не факт, что магик будет не равен нулю, а в коде есть проверка магика.

Sergey Gridnev  
Alexey Viktorov #:

Если руками, то не факт, что магик будет не равен нулю, а в коде есть проверка магика.

Точно
Petr Zharuk  
Alexey Viktorov #:

Если руками, то не факт, что магик будет не равен нулю, а в коде есть проверка магика.

Вы правы. Проверил, магик пустой в закрытых руками сделках. 

Есть мысли как такие сделки мониторить?

Alexey Viktorov  
Petr Zharuk #:

Вы правы. Проверил, магик пустой в закрытых руками сделках. 

Есть мысли как такие сделки мониторить?

Ну… если открытие с магиком, то сначала проверить магик на DEAL_ENTRY_IN и потом выбрав сделки по ID позиции читать профит в сделке DEAL_ENTRY_OUT.

Или наоборот, получив магик ==0 выбрать сделки по ID позиции и прочесть магик в сделке DEAL_ENTRY_IN

Или вообще отключить проверку магика.