Bibliotecas: MT4Orders - página 35

 
fxsaber:

Por desgracia, sin un código, estas declaraciones no serán constructivas.


Estoy de acuerdo.

Ejecuté su informe - Está bien.

Estoy buscando mi propio error.

Gracias.


P/S/

Estoy tratando de entender tu código, no me entra en la cabeza.


pero encontré esto:

      if (Sort ? OrderSelect((int)Tickets[i][TICKET_INDEX], SELECT_BY_TICKET) : (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && Filter.Is())) // int - (Sort == true) sólo para MQL4.

¿Así que todavía hay algo allí sobre la clasificación?


#ifdef __MQL5__
      static const bool Sort = false;
    #else // __MQL5__
      #ifdef __VIRTUAL__
        static const bool IsTester = ::MQLInfoInteger(MQL_TESTER);

        const bool Sort = !IsTester && !VIRTUAL::GetHandle();
      #else // __VIRTUAL__
        static const bool Sort = !::MQLInfoInteger(MQL_TESTER);
      #endif // __VIRTUAL__
 
Vladislav Andruschenko:

Intento entender tu código, no me entra en la cabeza.

pero encontré esto:

¿Así que hay algo ahí sobre ordenar?

El código es multiplataforma. El código de clasificación se ejecuta allí sólo para MT4.

El código allí es terrible, porque es una reelaboración local de la secuencia de comandos del mismo nombre a partir de 2006.
 
fxsaber:

El código es multiplataforma. El código de clasificación se ejecuta allí sólo para MT4.

El código allí es terrible, porque es una reelaboración local de la secuencia de comandos del mismo nombre a partir de 2006.


En general, la historia es la siguiente:

en 2012 yo estaba haciendo un indicador para la recopilación de estadísticas y recogido todo en HTML para mt4.

Luché durante mucho tiempo y lo abandoné (como cientos de otros proyectos).

En 2016 encontré este proyecto y decidí terminarlo, y lo hice. Pero luché con órdenes de clasificación (en la historia) y con el fin de hacer que los resultados idénticos al informe de mt4 - Hice ordenar por hora de cierre,

pero había algunos matices allí también, a saber:

si la hora de cierre es la misma, a veces el broker no cierra en orden (si se dispara el stop loss total) sino que cierra las entradas de forma dispersa (a veces pasa).

He solucionado este problema.

MT4 y los informes de mt4 y de mi indicador son los mismos. Al igual que con su informe


La mayoría de los usuarios pidieron hacer lo mismo en mt5.

Por supuesto, soy demasiado perezoso para construir mi propia biblioteca, así que tomé su biblioteca - es muy interesante y resuelve muchos problemas (HEDGE? Respeto, Como, Respeto).


Yo no cambié nada en mi código - Conecté su biblioteca MT4Orders - Pero me di cuenta de que mi código no funciona en ella (no sé las razones todavía, tal vez es mi pereza y torcido).


En mt4: si la hora de cierre es la misma, a veces el broker no cierra en orden (si se dispara el stop loss total) sino que cierra las entradas en orden disperso (a veces pasa).

en mt5: he prescindido de esta ordenación, pero lo he hecho tal cual, partiendo de la hora de cierre, como BAC.


y ahora los resultados:





Como puedes ver los resultados en tu informe y en el mío son idénticos. Así es como debería ser.


pero el informe de mt5 tiene una ordenación diferente.



Como puedes ver, el informe del terminal mt5 tiene una ordenación diferente.

y se expresa no en la ordenación (desde el final de la lista, o desde el principio de la lista) sino por la hora de apertura.

En informes grandes da una diferencia en las estadísticas (por ejemplo, ganancia continua).


Eso es lo que quería decir...

Es por eso que estoy tratando de entender todo hasta el final.

Le pido disculpas si le he confundido.

Sigue así, que haces mucho bien.

 
Vladislav Andruschenko:

Como puede ver, los resultados de su informe y los míos son idénticos. Así es como debe ser.


pero el informe de mt5 está ordenado de forma diferente.



como puede ver, el informe del terminal mt5 tiene una ordenación diferente.

y se expresa no en ordenación (desde el final de la lista, o desde el principio de la lista) sino por la hora de apertura.

En informes grandes da una diferencia en las estadísticas (por ejemplo, ganancia continua).

De hecho, el informe de posición actual de MT5 está ordenado por hora de apertura. El informe de posición fue hecho por los desarrolladores recientemente y sin ningún alboroto. Por eso resultó tan burdo. Estoy casi seguro de que esta es la razón de tan ilógica ordenación. Si lo señalas, creo que lo corregirán.

En cuanto a las victorias continuas, no tienen nada que ver con su informe de posición. Su informe de posición es una adición tardía que no afecta a las estadísticas.

 
fxsaber:

De hecho, el informe de posición actual de MT5 está ordenado por hora de apertura. El informe de posición fue hecho por los desarrolladores recientemente y sin ningún alboroto. Por eso resultó tan burdo. Estoy casi seguro de que esta es la razón de una ordenación tan ilógica. Si lo señalas, creo que lo corregirán.

En cuanto a las victorias continuas, no tienen nada que ver con su informe de posición. Su informe de posición es una adición tardía que no afecta a las estadísticas.

Gracias por la aclaración.

Déjalo por ahora, intentaré entender los matices más tarde.

Gracias por la biblioteca.

 
Vladislav Andruschenko:

No cambié nada en mi código - Conecté su biblioteca MT4Orders - Pero descubrí que mi código no funciona en ella (no sé las razones todavía, tal vez es mi pereza y torpeza).

Como puedes ver los resultados en tu informe y en mi informe son idénticos. Así es como debería ser.

Estas dos frases se contradicen.

 
fxsaber:

Estas dos frases se contradicen.

Me refería a que en mi código de mt4 ordenaba por hora de cierre, pero si la hora de cierre es la misma, ordenaba por número de ticket (a veces me encontraba con cuentas en las que las posiciones se cerraban fuera de orden, debido a esto la estadística general se resentía). - Ajusté las estadísticas al informe de mt4. No prestar atención. Tengo mis propias cucarachas en la cabeza.

Por alguna razón este código no funcionaba en mt5 y simplemente hice un informe sin ordenar.

Por eso obtuvimos los mismos resultados en mt5. ¿Era necesario molestarse? Ahora no veo ningún error incluso sin ordenar. Tal vez algo ha cambiado durante 3 (7) años.

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
// Lista de cambios:
// 13.03.2019
// Añadir: Añadido OrderTicketID() - PositionID de la operación MT5 o posición MT5, ticket de la orden MT4 pendiente.
// Añadir: SELECT_BY_TICKET es válido para todos los MT5-tickets (y MT5-PositionID).
 
¡Super! Como yo lo entiendo, esto resuelve el problema de la selección de SELECT_BY_TICKET en la historia (en virtud de la garantía de no ejecución parcial)?
 
Ilya Malev:
¡Súper! Según tengo entendido, esto resuelve el problema de la selección SELECT_BY_TICKET en la historia (bajo garantía de no ejecución parcial)?
#include <MT4Orders.mqh>

#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  const TICKET_TYPE Ticket = OrderSend(_Symbol, OP_BUY, 1, Ask, 100, 0, 0); // Abierta una posición.
  
  if (OrderSelect(Ticket, SELECT_BY_TICKET))
    OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100);         // Cerrada la posición.
    
  if (OrderSelect(Ticket, SELECT_BY_TICKET)) // Se activará la opción de seleccionar en cualquier entrada de MT5.
    OrderPrint();
}

Este es un ejemplo del uso más primitivo.

Gracias, @Andrey Khatimlianskii y @Igor Makanu para "terminar". Las tareas que se han expresado no venían a cuento.


En particular, ahora es posible incluso en la red controlar el destino de una orden en función de su ticket cuando se abre.

Es difícil poner un ejemplo y explicar los entresijos de lo que se ha hecho. Pruebe diferentes situaciones (y ejecución parcial) de SELECT_BY_TICKET en OrderTicket, OrderTicketOpen, OrderTicketID y cualquier ticket de MT5.