После того как открылась первая сделка поставить флаг, что на сегодня всё.
Это достаточно типичный вопрос. Сделай поиск по "одна сделка в час" или типа этого.
Поиск по "одна сделка на баре" выдал вот это https://forum.mql4.com/ru/9507
Последующий поиск по более точной формулировке полученной с той страницы "Контроль на открытие бара"
Выдаёт тучу всего, первая же ссылка https://forum.mql4.com/ru/12070 даёт нужный код
у вас НЕ ИМПУЛЬСНАЯ СИСТЕМА!
Сигнал можно иметь не один!
2-сигнал торговой системе
алгоритм
получили сигнал от индикаторов - есть точка входа - сигнал получен и стоит ( если конечно он не импульсный )
взводим флаг-сигнал для механики!
и пока ордер не открылся не гасим механический флаг-сигнал
ошибка - ставим сигна-флаг в очередь ждем тика
при следующей попытке ( если у нас не импульсный сигнал на вход ) проверяем индикаторы дают сигнал на вход ?
если да то смотрим ВИСИТ ли у нас сигнал от механики - полученный только что но не исполненный
и если висит продолжаем попутку открываться ( открылись сбросили механический сигнал )
( а раз открылись не реагируем на импульсы в попутном направлении - проверяя допустим отрытый ордер его магик направление входа )
таким образом реквота или еще какая беда нас не пугает
если сигнал на вход пропал - ну вероятно не надо было входить и нам возможно повезло
все это справедливо не для ИМПУЛЬСНЫХ сигналов ( т е трендовых сигналов ) как правило среднесрочные стратегии НЕЙРОСЕТИ ( без импульных сигналов )
---
Импульные обрабатывать сложнее но тоже можно ( типа дивергенция ) или иные стрелкиу вас НЕ ИМПУЛЬСНАЯ СИСТЕМА!
Сигнал можно иметь не один!
1-сигналы от индикаторов2-сигнал торговой системе
алгоритм
получили сигнал от индикаторов - есть точка входа - сигнал получен и стоит ( если конечно он не импульсный )
взводим флаг-сигнал для механики!
и пока ордер не открылся не гасим механический флаг-сигнал
ошибка - ставим сигна-флаг в очередь ждем тика
при следующей попытке ( если у нас не импульсный сигнал на вход ) проверяем индикаторы дают сигнал на вход ?
если да то смотрим ВИСИТ ли у нас сигнал от механики - полученный только что но не исполненный
и если висит продолжаем попутку открываться ( открылись сбросили механический сигнал )
( а раз открылись не реагируем на импульсы в попутном направлении - проверяя допустим отрытый ордер его магик направление входа )
таким образом реквота или еще какая беда нас не пугает
если сигнал на вход пропал - ну вероятно не надо было входить и нам возможно повезло
все это справедливо не для ИМПУЛЬСНЫХ сигналов ( т е трендовых сигналов ) как правило среднесрочные стратегии НЕЙРОСЕТИ ( без импульных сигналов )
---
Импульные обрабатывать сложнее но тоже можно ( типа дивергенция ) или иные стрелкиУ меня ТС не индикаторная....идея Японских свечей и методов геометрии!!!!
может поможете функцию эту написать....
Я по пробывал вот так, но не получилось:
for(int i = 0; i <= OrdersHistoryTotal(); i++) { OrderSelect(i, SELECT_BY_POS, MODE_HISTORY); if (OrderCloseTime()>Time[1])return(0);}
У меня ТС не индикаторная....идея Японских свечей и методов геометрии!!!!
может поможете функцию эту написать....
Я по пробывал вот так, но не получилось:
поверьте так просто ХОРОШИЕ надежные программы не пишутся!
просто так накидать кусочек кода - это неверно
---
кстати очень рекомендую почитать ветку игоря Кима ! у него достаточно надежные кострукции и простые для пониманияпопробуйте разобраться - если хотите освоить язык
---
если ваша задача получить правильный надежный код ( и просто использовать его )
лучше обратится к профи, заплатить ! и получить нормальный код
и может даже сопровождение
---
вы в истории пытаетесь сравнивать время с прошлой свечой и на каком тф бог его знает !
если на клавиатуру упадет карандаш и переключит ТФ
неизвестно что сделает советник! или сами переключите
что на выходе вы хотите ?
Попробуй такую функцию:
// Проверяем, нет ли ордера типа 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.
Но функция бессильна при переключении периодов графика. Хотя в тестере отрабатывает корректно.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте!!! Ситуация такая...У меня ТС торгует на фрейме D1.... К примеру пришел сигнал, открывается ордер....Далее, сробатывает tp, но так как день еще не закончен и сигнал еще актуален, он открывает еще сделку...в итоге сделок 5-10 делает внутри дня. а последний закрывает по st ....Подскажите пожалуйста, как сделать так что бы он в дне открывалтолько одну сделку???