Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1228
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вставил. Ды не. Открывает пачками. Мagic - игнорирует
Когда пишите код, переводите его логику на русский. У Вас сперва идет некий цикл, в котором происходят сравнения, если выбранный ордер не является рыночным то к следующей итерации, если инструмент не евробакс то к следующей итерации и если магик не равен Вашему магику то к следующей итерации. а если условие выполняется ,то далее. В конце цикла вы считаете количество пройденных до конца циклов. Цикл заканчивается и программа приступает к открытию ордеров по условиям. С учетом того, что одно из условий всегда истинно, происходит открытие ордера. И это на каждом тике.
Когда пишите код, переводите его логику на русский. У Вас сперва идет некий цикл, в котором происходят сравнения, если выбранный ордер не является рыночным то к следующей итерации, если инструмент не евробакс то к следующей итерации и если магик не равен Вашему магику то к следующей итерации. а если условие выполняется ,то далее. В конце цикла вы считаете количество пройденных до конца циклов. Цикл заканчивается и программа приступает к открытию ордеров по условиям. С учетом того, что одно из условий всегда истинно, происходит открытие ордера. И это на каждом тике.
Я понимаю. Но в этом случае: if(OrderMagicNumber() == MagicNumber)continue; Ордера, которые выставленные принимаются за ордера выставленные Magic(ом). То есть ордер выставленный вручную по евробаксу, должен игнориться, и открываться ещё один экспертом с магиком.
OrdersTotal() - вот эта зараза, ставит точку в любых манипуляциях с магиком.Я понимаю. Но в этом случае: if(OrderMagicNumber() == MagicNumber)continue; Ордера, которые выставленные принимаются за ордера выставленные Magic(ом). То есть ордер выставленный вручную по евробаксу, должен игнориться, и открываться ещё один экспертом с магиком.
OrdersTotal() - вот эта зараза, ставит точку в любых манипуляциях с магиком.Код выполняется сверху вниз. в цикле по правилам цикла. После цикла у Вас выставление ордеров. if(OrderMagicNumber() == MagicNumber)continue; Прервет исполнение тела цикла и начнется новая итерация цикла. И все. Цикл закончится и начнется выставление ордеров. Это так у Вас написано. И общее количество ордеров здесь не при чем. Если Вы хотите сделать условие, что если нет выставленных ордеров с вашим магик и инструментом, то тогда выставить ордер Код должен быть другим.
Цикл по номерам ордеров. Если нашелся ордер с нашим магик и на нашем инструменте, то ретурн - выход из старт. Или флаг, что Ваш ордер есть и в начале онтик или старт проверку по флагу.
И лучше советник создавать из шаблона создать советник скрипт, индикатор. Основные поля кода будут более правильными.
Код выполняется сверху вниз. в цикле по правилам цикла. После цикла у Вас выставление ордеров. if(OrderMagicNumber() == MagicNumber)continue; Прервет исполнение тела цикла и начнется новая итерация цикла. И все. Цикл закончится и начнется выставление ордеров. Это так у Вас написано. И общее количество ордеров здесь не при чем. Если Вы хотите сделать условие, что если нет выставленных ордеров с вашим магик и инструментом, то тогда выставить ордер Код должен быть другим.
Цикл по номерам ордеров. Если нашелся ордер с нашим магик и на нашем инструменте, то ретурн - выход из старт. Или флаг, что Ваш ордер есть и в начале онтик или старт проверку по флагу.
И лучше советник создавать из шаблона создать советник скрипт, индикатор. Основные поля кода будут более правильными.
Это я так понял не решение, а в каком направлении работать?
Я уже пару дестяков варинтов испробывал. Либо открывает один ордер, либо без перерыва, туевукучу.
Тут кстати перео OrderSekect - переменную типа bool надо поставить, а то ругается
Это я так понял не решение, а в каком направлении работать?
Я уже пару дестяков варинтов испробывал. Либо открывает один ордер, либо без перерыва, туевукучу.
Тут кстати перео OrderSekect - переменную типа bool надо поставить, а то ругается
Да, ругаться должен, возвращает в никуда
Лучше напишите алгоритм, какой хотите сделать. так непонятно что нужно.
Это я так понял не решение, а в каком направлении работать?
Я уже пару дестяков варинтов испробывал. Либо открывает один ордер, либо без перерыва, туевукучу.
Тут кстати перео OrderSekect - переменную типа bool надо поставить, а то ругается
вместо return(0) по смыслу должно быть continue
Люди добрые и знающие! Помогите реализовать индикатор Envelopes в советнике MT5. Сам советник должен обрабатывать каждый тик (без пропусков). Я пробовал несколько вариантов, смотрел в документации, там понравился вариант вроде бы, но он для обработчика OnCalculate. Со стандартной библиотекой еще не пробовал возиться ... Вообщем вот такая у меня начальная реализация:
В визуальном тестере получаю:
Да, ругаться должен, возвращает в никуда
Лучше напишите алгоритм, какой хотите сделать. так непонятно что нужно.
В первом собщении код. Всё просто: пробиваем предыдущий high/low - открывваем сделку. Нужно чтобы открываемые ордера этим советником не пересекались с другими ордерами открытыми вручную, или другим советником, т.е чтобы советник работал независимо.
Весь инет перерыл. Тема довольно-таки избитая, но существует в большом количестве вариаций. Такой вроде простой вещи, и нигде нет.
В первом собщении код. Всё просто: пробиваем предыдущий high/low - открывваем сделку. Нужно чтобы открываемые ордера этим советником не пересекались с другими ордерами открытыми вручную, или другим советником, т.е чтобы советник работал независимо.
Весь инет перерыл. Тема довольно-таки избитая, но существует в большом количестве вариаций. Такой вроде простой вещи, и нигде нет.
вместо return(0) по смыслу должно быть continue