Bibliotecas: MT4Orders - página 54

 
bp2000:
No se puede cambiar el color en OrderSend()

Color de la flecha de apertura en el gráfico. Si falta el parámetro o tiene el valor CLR_NONE, la flecha de apertura no se dibuja en el gráfico.

Si no me equivoco, en MT5 las operaciones de trading no están ligadas a colores de ninguna manera. No sé cómo históricamente los desarrolladores decidieron añadir color a MT4-OrderSend. Después de todo, no tiene nada que ver con el trading.

 
No quiero que dibuje "flecha de apertura" en el gráfico.
He intentado cambiar el color a clrNONE, pero no funciona.
También dibuja flecha azul para COMPRA, flecha roja para VENTA.
 
bp2000:
No quiero que dibuje "flecha de apertura" en el gráfico.
He intentado cambiar el color a clrNONE, pero no funciona.
También dibuja flecha azul para COMPRA, flecha roja para VENTA.

Puede desactivar el dibujo en el gráfico y la configuración de Terminal.

 

¿Es posible hacerlo funcionar?

 
Lo siento. Ahora séque MqlTradeRequest no proporciona nada parecido.
 
// Lista de cambios:
// 21.10.2020
// Añadir: Añadido OrderTicketID() para compatibilidad con MT4 - devuelve OrderTicket().
 
fxsaber:

Pregunta, como obtener el ticket de una orden pendiente despues de su creacion sin buscar en la enumeracion de ordenes por magik, es posible. Y cómo (es posible con una petición) seguir la ejecución de una orden en una posición y obtener un ticket de la posición para su modificación. En 4ka OrderSend devolvía el ticket, en 5ka el hecho de la ejecución. Y para seleccionar - cargar datos de orden/posición en la estructura de datos correspondiente, se necesita un ticket.

bool Res=OrderSend(Symbs, OP_SELLSTOP,Lots,Prices,slippage,SLs,TPs,"QstrSellStop",Magic,Close_Time,Blue);//Abrir SellStop
 if(Res==false) //No funcionó :)
Alert( "Fun_Error = ",GetLastError());
...
Tickets5= //.... Cómo conseguir una entrada 
Alert(Symbol()," TF ",Period(),"Orden de venta abierta al precio de ",Bid,"Tickets5 = ",Tickets5);
              
 
Valeriy Yastremskiy:

En 4ka OrderSend devolvía el ticket, en 5ka el hecho de la ejecución.

MT4Orders es MT4-style en MT5. Por lo tanto el comportamiento de OrderSend es el mismo que el homólogo de MT4.

 

Tales trucos de MT5 no sólo son fáciles de reproducir, sino también de trabajar con ellos en una cuenta real - los Asesores Expertos de MT5 no se verán obstaculizados por las caídas de MT5.

Es difícil decir cómo las soluciones alternativas reaccionarán en tal situación.

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

MT4Orders es MT4-style en MT5. Por lo tanto, el comportamiento de OrderSend es el mismo que su homólogo MT4.

Si, esta parte funciona y el ticket de la orden pendiente pasa al ticket de la posición y todo se modifica, pero no funciona todo el tiempo. Al cerrar una posición aparece un trato en las órdenes SL o TP y no funciona el check en el ticket para el momento de cerrar una orden de mercado.

Me rompe la cabeza. Cierre por SL. En el tester, si el ticket de la orden es 3, coincide con el ticket de la operación y el último selector es normal. Si es 2, el error de selección es 4754. En real/demo siempre no coincide.

Лог
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)

// comprobar el cierre de la posición
if(OrderSelect(Tickets, SELECT_BY_TICKET)==true) // Al cerrar por SL y devuelve error 4754.
        {
         if(OrderCloseTime()==0)              //Quéreemplazar, cómo saber que la posición no está en la historia
           {
            ModifyTral();
            return;
           }
         if(OrderCloseTime()!=0)              // Y luego sustituirlo para darse cuenta de que la posición ha pasado a la historia
           {
            End=true;
            Alert("Nuestra orden de mercado se ha cerrado. El trabajo del Consejero ha terminado".,
                  "Intercambio = ", OrderSwap(), "Comisión = ", OrderCommission()); // эта часть работает в тестере)))
            return;
           }
        }

Тикет ордера позиции не 3
LO      0       19:16:54.104    Time_Open_Trail_2_21 (EURUSD,M5)        2018.07.02 00:10:17   Alert: Проверяем закрытие Позиции и Модифицируем если нужно Tickets 2 Or 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 2 Or 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:00 Tickets 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 3 Or 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 3 Or 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:37 Tickets 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

//Solución estúpida, por supuesto.

if(OrderSelect(Tickets, SELECT_BY_TICKET)==true)
        {
         if(OrderCloseTime()==0)              // Si nuestra orden de mercado no está cerrada
           {
            ModifyTral();
            return;
           }
         if(OrderCloseTime()!=0)              // Si nuestra orden de mercado se ha cerrado
           {
            End=true;
            Alert("Nuestra orden de mercado se ha cerrado. Hora de cierre".,OrderCloseTime(),"Tickets ",Tickets,
                  "Intercambio = ", OrderSwap(), "Comisión = ", OrderCommission());
            return;
           }
        }
      else
      {
            
         Alert("OrderSelect() de nuestra orden de mercado devolvió un error - ",GetLastError());
         
         End=true;
            Alert("O Nuestra orden de mercado se ha cerrado. hora de cierre".,OrderCloseTime(),"Tickets ",Tickets,
                  "Intercambio = ", OrderSwap(), "Comisión = ", OrderCommission());
            return;
     }