Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1224
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день! Уважаемые программисты. Вопрос по MQL5
Как сделать контроль позиций в эксперте?. Чтобы на одном баре была, только одна открытая позиция. То есть закрытие позиции неважно где - на каком баре, но вот открытие должно быть только на одном баре.
этот код полностью игнорируется в чём ошибка, не пойму.
Ошибка: Вы смешали в кучу мух и котлеты - Вы смешали ОТЛОЖЕННЫЕ ОРДЕРА и ПОЗИЦИИ.
Чтобы не путаться, пожалуйста ознакомьтесь со справкой: Общие принципы
Выше предложили простой способ - при открытии позиции запоминаете время открытия текущего бара. Дальше, если Вы хотите открыть новую позицию, Вы сверяете сохранённое время и время открытия текущего бара.
Запоминать время открытия позиции удобно в OnTradeTransaction:
и при возникновении сигнала сверять время:
Пример взят из кода OHLC Check 2
Сложнова-то....как-то. На первом этапе проблем никаких " запоминаете время открытия текущего бара"
Вот запомнил:
Но здесь " Вы сверяете сохранённое время и время открытия текущего бара." проблемы.
Я вот примерно тоже самое доработал.Вот посмотрите:
Здесь мне только всего лишь нужно зациклить прогу типа "return(-1)" Но из-за void присваивать выражение ретурну нельзя. Как обойти этот момент.? Как зациклить но не return?
Такой вариант тоже не прокатил.
Сложнова-то....как-то. На первом этапе проблем никаких " запоминаете время открытия текущего бара"
Вот запомнил:
Но здесь " Вы сверяете сохранённое время и время открытия текущего бара." проблемы.
Я вот примерно тоже самое доработал.Вот посмотрите:
Здесь мне только всего лишь нужно зациклить прогу типа "return(-1)" Но из-за void присваивать выражение ретурну нельзя. Как обойти этот момент.? Как зациклить но не return?
За зацикливание программ применяется лечение: рубание рук по самую шею. Чтобы впредь не повадно было.
Вот, что Вам нужно - полное тело программы, Вам только нужно оформить получение сигнала:
переменная 'm_prev_bars' хранит время открытия текущего бара, а переменная 'm_last_deal_in' - время открытия бара, на котором была открыта позиция.
Сравнение этих двух переменных производится в блоке получения сигналов 'SearchTradingSignals'.
Такой вариант тоже не прокатил.
До чего-же барабашка любит километровые коды…
Ваша проблема решается в ШЕСТЬ строк кода, с учётом объявления переменных.
Надеюсь с переменной signal разберётесь.
О! Заработало! Спасибо, товарищи за идеи!
Правда пришлось подшаманить чуть-чуть. Ещё проще даже получилось, без (true). Правда объяснить не смогу эту хитро-запутанную логику MQL.)
Вот так внедрил:
Я вот офигеваю, почему такой большой код в MQL5 для открытия позиции. В отличие от MQL4. В 4-ке одна строчка всего лишь. Тут же...Можно ли сократить? Например убрать обработчик ошибок?О! Заработало! Спасибо, товарищи за идеи!
Правда пришлось подшаманить чуть-чуть. Ещё проще даже получилось, без (true). Правда объяснить не смогу эту хитро-запутанную логику MQL.)
Вот так внедрил:
Я вот офигеваю, почему такой большой код в MQL5 для открытия позиции. В отличие от MQL4. В 4-ке одна строчка всего лишь. Тут же...Можно ли сократить? Например убрать обработчик ошибок?Используйте торговые классы. И код будет очень корокий.
Пример:
О! Заработало! Спасибо, товарищи за идеи!
Правда пришлось подшаманить чуть-чуть. Ещё проще даже получилось, без (true). Правда объяснить не смогу эту хитро-запутанную логику MQL.)
Вот так внедрил:
Я вот офигеваю, почему такой большой код в MQL5 для открытия позиции. В отличие от MQL4. В 4-ке одна строчка всего лишь. Тут же...Можно ли сократить? Например убрать обработчик ошибок?Так если у вас в условии есть
то зачем ещё проверки на новый бар? Или есть вариант, что позиция закроется на этом-же баре и надо запретить второе открытие?
О! Заработало! Спасибо, товарищи за идеи!
Правда пришлось подшаманить чуть-чуть. Ещё проще даже получилось, без (true). Правда объяснить не смогу эту хитро-запутанную логику MQL.)
Вот так внедрил:
Я вот офигеваю, почему такой большой код в MQL5 для открытия позиции. В отличие от MQL4. В 4-ке одна строчка всего лишь. Тут же...Можно ли сократить? Например убрать обработчик ошибок?Знаете, когда-то давно, когда был MQL4, люди с возмущением говорили, что не дают им более низкоуровневого доступа - чтобы можно было что-то по-своему делать.
Ну вот, дали - теперь к составляющим OrderSend() в MQL4 дали доступ - так сказать развернули в MQL его логику - делайте что просили. Так нет - теперь возмущения, что слишком сложно.
Сложно? Не вопрос - нате вам торговые классы в СБ - практически то же самое, что и в MQL4 стандартные торговые функции.
Считайте, что в MQL4 такие классы - это и есть торговые функции. А в MQL5 - всё с открытым доступом.
Пользуйтесь.
Знаете, когда-то давно, когда был MQL4, люди с возмущением говорили, что не дают им более низкоуровневого доступа - чтобы можно было что-то по-своему делать.
Ну вот, дали - теперь к составляющим OrderSend() в MQL4 дали доступ - так сказать развернули в MQL его логику - делайте что просили. Так нет - теперь возмущения, что слишком сложно.
Сложно? Не вопрос - нате вам торговые классы в СБ - практически то же самое, что и в MQL4 стандартные торговые функции.
Считайте, что в MQL4 такие классы - это и есть торговые функции. А в MQL5 - всё с открытым доступом.
Пользуйтесь.
Доцент, а Доцент. Ты почему такой злой (сегодня) ©