[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 162

 
Vinin:


Ладно, немного приведу в лад с логикой

 Цикл выполняется вне зависимости от от условия if(NewBar())


А чем не понравилась моя расстановка скобок?Мне и не надо,чтобы цикл зависил от NewBAR().Эта ф-ция нужна что-бы ордера пачками не выставлялись.Подскажите лучше почему мой код( в последнем его варианте)

работает,а как только делаю аналогичный на SELLSTOP сделки вообще перестают открываться? 

 

Уважаемые господа!Я новичок!

Я начал писать свой первый в жизни советник......а закончить не могу.

В данный момент я тестирую его в тестере стратегий.

Он очень простой.

На открытии 10 часовой свечи я выставляю отложенный ордер на расстоянии допустим 60 п. от цены открытия  этой 10 часовой свечи.

Это у меня получилось удачно.

Но мне нужно сделать так,что бы отложенный ордрер удалился бы,если в течении часа с момента выставления он не преобразовался

в рыночный

Вот мой код.

int start()
  {
  double Price=Ask+60*Point;
  double SL=Price-30*Point;
  double TP=Price + 15*Point;
   if(OrdersTotal()==0 && Hour()==10 && Minute()== 00 )
      OrderSend("EURUSD",OP_BUYSTOP,0.1,Price,0,SL,TP,"fjdu",123,TimeCurrent( ) + 3600);

 }

Данный код успешно компилируется.Осуществляется успешное тестирование.Ни каких ошибок тестер не выдает.

Но параметр expiration не работает,т.е. отложенные ордера не преобразованные в рыночные в течении 1 часа - не удаляются.

Я менял значение 3600 на 3600000....все равно ничего не происходит.

Буду очень признателен ,если подскажете - в чем моя ошибка.

 
solnce600:
параметр expiration не работает

Скорее всего, брокер не поддерживает. Для верности можно так:

int i,ot = OrdersTotal();

for(i=ot-1;i>=0;i--)
{
   if(!OrderSelect()) continue;
   if(OrderMagicNumber()!=123) continue;
   
   if(OrderType()==OP_BUYSTOP && TimeCurrent()-OrderOpenTime()>3600)
   {
      OrderDelete(OrderTicket());
   }
}
 
solnce600:

Уважаемые господа!Я новичок!

Я начал писать свой первый в жизни советник......а закончить не могу.

В данный момент я тестирую его в тестере стратегий.

Он очень простой.

На открытии 10 часовой свечи я выставляю отложенный ордер на расстоянии допустим 60 п. от цены открытия  этой 10 часовой свечи.

Это у меня получилось удачно.

Но мне нужно сделать так,что бы отложенный ордрер удалился бы,если в течении часа с момента выставления он не преобразовался

в рыночный

Вот мой код.

int start()
  {
  double Price=Ask+60*Point;
  double SL=Price-30*Point;
  double TP=Price + 15*Point;
   if(OrdersTotal()==0 && Hour()==10 && Minute()== 00 )
      OrderSend("EURUSD",OP_BUYSTOP,0.1,Price,0,SL,TP,"fjdu",123,TimeCurrent( ) + 3600);

 }

Данный код успешно компилируется.Осуществляется успешное тестирование.Ни каких ошибок тестер не выдает.

Но параметр expiration не работает,т.е. отложенные ордера не преобразованные в рыночные в течении 1 часа - не удаляются.

Я менял значение 3600 на 3600000....все равно ничего не происходит.

Буду очень признателен ,если подскажете - в чем моя ошибка.

А что Вам мешает сделать условие на удаление так же по часу и минуте? ДЦ может не выполнять Вашей экспирации.
 
borilunad:
А что Вам мешает сделать условие на удаление так же по часу и минуте? ДЦ может не выполнять Вашей экспирации.


alsu:

Скорее всего, брокер не поддерживает. Для верности можно так:



У меня терминал Альпари.На демосчете вручную выставлял отложенник и ставил время истечения - 1 час. Все было Ок.

Я читал,что если брокер не поддерживал бы этот параметр,появлялась бы ошибка....но ошибки нет .

Тестирование идет ...но ордер не удаляется.

 
borilunad:
А что Вам мешает сделать условие на удаление так же по часу и минуте? ДЦ может не выполнять Вашей экспирации.

А по часу и минуте - это как?

Спасибо.

 
solnce600:

А по часу и минуте - это как?

Спасибо.



Что нужно подставить на место параметра expiration ?

 
solnce600:

А по часу и минуте - это как?

Спасибо.

Так же, как открыли, только на час позже в 11. Это у вас прописано! Я то всё делаю по-другому, но это не меняет сути.
 
borilunad:
Так же, как открыли, только на час позже в 11. Это у вас прописано! Я то всё делаю по-другому, но это не меняет сути.

Извините за тупость,но я так и не понял нужно ли мне что-то менять в этом параметре или нет.

Если нужно,буду Вам признателен,если вставите в мой код параметр expiration,так как нужно, и вставите всю строку в текст своего ответа.

Спасибо.

 
solnce600:

Извините за тупость,но я так и не понял нужно ли мне что-то менять в этом параметре или нет.

Если нужно,буду Вам признателен,если вставите в мой код параметр expiration,так как нужно, и вставите всю строку в текст своего ответа.

Спасибо.



Могу предложить следующий вариант:

if(Hour()==11 && OrdersTotal()>0)

  {

   if(OrderSelect(0,SELECT_BY_POS)==true)

     {

      if(OrderType()==OP_BUYSTOP)

        {

         OrderDelete(OrderTicket());

        }

     }

  } 

И не используешь параметр экспирации. Минус в том, что при торговле чтобы позиция закрылась  компьютер должен работать с подключенным интернетом и включенным терминалом.

Причина обращения: