Скачать MetaTrader 5

Как заставить советника выжидать время

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Разбираетесь в своей области? Поделитесь этим с миллионами трейдеров!
Юрий Хомченко
59
Юрий Хомченко 2010.11.12 14:14 

У меня проблема. Иногда советник на одной свече то открывает, то тут же закрывает позицию. Такое может произойти несколько раз за 10 минут. Не могу реализовать способ заставить робота не открывать новые ордера на покупку или продажу чаще чем раз в несколько минут или раз за одну свечу.

Я пытался ввести функцию Sleep(time), которая срабатывала после открытия нового ордера или после закрытия, но не работает.

Пробовал ввести флаг, который показывал, та же это свеча или уже другая.

Подскажите решение, если не сложно

Роман
7939
Роман 2010.11.12 14:25  
Khomtchenko:

У меня проблема. Иногда советник на одной свече то открывает, то тут же закрывает позицию. Такое может произойти несколько раз за 10 минут. Не могу реализовать способ заставить робота не открывать новые ордера на покупку или продажу чаще чем раз в несколько минут или раз за одну свечу.

Я пытался ввести функцию Sleep(time), которая срабатывала после открытия нового ордера или после закрытия, но не работает.

Пробовал ввести флаг, который показывал, та же это свеча или уже другая.

Подскажите решение, если не сложно


  пропиши работу советника только на открытии нового бара...
Victor Nikolaev
Модератор
14527
Victor Nikolaev 2010.11.12 14:26  

И отрытие позиции не по нулевому бару, а по первому.

Роман
7939
Роман 2010.11.12 14:30  
Vinin:

И отрытие позиции не по нулевому бару, а по первому.


   Именно...
Vladimir Paukas
4099
Vladimir Paukas 2010.11.12 14:37  
Khomtchenko:

У меня проблема. Иногда советник на одной свече то открывает, то тут же закрывает позицию. Такое может произойти несколько раз за 10 минут. Не могу реализовать способ заставить робота не открывать новые ордера на покупку или продажу чаще чем раз в несколько минут или раз за одну свечу.

Я пытался ввести функцию Sleep(time), которая срабатывала после открытия нового ордера или после закрытия, но не работает.

Пробовал ввести флаг, который показывал, та же это свеча или уже другая.

Подскажите решение, если не сложно

if (LastorderTime==0)
{
 for (int ii=0; ii<OrdersHistoryTotal();ii++)
  if (OrderSelect(ii,SELECT_BY_POS,MODE_HISTORY))
       
       if (OrderType()==OP_BUY || OrderType()==OP_SELL)
       if (OrderOpenTime()>LastorderTime )
            {LastorderTime =OrderOpenTime();}
 for (ii=0; ii<OrdersTotal();ii++)
  if (OrderSelect(ii,SELECT_BY_POS,MODE_TRADES))
       if (OrderOpenTime()>LastorderTime() )
         {LastorderTime =OrderOpenTime();}



if ( iTime(Symbol(),PERIOD_H1,Delay)< LastorderTime  ) return(0);

OrderSend(...)
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
           LastorderTime=iTime(Symbol(),PERIOD_H1,0);

Delay - на сколько часов задержать.

Для минут поменять соответственно

if ( iTime(Symbol(),PERIOD_M1,Delay)< LastorderTime  ) return(0);


LastorderTime=iTime(Symbol(),PERIOD_M1,0);

Олег avtomat
4894
Олег avtomat 2010.11.12 16:36  

Это дребезжание происходит в области пересечения информационных линий (машек либо иных), по которым принимается решение об открытии и закрытии ордера.

При этом линии то пересеклись, то опять разошлись.

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

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

khorosh
8204
khorosh 2010.11.12 18:09  
avtomat:

Это дребезжание происходит в области пересечения информационных линий (машек либо иных), по которым принимается решение об открытии и закрытии ордера.

При этом линии то пересеклись, то опять разошлись.

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

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

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