Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Другими словами мне надо .................пока нртр синяя............ внутри цикла еще куча условий и циклов. Потому я и выбрал while
Помогите с этим
ну тогда внесите в цикл свои расчеты, Вы понимаете, что в теле цикла у Вас идет просто проверка флагов, а изменение этих флагов за пределами цикла?
я это понял, но как переделать? Может так
может и так, в суть кода не вникал, но обычно программисты стараются уйти от таких конструкций:
обычно составляется цикл со всеми необходимыми условиями, наверно так:
с помощью такого условия отпадает необходимость принудительно разрывать цикл с помощью break
Что-то сложное делаете?
Сразу же и не понять!
может и так, в суть кода не вникал, но обычно программисты стараются уйти от таких конструкций:
обычно составляется цикл со всеми необходимыми условиями, наверно так:
с помощью такого условия отпадает необходимость принудительно разрывать цикл с помощью break
Спосибо IgorM
Vinin, ничемо мудрого и сложниго. Просто мне покозалось, что можно уменшить количество неправильных входов. Вот это и хочу проветить. Тем самым учюсь mql
Помогите еще. В этом коде хотел зделатть чтобы в цикле пока синяя линия было разрешено открыть три ордера. второй разрешается открыть только после закрытия первого, тетий после закрытия второго. Пока все закрываетжся по СтопЛосу или Тейку. Пока мне открывает и больше трех.
немного путано просите что Вам надо, вижу пока ошибку:
if(OrdersTotal()>0)k++; // если открылся, увеличиваем количество открытых ордеров в цикле
фактом открытия ордера является или получение его тикета:
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Bid-SL*Point,Ask+TP*Point,"",MAGICMA,0,Blue)
или перебором ордеров в терминале с заданными свойствами - обычно это символ инструмента, магик (у Вас MAGICMA), может быть комментарий
в Вашем случае, проще по появлению номера тикета ордера делать вывод, что ордер открылся, это примерно так:
ЗЫ: вот тут https://www.mql5.com/ru/forum/129829 я выложил ф-цию для поиска/перебора своих ордеров, посмотрите, может сразу пригодится
Спасибо за ответ, но открывается пять вместо трех на протяжении синей линии. В цикле пока синяя линия было разрешено открыть три ордера. Второй разрешается открыть только после закрытия первого, тетий после закрытия второго. Пока все закрываетжся по СтопЛосу или Тейку.
Спасибо за ответ, но открывается пять вместо трех на протяжении синей линии. В цикле пока синяя линия было разрешено открыть три ордера. Второй разрешается открыть только после закрытия первого, тетий после закрытия второго. Пока все закрываетжся по СтопЛосу или Тейку.
никак не могу понять, что Вы хотите, но и теперь вижу ошибку:
if (res > 0) k++; // если открылся, увеличиваем количество открытых ордеров в цикле
если у Вас к это счетчик ордеров, тогда и нужно перед открытием ордера проверять это к, примерно так:
но не забудьте к=0 сделать где-то за пределами цикла, когда нет ордеров
ЗЫ: ну хорошо, открылись, увеличили к, а где к будет изменяться если ордер закрылся по тейку и стоплосс?
к=0 стоит перед циклом. По кокому условию закрылся ордер неважно. Главное что он закрылся. Значит можно открывать другой если выполняется условие входа if(условие открытия)
Тут в цикле как бы должен бытть микро советник с условиями входа и выхода. Разница микросоветника в том, что в нем должно быть ограничение на количество открываемых ордеров. Во время работы микро советника ограничено откытие ордеров до k<count . При достижений count , микросоветник перестает открывать ордера. Остается работать условия в микро советнике условия на закрытие.
Первый ордер открываетя if(условие открытия ...) Второй разрешается открыть только после закрытия первого, тетий после закрытия второго и т.д.
Микросоветник оканчивает работу когда заканчиваетс цикл
Это только сейчас понял. Такого я еще невидел. А может видел но непонял.
Как это сделать?