Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1534
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Какой то злой кодер, очень сильно поизвращался над кодом вашего советника.
Боюсь поле такого, этот советник никогда не сможет торговать
Ну а если серьёзно, то у советника нет условий для открытия позиций.
Согласитесь, что такое условие никогда не будет выполнено ask > ask и такое тоже bid > bid
А у вас в коде, советник ждёт выполнения именно этого.
Сорри, там всё таки есть одно условие при котором может открыться позиция селл - ask0 > bid0, но вот незадача продавать можно только по цене bid, а ваш советник пытается продать по цене ask, и естественно получает при этом реквот.
Как видите в логах всё есть.
Злее меня кодеров еще поискать...
Как Вы сделали, чтобы появились логи и что значит этот реквот?
Дело в том, что проблем с открытием ордеров не наблюдалось. Прикрепляю скан истории за 03.05.2024 года. Там открыты роботом три позиции, одна из которых - buy... Вот закрыть мне их пришлось вручную и удалить Эксперта со страницы, чтобы не открывал опять. Почему-то именно условие закрытия не сработало.
Я мог бы выложить весь код сюда, но там две сотни строчек кода. Не уверен, что будет правильно так. Поэтому, оставил ссылку.
ПС. Пробую добавить файл mq5. Там тоже можно увидеть код. Мой МетаЭдитор открывает.
Попробовал, как работает эксперт, который приложен ниже. Открыл бай. Снова не закрыл по условию. И снова нет ни лог файла, ни записей во вкладке Эксперт.
Ошибки то не отображаются/обрабатываются - поэтому и написал про необходимость установить ошибку, которую возвращает сервер, а уже потом думать дальше. Если ошибки не возвращает, то уже вопрос к логике советника - она может не срабатывать.
Вы правы. Сделал принты, и лог файл появился. Но в нем, почему-то, не указывается открытие, закрытие позиций. Может, я напрасно переживал? Извините, что отнял время.
Возможно, этот случай.
Злее меня кодеров еще поискать...
Ладно, все когда то, с чего то начинали.
Очень много ошибок в советнике.
Вызывать PositionGetDouble нужно после PositionSelect иначе в вашем Price окажется скорее всего мусор или ноль, потом вы будете сравнивать этот ноль с асками бидами, где нибудь да сработает условие.
Что делает этот код?
Хренову тучу раз он делает одно и то же.
Полагаю, что индексом массива mqlTick должен быть не ноль, а i.
Ну и про не правильные биды аски в открытиях позиций, я написал в предыдущем сообщении.
Вам лучше вообще не указывать цену для открытия позиции, пусть это делает класс CTrade
Так у вас будет меньше шансов ошибиться.
При наступлении условия bid0 > ask0 вы хотите открывать позицию.
По мне так при наступлении этого условия, нужно закрывать все открытые позиции, закрывать терминал и выключать компьютер)))
Вызывать PositionGetDouble нужно после PositionSelect иначе в вашем Price окажется скорее всего мусор или ноль, потом вы будете сравнивать этот ноль с асками бидами, где нибудь да сработает условие.
Что делает этот код?
Хренову тучу раз он делает одно и то же.
Полагаю, что индексом массива mqlTick должен быть не ноль, а i.
Ну и про не правильные биды аски в открытиях позиций, я написал в предыдущем сообщении.
Вам лучше вообще не указывать цену для открытия позиции, пусть это делает класс CTrade
Так у вас будет меньше шансов ошибиться.
При наступлении условия bid0 > ask0 вы хотите открывать позицию.
По мне так при наступлении этого условия, нужно закрывать все открытые позиции, закрывать терминал и выключать компьютер)))
PositionSelect - надо будет потратить кусочек времени, чтобы понять, почему не открываются позиции, когда я его использую. Так что временно пользую !PositionSelect(Symbol()), чтобы в любой момент времени работала только одна позиция на инструменте. Поэтому, я думаю, и
работает правильно. Проверял. Или это не всегда?
Этот код по таймеру, каждые 300 миллисекунд призван находить самую первую цену за период. Поэтому и индекс 0. Как еще я первую цену за период найду?
Цена открытия бай должна быть аск, на сколько я понял. А селл - бид. Видимо, я неправильно прописал открытие позиции. Там наоборот. Имя инструмента, получается, тоже из-за класса нет смысла писать при открытии? Только лотажность и все?
Касаемо условия открытия, читал, что спред бывает отрицательным. Вот и попытался это предусмотреть, но неправильно прописал логику. На самом деле не бывает спред отрицательным?
В общем, сердечно благодарю. Я бы и не обратил внимания, если бы Вы не показали.
Здравствуйте, ребята, подскажите, пожалуйста, какой язык мне стоит изучать в программировании для MetaTrader 5?
Смотрим вверху этого сайта, щёлкаем по ссылке и начинаем изучать:
По какой формуле расчитывается SYMBOL_PRICE_VOLATILITY?
Это не устроит?
С уважением, Владимир.
Это не устроит?
С уважением, Владимир.
Благодарю. Коэфициент изменения цены за день. Я понял. Но для скальпирования хочется иметь гибкий инструмент определения волатильности, чтобы сравнивать его, например, со спредом.
SYMBOL_PRICE_VOLATILITY добавили в 2020 году. А формула не известна? Поисковик не показывает...