Открылся ордер, НО сигнал остался

 

Здравствуйте!!! Ситуация такая...У меня ТС торгует на фрейме D1.... К примеру пришел сигнал, открывается ордер....Далее, сробатывает tp, но так как день еще не закончен и сигнал еще актуален, он открывает еще сделку...в итоге сделок 5-10 делает внутри дня. а последний закрывает по st ....Подскажите пожалуйста, как сделать так что бы он в дне открывалтолько одну сделку???

 

После того как открылась первая сделка поставить флаг, что на сегодня всё.

Это достаточно типичный вопрос. Сделай поиск по "одна сделка в час" или типа этого.

 
У Кима наверняка есть фукция время открытия последней сделки, вытаскиваете время потом смотрите на текущем ли она баре и если да то больше не открываетесь
 
timbo писал (а) >>

После того как открылась первая сделка поставить флаг, что на сегодня всё.

Это достаточно типичный вопрос. Сделай поиск по "одна сделка в час" или типа этого.

Пробую...но ни чего пока нету

 

Поиск по "одна сделка на баре" выдал вот это https://forum.mql4.com/ru/9507

Последующий поиск по более точной формулировке полученной с той страницы "Контроль на открытие бара"

Выдаёт тучу всего, первая же ссылка https://forum.mql4.com/ru/12070 даёт нужный код

 
slayer писал (а) >>

Пробую...но ни чего пока нету

у вас НЕ ИМПУЛЬСНАЯ СИСТЕМА!


Сигнал можно иметь не один!

1-сигналы от индикаторов

2-сигнал торговой системе


алгоритм


получили сигнал от индикаторов - есть точка входа - сигнал получен и стоит ( если конечно он не импульсный )

взводим флаг-сигнал для механики!

и пока ордер не открылся не гасим механический флаг-сигнал

ошибка - ставим сигна-флаг в очередь ждем тика


при следующей попытке ( если у нас не импульсный сигнал на вход ) проверяем индикаторы дают сигнал на вход ?

если да то смотрим ВИСИТ ли у нас сигнал от механики - полученный только что но не исполненный

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

( а раз открылись не реагируем на импульсы в попутном направлении - проверяя допустим отрытый ордер его магик направление входа )



таким образом реквота или еще какая беда нас не пугает


если сигнал на вход пропал - ну вероятно не надо было входить и нам возможно повезло



все это справедливо не для ИМПУЛЬСНЫХ сигналов ( т е трендовых сигналов ) как правило среднесрочные стратегии НЕЙРОСЕТИ ( без импульных сигналов )

---

Импульные обрабатывать сложнее но тоже можно ( типа дивергенция ) или иные стрелки
 
YuraZ писал (а) >>

у вас НЕ ИМПУЛЬСНАЯ СИСТЕМА!

Сигнал можно иметь не один!

1-сигналы от индикаторов

2-сигнал торговой системе


алгоритм

получили сигнал от индикаторов - есть точка входа - сигнал получен и стоит ( если конечно он не импульсный )

взводим флаг-сигнал для механики!

и пока ордер не открылся не гасим механический флаг-сигнал

ошибка - ставим сигна-флаг в очередь ждем тика

при следующей попытке ( если у нас не импульсный сигнал на вход ) проверяем индикаторы дают сигнал на вход ?

если да то смотрим ВИСИТ ли у нас сигнал от механики - полученный только что но не исполненный

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

( а раз открылись не реагируем на импульсы в попутном направлении - проверяя допустим отрытый ордер его магик направление входа )



таким образом реквота или еще какая беда нас не пугает

если сигнал на вход пропал - ну вероятно не надо было входить и нам возможно повезло


все это справедливо не для ИМПУЛЬСНЫХ сигналов ( т е трендовых сигналов ) как правило среднесрочные стратегии НЕЙРОСЕТИ ( без импульных сигналов )

---

Импульные обрабатывать сложнее но тоже можно ( типа дивергенция ) или иные стрелки

У меня ТС не индикаторная....идея Японских свечей и методов геометрии!!!!

может поможете функцию эту написать....

Я по пробывал вот так, но не получилось:

for(int i = 0; i <= OrdersHistoryTotal(); i++)
    {
    OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
    if (OrderCloseTime()>Time[1])return(0);}
 
slayer писал (а) >>

У меня ТС не индикаторная....идея Японских свечей и методов геометрии!!!!

может поможете функцию эту написать....

Я по пробывал вот так, но не получилось:

поверьте так просто ХОРОШИЕ надежные программы не пишутся!

просто так накидать кусочек кода - это неверно

---

кстати очень рекомендую почитать ветку игоря Кима ! у него достаточно надежные кострукции и простые для понимания

попробуйте разобраться - если хотите освоить язык

---

если ваша задача получить правильный надежный код ( и просто использовать его )

лучше обратится к профи, заплатить ! и получить нормальный код

и может даже сопровождение

---



вы в истории пытаетесь сравнивать время с прошлой свечой и на каком тф бог его знает !

если на клавиатуру упадет карандаш и переключит ТФ

неизвестно что сделает советник! или сами переключите


что на выходе вы хотите ?

 
YuraZ писал (а) >>

если ваша задача получить правильный надежный код ( и просто использовать его )

лучше обратится к профи, заплатить ! и получить нормальный код

и может даже сопровождение

но уж нет.....я уж сам разбирусь, без профессионалов.....тем более сопровождение....

 
slayer писал (а) >>

но уж нет.....я уж сам разбирусь, без профессионалов.....тем более сопровождение....

че то не нашел у KimIV на ветке открытие сделки один раз на текущем Баре

 

Попробуй такую функцию:

// Проверяем, нет ли ордера типа Type, открытого на текущей свече. Если ордер есть, то результат False
// Проверяеются не только существующие ордера, но и закрытые
bool CheckExists(int Type)
 {
  for(int i = 0; i < OrdersTotal(); i++)
   if(OrderSelect(i, SELECT_BY_POS))
    if(OrderType() == Type && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol())
     if(OrderOpenTime() >= Time[0])
      return(False);
  for(i = OrdersHistoryTotal()-1; i > 0; i--)
   {
    if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
     if(OrderType() == Type && OrderOpenTime() >= Time[0] 
        && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol())
      return(False);
    }    
      
  return(True);    
  }

Вызов CheckExists(OP_BUY) - проверяем наличие позиции бай, открытой на текущей свече текущего таймфрейма. Если есть в открытых позициях, а также уже закрыта, но время открытия принадлежит текущей свече, то вернет False (открываться нельзя). Если позиция еще не открывалась, то вернет True.

Но функция бессильна при переключении периодов графика. Хотя в тестере отрабатывает корректно. 

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