Проблема с торговым запросом - страница 3

 
Alexey Viktorov:

Именно об этом я и говорю, вручную сформировать запрос!!! Именно на примеры ручного формирования запроса я давал ссылки.

А что значит "в обход request"? Зачем изгаляться выворачивая весь язык программирования как это сделал fxsaber в соей библиотеке??? Там ведь как ни крути на выходе точно такое-же заполнение структуры и отправка запроса по правилам mq4, но никак не mql4.

Посмотрите мои скрины выше и станет понятно, зачем
 
Soova:
Alexey Viktorov:

Внимательней смотрите документацию. Я вам сказал что там есть неточности. Как для модификации так и для закрытия нужно указывать тикет. Это видно в примерах функций что приведены ниже каждого типа запроса.

Вот пример заполнения запроса на закрытие позиции

Это тоже из примера в документации.

У меня точно такой же запрос, но order остается в ноль, он не меняется, данные из request.position не отображаются в запросе и в этом проблема, ни тикетов, ни ордеров, ни позиций в запросе нет, request формирует запрос не для хеджинга, а для нетинга, возможно надо выполнять проверку на соответствие запроса хеджингу, хотя тикет можно указывать и при нетинге, но request эту наиважнейшую инфу игнорирует

order:0

не тот тикет модифицирует

Наконец-то понятна ошибка.

Перед модификацией позиции её надо выбрать, получить её тикет и этот тикет сунуть в структуру. На вашем снимке pos_ticket откуда взят?

 
Soova:
Посмотрите мои скрины выше и станет понятно, зачем

Я допустил опечатку в своём посте. Исправлено.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Проблема с торговым запросом

Alexey Viktorov, 2018.04.27 18:46

Именно об этом я и говорю, вручную сформировать запрос!!! Именно на примеры ручного формирования запроса я давал ссылки.

А что значит "в обход request"? Зачем изгаляться выворачивая весь язык программирования как это сделал fxsaber в соей библиотеке??? Там ведь как ни крути на выходе точно такое-же заполнение структуры и отправка запроса по правилам mq5, но никак не mql4.


 
Alexey Viktorov:

Наконец-то понятна ошибка.

Перед модификацией позиции её надо выбрать, получить её тикет и этот тикет сунуть в структуру. На вашем снимке pos_ticket откуда взят?

//--- объявление запроса и результата
   MqlTradeRequest request;
   MqlTradeResult  result;
   int total=PositionsTotal(); // количество открытых позиций   
//--- перебор всех открытых позиций
   for(int i=0; i<total; i++)
     {
      //--- параметры ордера
      ulong  pos_ticket=PositionGetTicket(i);// тикет позиции

..................

request.action  =TRADE_ACTION_SLTP// тип торговой операции
         request.position=pos_ticket;   // тикет позиции
         request.symbol=position_symbol;     // символ 

 
Soova:

//--- объявление запроса и результата
   MqlTradeRequest request;
   MqlTradeResult  result;
   int total=PositionsTotal(); // количество открытых позиций   
//--- перебор всех открытых позиций
   for(int i=0; i<total; i++)
     {
      //--- параметры ордера
      ulong  pos_ticket=PositionGetTicket(i);// тикет позиции

..................

request.action  =TRADE_ACTION_SLTP// тип торговой операции
         request.position=pos_ticket;   // тикет позиции
         request.symbol=position_symbol;     // символ 

Вот почему приходится клещами вытаскивать проблему по кусочку???

Чем заканчивается цикл?

//--- перебор всех открытых позиций
   for(int i=0; i<total; i++)
     {
      //--- параметры ордера
      ulong  pos_ticket=PositionGetTicket(i);// тикет позиции

Разве сложно вставить полный кусок кода от получения тикета, через заполнение структуры до отправки запроса?

Если в структуре нормальный тикет, значит проблема в другом.

Вот советник, выставляет две позиции и сразу их модифицирует.

Файлы:
00.mq5  9 kb
 
Alexey Viktorov:

Вот почему приходится клещами вытаскивать проблему по кусочку???

Чем заканчивается цикл?

Разве сложно вставить полный кусок кода от получения тикета, через заполнение структуры до отправки запроса?

Если в структуре нормальный тикет, значит проблема в другом.

Вот советник, выставляет две позиции и сразу их модифицирует.

Ваш эксперт не запускается, покажите скрины. Скопируйте код из справки и посмотрите, они идентичны. Чем заканчивается цикл? Это у вас шутки такие, чем он по вашему должен заканчиваться, фигурной скобкой. Запустил, у вас цифры под 4-х значку были, проверяю. Первое. он открывает только одну позицию, второе позицию он не модифицирует, вы его тестировали?
 
Soova:
Ваш эксперт не запускается, покажите скрины. Скопируйте код из справки и посмотрите, они идентичны. Чем заканчивается цикл? Это у вас шутки такие, чем он по вашему должен заканчиваться, фигурной скобкой. Запустил, у вас цифры под 4-х значку были, проверяю. Первое. он открывает только одну позицию, второе позицию он не модифицирует, вы его тестировали?

Извиняюсь, я после проверки вынес из блока строку

int posTotal = PositionsTotal();

и не проверил повторно. Вот исправленная версия. Добавил распечатку успешного открытия и успешной модификации позиций.

Цифры там 5-ти значные.

Файлы:
00.mq5  9 kb
 
Alexey Viktorov:

Извиняюсь, я после проверки вынес из блока строку

и не проверил повторно. Вот исправленная версия. Добавил распечатку успешного открытия и успешной модификации позиций.

Цифры там 5-ти значные.

вы зачем обманываете? он открывает две встречные позиции buy и sell, окройте две позиции buy и попробуйте модифицировать

1


3

4

 
Soova:
вы зачем обманываете? он открывает две встречные позиции buy и sell, окройте две позиции buy и попробуйте модифицировать

В чем разница??? Если счёт hadge будут две позиции? Сейчас сделаю и покажу снимок.

 
Alexey Viktorov:

В чем разница??? Если счёт hadge будут две позиции? Сейчас сделаю и покажу снимок.

именно в этом разница, вам надо модифицировать последнюю позицию, а он всегда модифицирует наименьший тикет. и я пропустил, он у вас SL и TP выставил в ноль
Причина обращения: