При закрытии позиций на форексе, хеджинговый счёт сервер MetaQuotes-Demo, регулярно появляется OrderSend error 4756.
deviation делал даже 10000, ошибка всё равно остаётся. Позиция может закрыться и с третьего и с четвёртого раза.
Код для закрытия такой:
void PositionClose(ENUM_POSITION_TYPE position_type)
{
ResetLastError();
double sl=0, tp=0;
int total = PositionsTotal(); // количество открытых позиций//--- перебор всех открытых позицийfor(int i = 0; i <= total; i++)
{
//--- параметры ордераulong position_ticket = PositionGetTicket(i);
Пробовал использовать СБ , ошибка пропадает, но позиции всё равно не закрывает, программа просто пропускает их и закрывает не в цикле а только при повторных заходах в функцию закрытия сделок.
В чём может быть причина? Как избавится от этой ошибки?
MqlTradeRequest request = {};
MqlTradeResult result = {};
При обработке события OnTradeTransaction я меняю SL у позиции. Я обнаружил, что при объявлении переменной request без пустых значений, она содержала мусор во всех полях. Т.к. заполняются только 5 полей, возможно остальной мусор как-то влияет на обработку структуры запроса сервером.
В чём может быть причина?
В нестрогом неравенстве.
Как избавится от этой ошибки?
Сделать неравенство строгим.
Чтоб не плодить одинаковые темы, спрошу здесь.
При закрытии позиций на форексе, хеджинговый счёт сервер MetaQuotes-Demo, регулярно появляется OrderSend error 4756.
deviation делал даже 10000, ошибка всё равно остаётся. Позиция может закрыться и с третьего и с четвёртого раза.
Код для закрытия такой:
Пробовал использовать СБ , ошибка пропадает, но позиции всё равно не закрывает, программа просто пропускает их и закрывает не в цикле а только при повторных заходах в функцию закрытия сделок.
В чём может быть причина? Как избавится от этой ошибки?
1. Начните с этого места - направление перебора.
2. Добавьте вывод код торгового сервера
И все вопросы отпадут
Странно что вы, с вашим опытом отвечаете на вопрос годовалой давности…
На год не посмотрел. Что странного
1. Начните с этого места - направление перебора.
2. Добавьте вывод код торгового сервера
И все вопросы отпадут
Denis Sartakov:
Вообще говоря, правильно в обратном направлении. Это азбука работы с ордерами и позициями при закрытии и удалении
Для себя нашел решение такое:
При обработке события OnTradeTransaction я меняю SL у позиции. Я обнаружил, что при объявлении переменной request без пустых значений, она содержала мусор во всех полях. Т.к. заполняются только 5 полей, возможно остальной мусор как-то влияет на обработку структуры запроса сервером.
Всем спасибо за ответы.
Я когда задавал вопрос, ещё не знал, что тему можно добавить в избранное)))
Моё решение этой проблемы на данный момент - это закрывать с помощью цикла в цикле.
Всем спасибо за ответы.
Я когда задавал вопрос, ещё не знал, что тему можно добавить в избранное)))
Моё решение этой проблемы на данный момент - это закрывать с помощью цикла в цикле.
Есть одна проблема:
Приходит тик - сигнал на закрытие позиции, но в этот момент "Рынок закрыт".
Функция начинает долбить сервер.
Нужна обработка ситуации, чтобы выйти с функции.
Есть одна проблема:
Приходит тик - сигнал на закрытие позиции, но в этот момент "Рынок закрыт".
Функция начинает долбить сервер.
Нужна обработка ситуации, чтобы выйти с функции.
Конечно, вы совершенно правы, обработка нужна обязательно и конечно я её делаю, здесь показал упрощённый пример кода, саму суть.