Bibliotecas: MT4Orders - página 51

 
Vitaly Muzichenko:

Otro problema es que no se trata de código multiplataforma y todo lo escrito no tiene sentido.

Simplemente no veo el punto en el código de plataforma cruzada - se necesita mucho tiempo para escribir y apoyo, pero es más fácil de ejecutar el TS en el comercio virtual y transferirlo a 4 o 5 con una copiadora.

SZY: off-topic, pero voy a escribir aquí, imho búsqueda de un TS que funcionará de la misma manera, tanto en el probador y en el comercio real es una utopía, que no permite evaluar la robustez de la TS, todas las actualizaciones posteriores para la extracción de beneficios en el comercio real conducirá a la imposibilidad de evaluar el propio TS, y sin evaluar la eficiencia de la TS "en el futuro" (después de las pruebas en los datos históricos) es imposible tomar una decisión que el TS no funciona más y es necesario buscar otro TS.

[Eliminado]  
Igor Makanu:

SZY: off-topic, pero aquí voy a escribir, imho búsqueda de TS que funcionará igual que en el probador, así como en el real - utopía, que no permite evaluar la robustez de TS, todas las actualizaciones posteriores para la extracción de beneficios en el TS real conducirá a la imposibilidad de evaluar el TS en sí, y sin evaluar la eficacia de TS "en el futuro" (después de probar en los datos históricos) es imposible tomar una decisión que el TS no funciona y hay que buscar otro TS.

Qué sentido tiene... todas las TS funcionan/no funcionan casi 1 de cada 1
 
Maxim Dmitrievsky:
Que sentido tiene... todos los tc funcionan/no funcionan casi 1 en 1.

no asi.

mira, te has inventado un flip martin, has optado, has hecho pruebas de ida y vuelta, has conseguido MO, ratio Sharpe.... - estadísticas de prueba

lo ejecutas de verdad, pero las estadisticas de trading seran diferentes a las de prueba.

Los usuarios avanzados comienzan a actualizar este mono, por lo general mediante la transferencia a los límites, a continuación, especialmente los avanzados comienzan a mover los límites después de que el precio - y en este último caso será un TS diferente de las pruebas (es otro TS!) - Está claro que los principios son los mismos, consiguió un tonto - se duplicó y se retiró del precio de apertura de la orden anterior,

pero imho, se trata de un TS diferente, que el usuario no ha probado en el probador - por lo menos el nuevo TS ya está vinculado a los ticks y los retrasos de ejecución.


Por eso escribo que si se obtienen resultados de calidad en el tester en el forward, es necesario monitorizar la TS en condiciones ideales.

[Eliminado]  
Igor Makanu:

equivocado

aquí está una mirada, usted inventó un martin flip, optó, hizo pruebas de ida y vuelta, obtuvo MO, Sharpe's k-rate.... - estadisticas de prueba

lo ejecutas de verdad, pero las estadísticas de negociación serán diferentes de las de prueba.

Los usuarios avanzados comienzan a actualizar este mono, bueno, por lo general la transferencia a los límites, a continuación, especialmente avanzada comenzará a mover los límites después de que el precio - y en este último caso será diferente de la TS de pruebas (es otro TS!) - Está claro que los principios son los mismos, consiguió un chupar - se duplicó y se retiró del precio de apertura de la orden anterior,

pero imho, es un TS diferente, que el usuario no ha probado en el probador - al menos el nuevo TS ya está vinculado a los ticks y los retrasos de ejecución.


Por eso escribo que si se obtienen resultados de calidad en el tester en el forward, es necesario monitorizar el TS en condiciones ideales.

bueno, esto es una nimiedad

 
Igor Makanu:

en la brevedad y sencillez del sistema de órdenes del 4 - permite escribir estrategias "sobre la marcha" sin distraerse resolviendo acciones elementales con órdenes

Si lo desea, puede practicar en el sistema de órdenes de MT5 para realizar acciones sencillas con órdenes:


Hice esta pregunta en el tema "preguntas de principiantes MT5", las respuestas fueron "¿para qué lo necesitas?", la solución en el sistema de órdenes MT5 sólo podría escribirla una persona - el autor de este tema ;)

El deseo de acercar el terminal a la bolsa real ha llevado a una complicación real. Orden, trato, posición cada uno con sus propias entradas resultó ser una complicación del sistema y no es obvio qué es mejor, la simplicidad o la cercanía al mercado real.
 
Valeriy Yastremskiy:
El deseo de acercar el terminal a la bolsa real ha llevado a una complicación real. Orden, trato, posición cada uno con sus propios tickets resultó ser una complicación del sistema y no es obvio que es mejor, simplicidad o cercanía al mercado real.

Y hablando francamente no está claro por qué en 4k la orden, trato, posición se sustituyen por una orden y tienen un ticket para todas, y en 5k los tickets para la orden, trato, posición se hicieron diferentes, porque dentro del terminal se podrían hacer iguales, y si fuera necesario conseguir tickets reales de la bolsa, se podría hacer adicionalmente, pero en las tareas del asesor todo sería más fácil.

 
Valeriy Yastremskiy:

Y sinceramente no se entiende por qué en 4k la orden, operación, posición se sustituyen por una orden y tienen un ticket para todas, y en 5k los tickets de la orden, operación, posición se hicieron diferentes, porque dentro del terminal se podrían hacer iguales, y si fuera necesario conseguir tickets reales de la bolsa, se podría hacer adicionalmente, pero en las tareas del asesor todo sería más fácil.

Para comparar adecuadamente los sistemas de órdenes de MT4 y MT5, es necesario tener un gran conocimiento de ambos. No sólo teórica/prácticamente, sino también arquitectónicamente.

Desde mi punto de vista, el sistema de órdenes de MT5 es muy superior al de MT4 en cuanto a prestaciones. La comodidad, por otro lado, se consigue a través de librerías de alto nivel.

MT5 и скорость в боевом исполнении
MT5 и скорость в боевом исполнении
  • 2020.08.27
  • www.mql5.com
MT5 - шустрая платформа. Но есть узкие горлышки, которые сводят на нет все старания быстрой торговли...
 
fxsaber:

Para comparar adecuadamente los sistemas de órdenes de MT4 y MT5, es necesario tener un excelente conocimiento de ambos. No sólo teórica/prácticamente, sino también arquitectónicamente.

Desde mi punto de vista, el sistema de órdenes de MT5 es muy superior al de MT4 en cuanto a características. La comodidad, por otro lado, se consigue a través de librerías de alto nivel.

Las propiedades de las operaciones, posiciones y órdenes ciertamente dan más posibilidades en la obtención y datos reales de las operaciones y en la gestión de las mismas. Pero la complejidad de la conexión entre las entradas de órdenes de operaciones y posiciones llevó a un seguimiento complejo de la situación actual, a órdenes más complejas y a una complejidad suficiente de codificación de frente, sin bibliotecas. En general, no es fatal)

 

Vea cómo MQL5 puro supera el rendimiento de la alabada implementación del historial de operaciones rápidas de MT4Orders en tareas sencillas.

// El script calcula la hora de apertura/cierre de la última posición en el historial de operaciones.

#include <MT4Orders.mqh> // https://www.mql5.com/en/code/16006

void LastTimeMQL4( datetime &OpenTime, datetime &CloseTime )
{
  for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderType() <= OP_SELL))
    {
      OpenTime = OrderOpenTime();
      CloseTime = OrderCloseTime();
      
      break;
    }
}

// https://www.mql5.com/ru/forum/342090/page18#comment_18040164
void LastTimeMQL5( datetime &OpenTime, datetime &CloseTime )
{
  static ulong PrevTicketIn = 0;  // Almacena el ticket de entrada de posición de la última llamada.
  static ulong PrevTicketOut = 0; // Almacena el ticket de salida de posición de la última llamada.
  
  if (HistorySelect(0, INT_MAX))
  {
    for (int i = HistoryDealsTotal() - 1; i >= 0; i--)
    {
      const ulong Ticket = HistoryDealGetTicket(i);
      
      if (Ticket == PrevTicketOut)            
      {
        OpenTime = (datetime)HistoryDealGetInteger(PrevTicketIn, DEAL_TIME);
        CloseTime = (datetime)HistoryDealGetInteger(PrevTicketOut, DEAL_TIME);        
        
        break;
      }
      else if (HistoryDealGetInteger(Ticket, DEAL_ENTRY) == DEAL_ENTRY_OUT)
      {
        PrevTicketOut = Ticket;
        
        CloseTime = (datetime)HistoryDealGetInteger(Ticket, DEAL_TIME);

        if (HistorySelectByPosition(HistoryDealGetInteger(Ticket, DEAL_POSITION_ID)))
        {
          PrevTicketIn = HistoryDealGetTicket(0);
          OpenTime = (datetime)HistoryDealGetInteger(PrevTicketIn, DEAL_TIME);
        }
          
        break;
      }
    }
  }
}

typedef void (*GetLastTime)( datetime&, datetime& );

void Bench( GetLastTime LastTime, const int Amount = 10000 )
{
  datetime OpenTime, CloseTime;
  datetime Tmp = 0;

  for (int i = 0; i < Amount; i++)
  {
    LastTime(OpenTime, CloseTime);
    
    Tmp += CloseTime - OpenTime;        
  }
  
  Print(Tmp);
}

#define  BENCH(A)                                                              \
{                                                                             \
  const ulong StartTime = GetMicrosecondCount();                              \
  A;                                                                          \
  Print("Time[" + #A + "] = " + (string)(GetMicrosecondCount() - StartTime)); \
}

#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{  
  if (HistorySelect(0, INT_MAX))
    PRINT(HistoryDealsTotal());

  BENCH(Bench(LastTimeMQL4))
  BENCH(Bench(LastTimeMQL5))  
}


Resultado.

2020.08.29 00:57:38.561 HistoryDealsTotal() = 9435
2020.08.29 00:57:38.813 2046.04.30 00:13:20
2020.08.29 00:57:38.813 Time[Bench(LastTimeMQL4)] = 252274
2020.08.29 00:57:38.820 2046.04.30 00:13:20
2020.08.29 00:57:38.820 Time[Bench(LastTimeMQL5)] = 7162

MQL5 puro fue 40 veces más rápido en esta tarea. ¡Aprenda MQL5!

 
traveller00:
Por si acaso quiero mencionar que los archivos ZIP estaban arreglados, que yo recuerde. Pero ahora se ha vuelto a liar y hay una versión antigua, hay que actualizar por archivo.