Вырезал по максимуму. Оставил только модификацию позиции BUY: просто пытаемся тупо выставить SL и TP заданные во входных параметрах.
Как результат:
CTrade::OrderSend: modify position #323221286 GBPUSD (sl: 1.27716, tp: 1.28716) [market closed]
Modify 323221286 Position -> false. Result Retcode: 10018, description of result: market closed
File: Stop Loss Take Profit.mq5, symbol: GBPUSD
Code of request result: 10018
code of request result as a string: market closed
Deal ticket: 0
Order ticket: 0Volume of deal or order: 0.00
Price, confirmed by broker: 0.00000
Current bid price: 1.28216 (the requote): 0.00000
Current ask price: 1.28332 (the requote): 0.00000
Broker comment: Market closed
Freeze Level: 0, Stops Level: 0
Price of position opening: 1.28702
Price of position's Stop Loss: 0.00000
Price of position's Take Profit: 1.28816
Current price by position: 1.28216
закономерно получаем 10018.
ВНИМАНИЕ: данный код НЕЛЬЗЯ применять в реале! Здесь не анализруется текущий SL и TP у позиции, нет проверки на уровни заморозки и отступа ...
Вырезал по максимуму. Оставил только модификацию позиции BUY: просто пытаемся тупо выставить SL и TP заданные во входных параметрах.
Как результат:
закономерно получаем 10018.
ВНИМАНИЕ: данный код НЕЛЬЗЯ применять в реале! Здесь не анализруется текущий SL и TP у позиции, нет проверки на уровни заморозки и отступа ...
Владимир, я попробовал Ваш скрипт. Действительно, получил ожидаемый результат 10018, то есть рынок закрыт. Я буду совершенствовать этот скрипт: добавлю модификацию для POSITION_TYPE_SELL, добавлю анализ SL и TP на предмет того, может они уже такие, как я хочу, и, следовательно, в модификации не нуждаются. Не знаю, есть ли смысл проверять уровни заморозки и отступа.
В любом случае, огромное Вам спасибо за хлопоты ! Можно было, конечно, найти в Code Base такой уже готовый скрипт. Но хотелось бы иметь свой скрипт, которым я лично умею управлять, исправлять ...
Владимир, я попробовал Ваш скрипт. Действительно, получил ожидаемый результат 10018, то есть рынок закрыт. Я буду совершенствовать этот скрипт: добавлю модификацию для POSITION_TYPE_SELL, добавлю анализ SL и TP на предмет того, может они уже такие, как я хочу, и, следовательно, в модификации не нуждаются. Не знаю, есть ли смысл проверять уровни заморозки и отступа.
В любом случае, огромное Вам спасибо за хлопоты ! Можно было, конечно, найти в Code Base такой уже готовый скрипт. Но хотелось бы иметь свой скрипт, которым я лично умею управлять, исправлять ...
Вот и ладненько. Счёт вытираю из своего терминала.
Ренат, я эту функцию не держу в секрете. Может, она Вам не понравится, но она у меня работает надёжно. На вход поступают четырехзначные старые пункты, например, 90 пп. Эта функция переводит их в дробь: в 0.00900:
double Перевод_пунк_в_дробь(double X)
{
double Y = 0;
// Определяем 4 или 5-значность ДЦ:if( Digits() == 5) Y = X*10*Point();
if( Digits() == 4) Y = X*Point();
if( Digits() == 3) Y = X*10*Point();
if( Digits() == 2) Y = X*Point();
if( Digits() == 1) Y = X*10*Point();
if( Digits() == 0) Y = X;
Y = NormalizeDouble(Y, Digits());
return Y;
}
Victor Ziborov: Сегодня воскресенье. Рынок закрыт. Отлаживаю скрипт по модификации СЛ и ТП открытой позиции в mql5 с помощью PositionModify. Тоже получаю ошибку 4756 (после GetLastError()). Но если рынок закрыт (воскресенье), то ошибка должна быть 10018. Пока не понимаю, что происходит.
Не удалось отправить торговый запрос. Потому, что рынок закрыт.
Ренат, я эту функцию не держу в секрете. Может, она Вам не понравится, но она у меня работает надёжно. На вход поступают четырехзначные старые пункты, например, 90 пп. Эта функция переводит их в дробь: в 0.00900:
Пробовал использовать СБ , ошибка пропадает, но позиции всё равно не закрывает, программа просто пропускает их и закрывает не в цикле а только при повторных заходах в функцию закрытия сделок.
В чём может быть причина? Как избавится от этой ошибки?
При закрытии позиций на форексе, хеджинговый счёт сервер MetaQuotes-Demo, регулярно появляется OrderSend error 4756.
deviation делал даже 10000, ошибка всё равно остаётся. Позиция может закрыться и с третьего и с четвёртого раза.
Код для закрытия такой:
Пробовал использовать СБ , ошибка пропадает, но позиции всё равно не закрывает, программа просто пропускает их и закрывает не в цикле а только при повторных заходах в функцию закрытия сделок.
В чём может быть причина? Как избавится от этой ошибки?
Думаю это косяк MQL, я смог решить подобный вопрос заменой функции “for” на “while”
Возможно что есть еще ошибки до того, как отправилась команда на сервер
Приведите выкопировку из кода по модификации позиции
Ренат, привожу текст скрипта на модификацию:
Ренат, привожу текст скрипта на модификацию:
Вырезал по максимуму. Оставил только модификацию позиции BUY: просто пытаемся тупо выставить SL и TP заданные во входных параметрах.
Как результат:
закономерно получаем 10018.
ВНИМАНИЕ: данный код НЕЛЬЗЯ применять в реале! Здесь не анализруется текущий SL и TP у позиции, нет проверки на уровни заморозки и отступа ...
Ренат, привожу текст скрипта на модификацию:
и эту функцию бы глянуть:
Вырезал по максимуму. Оставил только модификацию позиции BUY: просто пытаемся тупо выставить SL и TP заданные во входных параметрах.
Как результат:
закономерно получаем 10018.
ВНИМАНИЕ: данный код НЕЛЬЗЯ применять в реале! Здесь не анализруется текущий SL и TP у позиции, нет проверки на уровни заморозки и отступа ...
Владимир, я попробовал Ваш скрипт. Действительно, получил ожидаемый результат 10018, то есть рынок закрыт. Я буду совершенствовать этот скрипт: добавлю модификацию для POSITION_TYPE_SELL, добавлю анализ SL и TP на предмет того, может они уже такие, как я хочу, и, следовательно, в модификации не нуждаются. Не знаю, есть ли смысл проверять уровни заморозки и отступа.
В любом случае, огромное Вам спасибо за хлопоты ! Можно было, конечно, найти в Code Base такой уже готовый скрипт. Но хотелось бы иметь свой скрипт, которым я лично умею управлять, исправлять ...
Владимир, я попробовал Ваш скрипт. Действительно, получил ожидаемый результат 10018, то есть рынок закрыт. Я буду совершенствовать этот скрипт: добавлю модификацию для POSITION_TYPE_SELL, добавлю анализ SL и TP на предмет того, может они уже такие, как я хочу, и, следовательно, в модификации не нуждаются. Не знаю, есть ли смысл проверять уровни заморозки и отступа.
В любом случае, огромное Вам спасибо за хлопоты ! Можно было, конечно, найти в Code Base такой уже готовый скрипт. Но хотелось бы иметь свой скрипт, которым я лично умею управлять, исправлять ...
Вот и ладненько. Счёт вытираю из своего терминала.
и эту функцию бы глянуть:
Ренат, я эту функцию не держу в секрете. Может, она Вам не понравится, но она у меня работает надёжно. На вход поступают четырехзначные старые пункты, например, 90 пп. Эта функция переводит их в дробь: в 0.00900:
Сегодня воскресенье. Рынок закрыт. Отлаживаю скрипт по модификации СЛ и ТП открытой позиции в mql5 с помощью PositionModify. Тоже получаю ошибку 4756 (после GetLastError()). Но если рынок закрыт (воскресенье), то ошибка должна быть 10018. Пока не понимаю, что происходит.
Не удалось отправить торговый запрос. Потому, что рынок закрыт.
Ренат, я эту функцию не держу в секрете. Может, она Вам не понравится, но она у меня работает надёжно. На вход поступают четырехзначные старые пункты, например, 90 пп. Эта функция переводит их в дробь: в 0.00900:
а так ошибка исчезнет?
и тут бы я попробовал сразу:
Чтоб не плодить одинаковые темы, спрошу здесь.
При закрытии позиций на форексе, хеджинговый счёт сервер MetaQuotes-Demo, регулярно появляется OrderSend error 4756.
deviation делал даже 10000, ошибка всё равно остаётся. Позиция может закрыться и с третьего и с четвёртого раза.
Код для закрытия такой:
Пробовал использовать СБ , ошибка пропадает, но позиции всё равно не закрывает, программа просто пропускает их и закрывает не в цикле а только при повторных заходах в функцию закрытия сделок.
В чём может быть причина? Как избавится от этой ошибки?
Чтоб не плодить одинаковые темы, спрошу здесь.
При закрытии позиций на форексе, хеджинговый счёт сервер MetaQuotes-Demo, регулярно появляется OrderSend error 4756.
deviation делал даже 10000, ошибка всё равно остаётся. Позиция может закрыться и с третьего и с четвёртого раза.
Код для закрытия такой:
Пробовал использовать СБ , ошибка пропадает, но позиции всё равно не закрывает, программа просто пропускает их и закрывает не в цикле а только при повторных заходах в функцию закрытия сделок.
В чём может быть причина? Как избавится от этой ошибки?