Истечение срока отложенного ордера, нужна помощь

 
Добрый вечер, уважаемые! Помогите, пожалуйста... Как нужно составить код, чтобы отложенный ордер, например, buylimit, несработавший к примеру в течении 10 МИНУТ, удалился. Что нужно написать вместо expiration (именно в минутах, например 10 минут)? Спасибо.
 
artem99 >>:
Добрый вечер, уважаемые! Помогите, пожалуйста... Как нужно составить код, чтобы отложенный ордер, например, buylimit, несработавший к примеру в течении 10 МИНУТ, удалился. Что нужно написать вместо expiration (именно в минутах, например 10 минут)? Спасибо.

ЕМНИП TimeCurrent() + <Время жизни в секундах>.

ЕМНИП, опять же, expiration поддерживается не везде. По кр. мере, я этой фичей не пользуюсь, удаляю руками.

 
TheXpert писал(а) >>

ЕМНИП TimeCurrent() + <Время жизни в секундах>.

ЕМНИП, опять же, expiration поддерживается не везде. По кр. мере, я этой фичей не пользуюсь, удаляю руками.

А как написать <Время жизни в секундах>?? Я новичок и в учебнике такого не видел ((

 
artem99 писал(а) >>

А как написать <Время жизни в секундах>?? Я новичок и в учебнике такого не видел ((

Естественно, в учебнике не будет написано, что в одной минуте 60 сек. Минимальное время, которое можно установить - 11 минут.

 
Integer писал(а) >>

Естественно, в учебнике не будет написано, что в одной минуте 60 сек. Минимальное время, которое можно установить - 11 минут.

А как это будет выглядеть в виде кода?

 

Вот что я пишу вместо expiration: TimeMinute(TimeCurrent())+PERIOD_M1*Minuta

где Minuta - это переменная, кол-во минут. Брокер поддерживает такую услугу.

Правильно ли это?

 
artem99 >>:

А как это будет выглядеть в виде кода?

extern int LifeTimeMinutes = 20;  // время жизни в минутах

datetime expiration = TimeCurrent() + 60*LifeTimeMinutes; // в expiration будет время удаления ордера.
 
TheXpert писал(а) >>

Спасибо огромное TheXpert, а тоя мучился уже целый день.... Уффф

Ты настоящий эксперт )))!

 
double lot, dividor;
bool isModify=false;
int ticket1=0, expInSeconds;
dividor=MathPow(10,Digits);
RefreshRates();
while(ticket1<=0)
{
  ticket1=OrderSend(Symbol(),OP_BUYSTOP,lot,Ask,3,0,0,NULL,0,0,Blue);
  Sleep(5000);
  RefreshRates();
}
OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES);
while(isModify==false)
{
  isModify=OrderModify(ticket1,OrderOpenPrice(),
                       NormalizeDouble(OrderOpenPrice()-sl/dividor,markDigits),
                       NormalizeDouble(OrderOpenPrice()+tp/dividor,markDigits),
                       OrderOpenTime()+expInSeconds,CLR_NONE);
  Sleep(5000);
  RefreshRates();
}
isModify=false;