Bibliotecas: MT4Orders - página 58

 

¡¡Esta libreria es increible!! Tan fácil de ejecutar código MT4 en MT5. Muchas Gracias

Tengo un problema, la función OrderTicket() no devuelve el número correcto cuando se cierra la operación. Esto es un verdadero problema para seguir una operación cuando se cierra.

Por ejemplo una operación # 4584849 se convertirá en # 38484939 cuando se cierre.

Gracias de antemano por su ayuda

Este es mi código en un script:

#include <MT4Orders1.mqh>
void OnStart()
  {
int n=OrdersTotal();
//pLog(StringConcatenateV4("detectCloseTrade n=",n," ticket=",ticket));
   for(int i=n-1; i>=0; i--)
     {
      //---
      //if((ticket=HistoryOrderGetTicket(i))>0 && isMagic())
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType()>=OP_BUY && OrderSymbol()==Symbol())
        {
         Print("MOH ",i, " ",OrderTicket());
        }
     }
  Print("History");
  n=OrdersHistoryTotal();
//pLog(StringConcatenateV4("detectCloseTrade n=",n," ticket=",ticket));
   for(int i=n-1; i>=0; i--)
     {
      //---
      //if((ticket=HistoryOrderGetTicket(i))>0 && isMagic())
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderType()>=OP_BUY && OrderSymbol()==Symbol())
        {
         Print("MOH ",i, " ",OrderTicket());
        }
     }
}
 
No es un problema. Una posición cerrada en MT5 tiene varias entradas. Todas funcionarán a través de SELECT_BY_TICKET.
Tal vez usted necesita OrderTicketID().
[Eliminado]  
¿Y cómo puedo desactivar todos los sprints y cálculos adicionales (si los hay)? No lo encuentro en las definiciones
 
Maxim Dmitrievsky:
¿Y cómo puedo desactivar todos los sprints y cálculos adicionales (si los hay)? No lo encuentro en las definiciones

Foro sobre negociación, sistemas de negociación automatizados y prueba de estrategias de negociación

Bibliotecas: MT4Orders

fxsaber, 2019.04.29 15:19

Si necesita mantener el uso de MT4Orders en su producto tácito, puede cortar las piezas relevantes de la fuente de la biblioteca o poner un stub universal
// Mediante macros cortamos cualquier indicio sobre la presencia de MT4Orders.
#define Alert PrintTmp
#define Print PrintTmp
  void PrintTmp( string ) {}
  
  #include <MT4Orders.mqh> // https://www.mql5.com/es/code/16006
#undef  Print
#undef  Alert
[Eliminado]  
fxsaber:

gracias

 
Un matiz de la diferencia entre MT4 y MT5.
#include <MT4Orders.mqh>

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  if (OrderSelect(OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0), SELECT_BY_TICKET)) // Abrir un pedido y seleccionarlo
    OrderPrint();                                                                                     // Imprime sus datos
    
  OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0) // Abrió un pedido, pero no seleccionó.
  OrderPrint();                                                   // MT4 devolverá el mismo resultado que antes, MT5 no necesariamente.
}


Resultado en MT5.

        #827589598 2021.01.13 01:21:17.832 buy limit 1.00 EURSEK 10.06849 0.00000 0.00000 10.06949 0.00 0.00 0.00 0
        #827589601 2021.01.13 01:21:17.895 buy limit 1.00 EURSEK 10.06849 0.00000 0.00000 10.06949 0.00 0.00 0.00 0 // En MT4 la cadena sería la misma que la anterior.


Después de las operaciones de trading (en el Terminal, no en el Probador) OrderLots(), OrderTicket() y otros valores pueden ser cambiados. Aquellos que conviertan desde MT4, tengan esto en cuenta.

 
fxsaber:

Después de las operaciones de trading (en el Terminal, no en el Probador) OrderLots(), OrderTicket() y otros valores pueden ser cambiados. Los que convierten de MT4, tener esto en cuenta.

Del mismo modo después de OrdersTotal.

#include <MT4Orders.mqh>

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  if (OrderSelect(OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0), SELECT_BY_TICKET)) // Abrir un pedido y seleccionarlo
    OrderPrint();                                                                                     // Imprime sus datos
    
  Sleep(10000); // Pausa.
  
  OrdersTotal();
  OrderPrint(); // MT4 devolverá el mismo resultado que antes, MT5 no necesariamente.
}


Resultado.

        #827619194 2021.01.13 02:07:50.296 buy limit 1.00 EURUSD 1.22012 0.00000 0.00000 1.22112 0.00 0.00 0.00 0
        #827619194 2021.01.13 02:07:50.296 buy limit 1.00 EURUSD 1.22012 0.00000 0.00000 1.22111 0.00 0.00 0.00 0
 
Estimado fxsaber, esta es probablemente una pregunta bananera, pero tengo que hacerla. Bibla funciona bien, pero en el tester aparece una peculiaridad. Al principio el Expert Advisor está martilleando algo muy fuerte sin emitir ticks, es decir, en cuanto aparece el primer tick empieza algo muy feroz y sólo después de unos minutos empieza a funcionar el tester. Ahora en MT5 fui a poner en el gráfico de búhos también se comió la primera garrapata y un núcleo está completamente cargado cuelga, princhu garrapatas en el registro que aparecen con una periodicidad de 2,5 minutos aproximadamente ). Y lo principal no está claro cuánto tiempo va a violar el terminal y si va a terminar en absoluto). Sov normalmente funciona a la cuarta a la quinta en principio no se puede usar. Ok he desactivado sprint, pero sólo se borró el registro, pero con el rendimiento de cómo ser? Sí, yo uso tanto el total de la historia y el orden de selección, de lo contrario ¿cuál es el punto de utilizar la lib. Es decir, no se puede utilizar robots postic, además esta cosa rompe OnTick y en consecuencia todas las interfaces de pie porque MQL5 OnChartEvent se cuelga en OnTick, no está claro por qué. ¿Hay alguna manera de desactivar todo esto que se burla de la terminal o no se proporciona en principio? Me gustaría mucho utilizar su lib en mi producto, pero no veo cómo todavía
 
Y no te tomes el tono como algo personal, siempre lo hago....
 
Evgeniy Ilin:
Estimado fxsaber, esta es probablemente una pregunta bananera, pero tengo que hacerla. Bibla funciona bien, pero en el tester aparece una peculiaridad. Al principio el Expert Advisor está martilleando algo muy fuerte sin emitir ticks, es decir, en cuanto aparece el primer tick empieza algo muy feroz y sólo después de unos minutos empieza a funcionar el tester. Ahora en MT5 fui a poner en el gráfico de búhos también se comió la primera garrapata y un núcleo está completamente cargado cuelga, princhu garrapatas en el registro que aparecen con una periodicidad de 2,5 minutos aproximadamente ). Y lo principal no está claro cuánto tiempo va a violar el terminal y si va a terminar en absoluto). Sov normalmente funciona a la cuarta a la quinta en principio no se puede usar. Bueno, he desactivado sprint, pero sólo se borró el registro, pero con el rendimiento de cómo ser? Sí, yo uso tanto el total de la historia y el orden de selección, de lo contrario ¿cuál es el punto de utilizar la lib. Es decir, no se puede utilizar robots postic, además esta cosa rompe OnTick y en consecuencia todas las interfaces de pie porque MQL5 OnChartEvent se cuelga en OnTick, no está claro por qué. ¿Hay alguna manera de desactivar esta cosa que se burla de la terminal o no se proporciona en principio? Me gustaria mucho usar tu lib en mi producto, pero no veo como todavia

Pruebe sin la lib.

Probablemente, los ticks de los instrumentos solicitados sólo se cargan.