Хочу ли я?

 
В тестере глючит то ли OrderTicket(), то ли OrderClose(). При попытке закрыть ордер функцией OrderClose(), указывая в ней в
качестве тикета число возвращаемое OrderTicket() выдается ошибка - неверный тикет; Если же в качестве тикета для OrderClose()
указывать абсолютное количество ордеров в истории то, все закрывается нормально. А OrderModyfi() нормально работает с тикетом
возвращаемым OrderTicket(); Вот пример не работающего OrderClose(), закоментированный вариант - работает.

int start()
  {
    static int old_hh,old_mm,j,tiket;
    int mm,hh, total;
    datetime dt[5];
    bool rtn,cls;
//----
  dt[0]=D'2007.12.03';
  dt[1]=D'2007.12.04'; 
  
   if(dt[0] < TimeCurrent()) rtn=true; 
   if(dt[1] < TimeCurrent()) rtn=false; 
    
    if(!rtn) return(0);
//----   
    mm=Minute();
    hh=Hour();
    
    if(mm != old_mm)
     {
      old_mm=mm;
       if( mm %45==0 && mm != 0)
        {
         if(OrderSelect(1, SELECT_BY_TICKET)==true)
          {                  
           cls=OrderClose(OrderTicket(),0.1,Ask,3,Red);
       //  cls=OrderClose(j,0.1,Ask,3,Red);
            if(!cls)Print("Ошибка close - ",GetLastError()); 
            }           
          }
        }
//----    
     if(hh != old_hh)
      {
       old_hh=hh;
            total=OrdersTotal();
       if(total==0)
        {
        tiket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"DDD",4,0,Green); 
        j++;
        if(tiket==-1) Print("Ошибка open - ",GetLastError( ));  
         }
       }
   
   return(0);
  }
 
Я бы на месте модераторов только за одно название темы забанил. Без предупреждения и навечно!
 
KimIV:
Я бы на месте модераторов только за одно название темы забанил. Без предупреждения и навечно!
Вот те раз!! А я то думал - мне пасиба скажут и канфету дадут:))
 
Aleku:
В тестере глючит то ли OrderTicket(), то ли OrderClose(). При попытке закрыть ордер функцией OrderClose(), указывая в ней в
качестве тикета число возвращаемое OrderTicket() выдается ошибка - неверный тикет; Если же в качестве тикета для OrderClose()
указывать абсолютное количество ордеров в истории то, все закрывается нормально. А OrderModyfi() нормально работает с тикетом
возвращаемым OrderTicket(); Вот пример не работающего OrderClose(), закоментированный вариант - работает.



Вы что-нибудь слышали о функции OrderSelect? И почему Вы "не заметили" в описании функции OrderTicket вот такое "пожелаение":
Возвращает номер тикета для текущего выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().
 
Aleku писал (а):
Вот те раз!! А я то думал - мне пасиба скажут и канфету дадут:))

Не в этот раз!

Изучите внимательнее назначение функции OrderSelect. Когда изучите и что-нибудь поймёте, будете должны разработчикам коробку конфет :-)

 
Rosh:
Aleku:
В тестере глючит то ли OrderTicket(), то ли OrderClose(). При попытке закрыть ордер функцией OrderClose(), указывая в ней в
качестве тикета число возвращаемое OrderTicket() выдается ошибка - неверный тикет; Если же в качестве тикета для OrderClose()
указывать абсолютное количество ордеров в истории то, все закрывается нормально. А OrderModyfi() нормально работает с тикетом
возвращаемым OrderTicket(); Вот пример не работающего OrderClose(), закоментированный вариант - работает.



Вы что-нибудь слышали о функции OrderSelect? И почему Вы "не заметили" в описании функции OrderTicket вот такое "пожелаение":
Возвращает номер тикета для текущего выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().


Про функцию OrderSelekt() я и слышал и читал и даже пользуюсь ей регуляно. Если внимательно посмотреть вышеприведенный код, то можно увидеть
что перед вызовом OrderClose() в которой присутствует Order Ticket() как раз и вызывается OrderSelekt().

Повторю еще раз если вместо OrderClose() поставить OrderModify(), то модификация успешно выполняется.
 
Aleku:
         if(OrderSelect(1, SELECT_BY_TICKET)==true;

Сильно написано. Я плакал. Посмотрите внимательно описание функции. Думаю что у вас никогда не будет ордера с тикером 1.
 
Talex:
Aleku:
         if(OrderSelect(1, SELECT_BY_TICKET)==true;

Сильно написано. Я плакал. Посмотрите внимательно описание функции. Думаю что у вас никогда не будет ордера с тикером 1.
В реале не будет, а в тестере будет. Ошибка в другом.
 
Aleku:

Про функцию OrderSelekt() я и слышал и читал и даже пользуюсь ей регуляно. Если внимательно посмотреть вышеприведенный код, то можно увидеть
что перед вызовом OrderClose() в которой присутствует Order Ticket() как раз и вызывается OrderSelekt().

Повторю еще раз если вместо OrderClose() поставить OrderModify(), то модификация успешно выполняется.

У Вас написано :

         if(OrderSelect(1, SELECT_BY_TICKET)==true)
Это означет - "дай мне ордер, который имеет или имел номер тикета равным единица". Не ордер в списке на позиции единица, а ордер с тикетом единица. Вот Вы получаете этот ордер и пытаетесь его закрыть. Сколько раз Вам это удастся сделать?
 
Talex писал (а):
Сильно написано. Я плакал. Посмотрите внимательно описание функции. Думаю что у вас никогда не будет ордера с тикером 1.
Зачем подсказали? Надо было, чтоб он сам дошёл... Спросил бы вежливо, где я неправ? Популярно объяснили бы. А то глюк тестера сразу же...
 
Rosh:
Talex:
Aleku:
         if(OrderSelect(1, SELECT_BY_TICKET)==true;

Сильно написано. Я плакал. Посмотрите внимательно описание функции. Думаю что у вас никогда не будет ордера с тикером 1.
В реале не будет, а в тестере будет. Ошибка в другом.

В тестере сработает только один раз.