Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 799
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо! А я искал и не нашел...
Тогда следующий вопрос, допустим шаг 25, то как организовать округление к числу кратному 25, может функция какая есть?
https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/csymbolinfo/csymbolinfonormalizeprice
https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/csymbolinfo/csymbolinfonormalizeprice
Спасибо, но я использую не стандартную торговую библиотеку.
Нет кода, нет комментариев.
Да, странно. Прикрепил файл, но не проверил. Виноват. Сейчас прикрепляю и код и выдержку из кода в котором тестер выдает строку с [Invalid stops]. В этом куске кода хочу понять как работает структура MqlTradeRequest при модификации позиции. В моём случае при изменении стопа по SAR. Но избавится от сообщения тестера [Invalid stops] не могу. Инструмент RTS Splice.
Да, странно. Прикрепил файл, но не проверил. Виноват. Сейчас прикрепляю и код и выдержку из кода в котором тестер выдает строку с [Invalid stops]. В этом куске кода хочу понять как работает структура MqlTradeRequest при модификации позиции. В моём случае при изменении стопа по SAR. Но избавится от сообщения тестера [Invalid stops] не могу. Инструмент RTS Splice.
Это, на первый взгляд, не тот кусок кода, где стоит искать ошибку. Здесь напрягает только трехкратный выбор одной и той же позиции. Избыточно.
У Вас ошибка в некорректных стопах, наверно, нужно начать поиск с места, где эти стопы рассчитываются.
Да, странно. Прикрепил файл, но не проверил. Виноват. Сейчас прикрепляю и код и выдержку из кода в котором тестер выдает строку с [Invalid stops]. В этом куске кода хочу понять как работает структура MqlTradeRequest при модификации позиции. В моём случае при изменении стопа по SAR. Но избавится от сообщения тестера [Invalid stops] не могу. Инструмент RTS Splice.
Для полного понимания надо уточнить какой тип счёта hadge или netting
Разбор полёта при условии что тип счёта hadge
Выбрали позицию по символу, НО она может быть совсем не та которую мечтали увидеть...
А вот теперь выбрали именно ту позицию которая нужна.
Дальше ещё раз попытка выбрать нужную позицию
И опять вероятность что выбрана не та позиция которая нужна очень велика
Чтобы проверить как поведёт себя функция OrderSend() в этом случае, надо сделать так и проверить, но лучше сделать как должно быть и если ошибка не пропала распечатать не только код ошибки, но и тикет позиции, цену позиции, цену новых стоп и тейк. Это минимум.
Для полного понимания надо уточнить какой тип счёта hadge или netting
Спасибо за комментарии. Тип счета netting. Инструмент RTS Splice. В этом то и вся сложность? Одна позиция на одном символе. Выбирать можно хоть как, всё равно попадешь на эту позицию. Это же не отложенные ордера? Поэтому я ещё больше не понимаю - ЧТО НЕ ТАК??? Перепробовал все варианты.
Спасибо за комментарии. Тип счета netting. Инструмент RTS Splice. В этом то и вся сложность? Одна позиция на одном символе. Выбирать можно хоть как, всё равно попадешь на эту позицию. Это же не отложенные ордера? Поэтому я ещё больше не понимаю - ЧТО НЕ ТАК??? Перепробовал все варианты.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Вопросы от начинающих MQL5 MT5 MetaTrader 5
Alexey Viktorov, 2017.11.22 09:29
Чтобы проверить как поведёт себя функция OrderSend() в этом случае, надо сделать так и проверить, но лучше сделать как должно быть и если ошибка не пропала распечатать не только код ошибки, но и тикет позиции, цену позиции, цену новых стоп и тейк. Это минимум.
Поэтому я ещё больше не понимаю - ЧТО НЕ ТАК??? Перепробовал все варианты.
Вставьте эту строку в место, где возникает ошибка
Print(ToString(request) + ToString(result));
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2017.02.25 16:27
Перевод в строку MqlTrade-структур#define TOSTRING2(A) #A + " = " + EnumToString(A) + " (" + (string)(A) + ")\n"
string ToString( const MqlTradeTransaction &Trans )
{
return(TOSTRING(Trans.deal) + TOSTRING(Trans.order) + TOSTRING(Trans.symbol) +
TOSTRING2(Trans.type) + TOSTRING2(Trans.order_type) + TOSTRING2(Trans.order_state) +
TOSTRING2(Trans.deal_type) + TOSTRING2(Trans.time_type) +
TOSTRING(Trans.time_expiration) + TOSTRING(Trans.price) + TOSTRING(Trans.price_trigger) +
TOSTRING(Trans.price_sl) + TOSTRING(Trans.price_tp) + TOSTRING(Trans.volume) +
TOSTRING(Trans.position) + TOSTRING(Trans.position_by));
}
string ToString( const MqlTradeRequest &Request )
{
return(TOSTRING2(Request.action) + TOSTRING(Request.magic) + TOSTRING(Request.order) +
TOSTRING(Request.symbol) + TOSTRING(Request.volume) + TOSTRING(Request.price) +
TOSTRING(Request.stoplimit) + TOSTRING(Request.sl) + TOSTRING(Request.tp) +
TOSTRING(Request.deviation) + TOSTRING2(Request.type) + TOSTRING2(Request.type_filling) +
TOSTRING2(Request.type_time) + TOSTRING(Request.expiration) + TOSTRING(Request.comment) +
TOSTRING(Request.position) + TOSTRING(Request.position_by));
}
string ToString( const MqlTradeResult &Result )
{
return(TOSTRING(Result.retcode) + TOSTRING(Result.deal) + TOSTRING(Result.order) +
TOSTRING(Result.volume) + TOSTRING(Result.price) + TOSTRING(Result.bid) +
TOSTRING(Result.ask) + TOSTRING(Result.comment) + TOSTRING(Result.request_id) +
TOSTRING(Result.retcode_external));
}
#undef TOSTRING
#undef TOSTRING2
Вставьте эту строку в место, где возникает ошибка
Вставил. Вот результат тестера:
2017.11.22 18:22:51.127 2016.11.09 12:00:00 exchange buy 1.00 RTS Splice at 98080 sl: 94130 (98070 / 98080 / 98070)
2017.11.22 18:22:51.127 2016.11.09 12:00:00 deal #4 buy 1.00 RTS Splice at 98080 done (based on order #4)
2017.11.22 18:22:51.127 2016.11.09 12:00:00 deal performed [#4 buy 1.00 RTS Splice at 98080]
2017.11.22 18:22:51.127 2016.11.09 12:00:00 order performed buy 1.00 at 98080 [#4 buy 1.00 RTS Splice at 98080]
2017.11.22 18:22:53.561 2016.11.09 14:05:00 failed modify #4 buy 1.00 RTS Splice sl: 94130, tp: 0 -> sl: 94316, tp: 0 [Invalid stops]
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.action = TRADE_ACTION_SLTP (6)
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.magic = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.order = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.symbol = RTS Splice
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.volume = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.price = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.stoplimit = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.sl = 94316.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.tp = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.deviation = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.type = ORDER_TYPE_BUY (0)
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.type_filling = ORDER_FILLING_FOK (0)
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.type_time = ORDER_TIME_GTC (0)
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.expiration = 1970.01.01 00:00:00
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.comment =
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.position = 4
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.position_by = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.retcode = 10016
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.deal = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.order = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.volume = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.price = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.bid = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.ask = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.comment = Invalid stops
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.request_id = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.retcode_external = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Alert: Ошибка модификации позиции по TP и SL код ошибки: 4756
Вставил. Вот результат тестера:
Сервер и режим тестера?