Количество непрерывных проигрышей - страница 2

 
Roman.:


что-то пока не могу разобраться - вроде простейшая задачка учета количества последовательных самых свежих убытков. Счетчик не правильно считает:


А куда пропало ?

Iteration =0;

 
Vinin:


А куда пропало ?

Iteration =0;


итератион = 0 - у меня выведено во внешние переменные в советнике.
 
Roman.:

итератион = 0 - у меня выведено во внешние переменные в советнике.

Тогда тем более нужно обнулять
 

Вот всё считает и не обнуляется:

int start()
{
 int MagicNumber = 7578;
 int Iteration = 0;
 double Time_at_History_Current = 0;
 double Time_at_History_Previos = 0;
   
 if(OrdersHistoryTotal() != 0)
   {
    for(int counter = OrdersHistoryTotal()-1; counter >= 0; counter--)
      {
       OrderSelect(counter, SELECT_BY_POS, MODE_HISTORY);
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderType() == OP_BUY || OrderType() == OP_SELL)
            {
             if(OrderProfit() < 0) 
               Time_at_History_Current = OrderCloseTime( );
             Print(" Time_at_History_Current_in_curcle = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));
             Print(" Time_at_History_Previos_in_curcle = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
             if(Time_at_History_Current != Time_at_History_Previos)
               {
                Time_at_History_Previos = Time_at_History_Current ;
                Iteration++;
                Print("Iteration at History in if... = ",  Iteration);
               }   
             else
               {
                if(OrderProfit() >= 0)
                  break;
               }
            }
         }
      }
   }
 Print("Iteration at History = ",  Iteration, " Time_at_History_Current = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS),
       " Time_at_History_Previos = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
 return(0);
}

 
Vinin:

Тогда тем более нужно обнулять


я позже в коде обнуляю при открытии сделок и при положительной последней. Я еще ошибку нашел - здесь

за счет этого в этой конструкции при 2-х убыточных сделках Iteration = 2, и за счет двух ордеров в истории время закрытия последнего и предпоследнего разное - условие постоянно

выполняется и счетчик закрытых ордеров накручивается из-за этого...

Print(" Time_at_History_Current_в цикле = ", Time_at_History_Current);
              Print(" Time_at_History_Previos_в цикле = ", Time_at_History_Previos);
              Print("Iteration at History до сравнения = ",  Iteration);
              if ( Time_at_History_Current != Time_at_History_Previos )
              {
                 Time_at_History_Previos = Time_at_History_Current ;
                 Iteration++;
                 Print("Iteration at History после сравнения = ",  Iteration);
 
ALEX_SPB_RU:

Вот всё считает и не обнуляется:


ща попробую...
 
Roman.:

ща попробую...
Только я что-то с проверкой по времени так и не пойму, может с просоня, а может и ещё хуже.....
 
Vinin:

А как вставить картинки в натуральную величину????

Вот мой скрин 3-мя постами выше, например

 
ALEX_SPB_RU:

А как вставить картинки в натуральную величину????

Вот мой скрин 3-мя постами выше, например


Я не знаю. Нажимаю на скрин лев кл мыши и он разворачивается в натуральную величину. Попробуй мой развернуть...
 
Roman.:

ща попробую...


Только вот проблема может быть одна. Надо предварительно позиции сортировать по времени закрытия.

Integer как-то выкладывал функции для сортировки ордеров (по времени открытия, по времени закрытия)

Особенно это актуально если одновременно открыто более одной позиции.

Тогда их взаимное положение не совсем определенное (какой из них раньше попадется), особенно если один в плюс, другой в минус закрыт