Обсуждение статьи "Пошаговое руководство по написанию советников в MQL5 для начинающих" - страница 13
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Со всеми изменениями в программировании на MQL5 необходима обновленная версия этого пошагового кода, если я копирую этот код, он больше не компилируется - есть ли версия с последними изменениями - большое спасибо.
Здравствуйте, Михаил,
Спасибо за ваш комментарий. Я рассмотрю ваше предложение и, если потребуется обновление кодов, оно будет сделано в ближайшее время.
Почему выводится код ошибки:10030?
помогите, есть ли здесь кто-нибудь ?
почему выводится код ошибки:10030?
Прежде всего, спасибо за статью, она помогает мне начать программировать на mql5.
Я попробовал ваш код, но в OnInit() есть немного кода, назначение которого мне непонятно:
//--- Давайте работать с валютными парами с 5 или 3 значными ценами вместо 4
STP = StopLoss;
TKP = TakeProfit;
if(_Digits==5 || _Digits==3)
{
STP = STP*10;
TKP = TKP*10;
}
Эта часть изменяет значения тейк-профита и стоп-лосса, вызывая разницу между введенными значениями и реально используемыми.
Однако если я удалю две строки внутри if, то при отправке ордера на сервер часто возникает ошибка 10016 (недействительные стопы). Первая попытка выставить ордер проходит успешно, и я получаю 10009, но в большинстве последующих случаев я получаю 10016. Я отладил советник, и все стоп-лоссы и тейк-профиты кажутся в порядке с разницей в том, что стоп-лосс 30 или 300, а тейк-профит 100 или 1000 пибсов выше или ниже текущей цены.
Я не могу найти причину, по которой сервер выдает мне ошибку 10016, когда STP и TKP не умножаются на 10.
Кто-нибудь может объяснить мне, почему возникает эта ошибка или какова цель умножения на 10, когда _цифры равны 5 или 3?
Спасибо за помощь.
помогите, есть ли здесь кто-нибудь ?
почему выводится код ошибки:10030?
Здравствуйте,
Не могли бы вы сообщить нам, как вы получаете ошибку?
eshelios.sr:
Прежде всего, спасибо за статью, она помогает мне начать программировать на mql5.
Я попробовал ваш код, но в OnInit() есть немного кода, назначение которого мне непонятно:
//--- Давайте работать с валютными парами с 5 или 3 значными ценами вместо 4
STP = StopLoss;
TKP = TakeProfit;
if(_Digits==5 || _Digits==3)
{
STP = STP*10;
TKP = TKP*10;
}
Эта часть изменяет значения тейк-профита и стоп-лосса, вызывая разницу между введенными значениями и реально используемыми.
Однако если я удалю две строки внутри if, то при отправке ордера на сервер часто возникает ошибка 10016 (недействительные стопы). Первая попытка выставить ордер проходит успешно, и я получаю 10009, но в большинстве последующих случаев я получаю 10016. Я отладил советник, и все стоп-лоссы и тейк-профиты кажутся в порядке с разницей в том, что стоп-лосс 30 или 300, а тейк-профит 100 или 1000 пибсов выше или ниже текущей цены.
Я не могу найти причину, по которой сервер выдает мне ошибку 10016, когда STP и TKP не умножаются на 10.
Кто-нибудь может объяснить мне, почему возникает эта ошибка или какова цель умножения на 10, когда _цифры равны 5 или 3?
Спасибо за помощь.
Здравствуйте,
Во-первых, из вашего объяснения следует, что когда вы удалили эти строки кода, вы получили ошибку, а когда вы не умножили значения стоплосса/тейкпрофита на 10, вы получили ошибку? Это, я думаю, объясняет, что эти строки кода очень важны.
Вернемся к статье, в которой объяснялось, что эти строки кода необходимы, если вы используете график с 5 десятичными цифрами (0.XXXXX) или 3 десятичными цифрами (0.XXX) валютных пар.
Поэтому здесь мы хотим убедиться, что наш советник хорошо работает со всеми брокерами.Digits или Digits()возвращает количество десятичных цифр, определяющих точность цены текущего символа графика. Для 5-значного или 3-значного ценового графика мы умножаем стоп-лосс и тейк-профит на 10.
Смотрите примеры ниже:
5 - Десятичные цифры цены
3 - цена в десятичных цифрах
Надеюсь, это ответило на ваш вопрос.
Здравствуйте,
Не могли бы вы сообщить нам, как вы получаете ошибку?
шаг 1: скачайте этот пример кода.
шаг 2: скомпилируйте его в mql5.
шаг 3: в mt5откройте график eurusd 1m, затем нажмите "автоторговля".
шаг 4:установите символ разрыва в строке кода 223,224 и т.д..
шаг 5:нажмите кнопку "запустить отладку" в mt5, затем, покажите эту ошибку.
шаг 1: загрузите этот пример кода.
шаг 2: скомпилируйте его в mql5.
шаг 3:в mt5откройте график eurusd 1m, затем нажмите "автоторговля".
шаг 4:установите символ разрыва в строке кода 223,224 и т.д..
шаг 5:нажмите кнопку "запустить отладку" в mt5, затем, покажите эту ошибку.
Здравствуйте,
Спасибо, что поделились своими шагами. Если я могу вернуть вас к коду,
if(mresult.retcode==10009 || mresult.retcode==10008) //Request is completed or order placed
{
Alert("A Buy order has been successfully placed with Ticket#:",mresult.order,"!!");
}
else
{
Alert("The Buy order request could not be completed -error:",GetLastError()); // line 223
ResetLastError(); // line 224
return;
}
Насколько я знаю, код сделал то, что должен был сделать. Вы получили ошибку, потому что ордер, который вы пытались разместить, был НЕ УСПЕШНЫМ, и это то, что строка 223 должна была сделать. Пожалуйста, прочитайте это - https://www.mql5.com/ru/docs/constants/errorswarnings/enum_trade_return_codes - чтобы понять, что означает ошибка (на самом деле, 10030 означает Неверныйтип заполнения ордера ).
Чтобы понять, что означает тип заполнения ордера -ORDER_FILLING_FOK -
mrequest.type_filling = ORDER_FILLING_FOK; // Order execution type ( line 213 )
означает, пожалуйста, прочитайте https://www.mql5.com/ru/docs/constants/tradingconstants/orderproperties#enum_order_type_filling.
Надеюсь, это ответило на ваш вопрос.
Привет, Самуэль,
Я скачал код, установил его, запустил и понял, что он открывает ордера на покупку и продажу в основном на каждой свече, которая соответствует критериям (я использую H1 в качестве таймфрейма).
Я не проводил отладку и понял, что некоторые части кодов не срабатывают. Смогли ли вы, ребята, запустить советник правильно с кодом, доступным для скачивания?