Библиотеки: MT4Orders - страница 53

 
I don't want it draw "opening arrow" on the chart.
I tried change the color to clrNONE, but not works.
It also draw blue arrow for BUY, red arrow for SELL.
 
bp2000:
I don't want it draw "opening arrow" on the chart.
I tried change the color to clrNONE, but not works.
It also draw blue arrow for BUY, red arrow for SELL.

В настройках графика и Терминала можно отключить рисование.

 

Is it possible to make it work?

 
Sorry! Now I know  MqlTradeRequest does not provide anything like that.
 
// Список изменений:
// 21.10.2020
//   Add: С целью совместимости для MT4 добавлена OrderTicketID() - возвращает OrderTicket().
 
fxsaber:

Вопрос, как получить тикет ордера отложенного ордера после его создания без поиска перебора ордеров по магику, можно ли. И как (можно ли одним запросом) отследить исполнение ордера в позицию и получить тикет позиции для модификации. В 4ке ОрдерСенд возвращал тикет, в 5ке факт исполнения. А что бы выбрать - загрузить данные ордера/позиции в соответствующую структуры данных, нужен тикет. 

bool Res=OrderSend(Symbs, OP_SELLSTOP,Lots,Prices,slippage,SLs,TPs,"QstrSellStop",Magic,Close_Time,Blue);//Открытие SellStop
 if(Res==false) //Не получилось :)
Alert( "Fun_Error = ",GetLastError());
...
Tickets5= //.... Как получить тикет       
Alert(Symbol()," ТФ ",Period(),"Открыт ордер Sell по цене ",Bid,"Tickets5 = ",Tickets5);
              
 
Valeriy Yastremskiy:

В 4ке ОрдерСенд возвращал тикет, в 5ке факт исполнения.

MT4Orders - MT4-style в MT5. Поэтому поведение OrderSend совпадает с MT4-аналогом.

 

Такие MT5-приколы библиотека позволяет не только легко воспроизвести, но работать с ними на реальном счете - советникам MT5-сбой не помешает.

Как отреагируют альтернативные решения в такой ситуации - сложно сказать.

Синхронный OrderSend сообщает об успешном выполнении быстрее, чем пинг до торгового сервера
Синхронный OrderSend сообщает об успешном выполнении быстрее, чем пинг до торгового сервера
  • 2020.10.07
  • www.mql5.com
Сабж на двух примерах. Пинг ~42 мс. Пример 1. Пример 2. Произвожу проверку на валидацию корректность многих действий в MT5...
 
fxsaber:

MT4Orders - MT4-style в MT5. Поэтому поведение OrderSend совпадает с MT4-аналогом.

Да, эта часть работает, и тикет ордера отложенного переходит в тикет позиции и все модифицируется, но сходу не получается все. При закрытии позиции появляется сделка по ордерам СЛ или ТП и проверка по тикету на время закрытия рыночного ордера не срабатывает.

Сломал голову. Закрытие по СЛ. В тестере если тикет ордера 3, то он совпадает с тикетом сделки и последний селектордер норм. Если 2 то ошибка выбора 4754. На реале/демо всегда не совпадает.

Лог
2020.10.22 16:46:14.665 Trades  '25610628': accepted modify #745859775 sell 1 EURUSD sl: 1.18258, tp: 1.18197 -> sl: 1.18254, tp: 1.18194
2020.10.22 16:46:14.672 Trades  '25610628': modify #745859775 sell 1 EURUSD -> sl: 1.18254, tp: 1.18194 done in 129.694 ms
2020.10.22 16:48:06.783 Trades  '25610628': deal #725926213 buy 1 EURUSD at 1.18254 done (based on order #745887632)

// проверка на закрытие позиции
if(OrderSelect(Tickets, SELECT_BY_TICKET)==true) // При закрытии по СЛ и возвращает ошибку 4754.
        {
         if(OrderCloseTime()==0)              //Чем заменить, как узнать что позиция не в истории
           {
            ModifyTral();
            return;
           }
         if(OrderCloseTime()!=0)              // И тут заменить что бы понять что позиция ушла в историю
           {
            End=true;
            Alert("Наш рыночный ордер закрылся. Работа Советника завершена ",
                  " Своп = ", OrderSwap(), " Комиссия = ", OrderCommission()); // эта часть работает в тестере)))
            return;
           }
        }

Тикет ордера позиции не 3
LO      0       19:16:54.104    Time_Open_Trail_2_21 (EURUSD,M5)        2018.07.02 00:10:17   Alert: Проверяем закрытие Позиции и Модифицируем если нужно Tickets 2Or 0
ON      0       19:16:54.104    Trade   2018.07.02 00:10:19   stop loss triggered #2 buy 1 EURUSD 1.16771 sl: 1.16719 tp: 1.17241 [#4 sell 1 EURUSD at 1.16719]
LQ      0       19:16:54.104    Trades  2018.07.02 00:10:19   deal #3 sell 1 EURUSD at 1.16719 done (based on order #4)
HN      0       19:16:54.104    Trade   2018.07.02 00:10:19   deal performed [#3 sell 1 EURUSD at 1.16719]
RI      0       19:16:54.104    Trade   2018.07.02 00:10:19   order performed sell 1 at 1.16719 [#4 sell 1 EURUSD at 1.16719]
FJ      0       19:16:54.104    Time_Open_Trail_2_21 (EURUSD,M5)        2018.07.02 00:10:19   Alert: Проверяем закрытие Позиции и Модифицируем если нужно Tickets 2Or 0
FI      0       19:16:54.104    Time_Open_Trail_2_21 (EURUSD,M5)        2018.07.02 00:10:19   Alert: OrderSelect() нашего рыночного ордера вернул ошибку - 4754
IQ      0       19:16:54.104    Time_Open_Trail_2_21 (EURUSD,M5)        2018.07.02 00:10:19   Alert: Или Наш рыночный ордер закрылся. время закрытия 1970.01.01 00:00:00Tickets 2 Своп = 0.0 Комиссия = 0.0
KN      0       19:16:54.104    Time_Open_Trail_2_21 (EURUSD,M5)        2018.07.02 00:10:21   Alert: Работа эксперта завершена. Прибыль/убыток = 0.0



Тикет ордера-позиции 3
PF      0       19:21:30.198    Time_Open_Trail_2_21 (EURUSD,M5)        2018.07.02 00:44:36   Alert: Проверяем закрытие Позиции и Модифицируем если нужно Tickets 3Or 1
KH      0       19:21:30.198    Trade   2018.07.02 00:44:37   stop loss triggered #3 sell 1 EURUSD 1.16740 sl: 1.16800 tp: 1.16277 [#4 buy 1 EURUSD at 1.16800]
DN      0       19:21:30.198    Trades  2018.07.02 00:44:37   deal #3 buy 1 EURUSD at 1.16802 done (based on order #4)
LJ      0       19:21:30.198    Trade   2018.07.02 00:44:37   deal performed [#3 buy 1 EURUSD at 1.16802]
EF      0       19:21:30.198    Trade   2018.07.02 00:44:37   order performed buy 1 at 1.16802 [#4 buy 1 EURUSD at 1.16800]
CL      0       19:21:30.198    Time_Open_Trail_2_21 (EURUSD,M5)        2018.07.02 00:44:37   Alert: Проверяем закрытие Позиции и Модифицируем если нужно Tickets 3Or 1
QJ      0       19:21:30.198    Time_Open_Trail_2_21 (EURUSD,M5)        2018.07.02 00:44:37   Alert: Наш рыночный ордер закрылся. время закрытия 2018.07.02 00:44:37Tickets 3 Своп = 0.0 Комиссия = 0.0
NE      0       19:21:30.198    Time_Open_Trail_2_21 (EURUSD,M5)        2018.07.02 00:44:37   Alert: Работа эксперта завершена. Прибыль/убыток = -62.0

//Тупое конечно решение

if(OrderSelect(Tickets, SELECT_BY_TICKET)==true)
        {
         if(OrderCloseTime()==0)              // Если наш рыночный ордер не закрыт
           {
            ModifyTral();
            return;
           }
         if(OrderCloseTime()!=0)              // Если наш рыночный ордер закрылся
           {
            End=true;
            Alert("Наш рыночный ордер закрылся. время закрытия ",OrderCloseTime(),"Tickets ",Tickets,
                  " Своп = ", OrderSwap(), " Комиссия = ", OrderCommission());
            return;
           }
        }
      else
      {
            
         Alert("OrderSelect() нашего рыночного ордера вернул ошибку - ",GetLastError());
         
         End=true;
            Alert("Или Наш рыночный ордер закрылся. время закрытия ",OrderCloseTime(),"Tickets ",Tickets,
                  " Своп = ", OrderSwap(), " Комиссия = ", OrderCommission());
            return;
     }
 
Valeriy Yastremskiy:

Да, эта часть работает, и тикет ордера отложенного переходит в тикет позиции и все модифицируется, но сходу не получается все. При закрытии позиции появляется сделка по ордерам СЛ или ТП и проверка по тикету на время закрытия рыночного ордера не срабатывает.

Сломал голову. Закрытие по СЛ. В тестере если тикет ордера 3, то он совпадает с тикетом сделки и последний селектордер норм. Если 2 то ошибка выбора 4754. На реале/демо всегда не совпадает.

Приведите mq5-файл, который Вам видится нерабочим. Вы зря столько инфы приводите. Она не помогает понять, что имеете в виду. Лучше исходник.

Причина обращения: