Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1229
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я понимаю так, что идёт как бы переодический опрос на наличие. (есть ли EURUSD? и есть ли ордер с указанным Magic(ом)) Если чего-то одного нет, то открываем позицию. Только в случае совпадении обоих условий, отправляется на проверку.
И тогда спрашивается в Шаге2. Предположим мы имеем один ордер открытый вручную. Тогда мы попадаем под первое условие, (имеем тот же символ) и не попадаем под второе условие, так как этот ордер не содержит magic. А если одно из условий не совпадает, то код должен открыть ордер. Собственно он так и делает. Но в следующий тик он открывает и третий ордер, и четвётртый, и пятый....
Почему он открывает третий ордер?
Но ведь есть же два ордера которые в сумме попадают под оба условия. Должна быть далее проверка (переход в return(0)) , а не открытие.!
Доброй ночи всем! Подскажите можно ли написать код на mql5 который будет рисовать прямую на графике(фото прикрепил) и записывать все координаты этой прямой в файл? после отслеживание експертом(роботом) пробоя(пересечение) графиком этой прямой.
Всё есть в документации.
Всё есть в документации.
Спасибо за подсказку, а может вы поможете собрать такую штуку не за бесплатно конечно же.
Спасибо за подсказку, а может вы поможете собрать такую штуку не за бесплатно конечно же.
Не за бесплатно - это Вам сюда )))
Я понимаю так, что идёт как бы переодический опрос на наличие. (есть ли EURUSD? и есть ли ордер с указанным Magic(ом)) Если чего-то одного нет, то открываем позицию. Только в случае совпадении обоих условий, отправляется на проверку.
И тогда спрашивается в Шаге2. Предположим мы имеем один ордер открытый вручную. Тогда мы попадаем под первое условие, (имеем тот же символ) и не попадаем под второе условие, так как этот ордер не содержит magic. А если одно из условий не совпадает, то код должен открыть ордер. Собственно он так и делает. Но в следующий тик он открывает и третий ордер, и четвётртый, и пятый....
Почему он открывает третий ордер?
Но ведь есть же два ордера которые в сумме попадают под оба условия. Должна быть далее проверка (переход в return(0)) , а не открытие.!
== - если равно != - если не равно. Континью - завершение итерации цикла и начало новой итерации цикла. Брейк - завершение цикла и переход к следующему за циклом оператору, ретурн - завершение функции, в вашем случае Онстарт и ожидание нового тика. И если ордер с вашим магик открыт, должен завершить функцию и уйти на ожидание нового тика.
Вопрос, если хотите открывать в текущем окне ордера, то зачем явно прописывать инструмент, или вы хотите открывать ордера из окна другого инстумента? Так же не понятно, сколько ордеров хотите открывать. По логике вашего кода может открываться только один ордер и только после его закрытия будет открываться второй. У вас один магик и один инструмент открытого окна. Так же условия открытия ордера проверяются для Текущего инструмента, а не для евробакса.
== - если равно != - если не равно. Континью - завершение итерации цикла и начало новой итерации цикла. Брейк - завершение цикла и переход к следующему за циклом оператору, ретурн - завершение функции, в вашем случае Онстарт и ожидание нового тика. И если ордер с вашим магик открыт, должен завершить функцию и уйти на ожидание нового тика.
Вопрос, если хотите открывать в текущем окне ордера, то зачем явно прописывать инструмент, или вы хотите открывать ордера из окна другого инстумента? Так же не понятно, сколько ордеров хотите открывать. По логике вашего кода может открываться только один ордер и только после его закрытия будет открываться второй. У вас один магик и один инструмент открытого окна. Так же условия открытия ордера проверяются для Текущего инструмента, а не для евробакса.
- Да, хочу открывать в текущем окне;
- Один ордер. Следующий ордер не открывается, пока не закроется предыдущий.
"Так же условия открытия ордера проверяются для Текущего инструмента, а не для евробакса." - тогда ?
- Да, хочу открывать в текущем окне;
- Один ордер. Следующий ордер не открывается, пока не закроется предыдущий.
"Так же условия открытия ордера проверяются для Текущего инструмента, а не для евробакса." - тогда ?
А что тогда, у вас например открыто окно не евробакс, а еврофунт, вы сравниваете символ выбранного ордера с евробаксом, если истина, значит на евробаксе есть ордер, и если и с нашим магик, то ретурн из функции Онстарт, а если нет, то выставляем ордер на евробаксе, но клоз, Хай, аск, бид у вас будут для еврофунт. будет ошибка при открытии ордеров, так как бид и аск для этих инстументов разные. А Symbol() возвратит символ текущего окна и ошибки не возникнет.
И используйте шаблон из метаэдитор, там есть кнопочка Создать слева вверху. Функцию онстарт используют до сих пор, но это не правильно, а ОнСтарт это для скриптов. Правильный шаблон.
Правильный код. У Вас пропущен комментарий к ордеру, и магик в вашем коде не учитывается. В предупреждениях к строке открытия замечание Неявное приведение типа числа к строке!!!
ошибок много в Вашем примере
должно быть:
тут цены не нормализованные OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-SL*Point,Bid+TP*Point,"My order",MagicNumber,0,clrGreen);
тут вообще не понятна логика зачем выход из OnTick() если условие ложное
наверное нужно продолжить цикл перебора ордеров и просто посчитать сколько ордеров
имхо, или топик с "Только полезные функции от КимIV" поиском найдите или в КБ посмотрите как делают советников с подсчетом ордеров и выставлением новых ордеров, Ваш пример очень прямолинеен в логике и в дальнейшем его сложно будет модифицировать под другие задачи... ну может быть трейлинг он захочет прикрутить