¡Promotores! ¿Acaso pruebas lo que creas? - página 9

 
Mikalas:

C-4 En mi opinión, obtener información operativa es mucho más

más interesante que la historia. Necesitamos saber dos cosas sobre el instrumento:

1. Garantías.

2. Posición

Me parece que es mucho más importante analizar las operaciones, porque están en el nivel más bajo y se pueden conocer las órdenes y las posiciones por ellas, pero no es así lo contrario. Pero lo contrario no es cierto.

En su caso, OnInit() se ejecuta una vez al principio del programa. Pero sólo debe haber un bloque de controles. Sincroniza el estado del EA con la situación actual. Y no importa de dónde le hayan llegado los nuevos datos, del historial de órdenes en el momento de la inicialización, del historial en el momento de la ejecución o del evento OnTradeTransaction. El resultado debe ser idéntico, porque también hay un solo bloque responsable.

 

Vasiliy - este es un código "primitivo".

Es sencillo: se toma un pedido y se trabaja con él....

my_order = temp_order;

¡Una línea!

 
papaklass:

¿Es necesario el evento OnTradeTransaction en su forma actual?

Resulta que no es así, ya que todavía tenemos que tomar información de la historia.
 

Mikalas:

Acabo de darme cuenta de que el producto DEBE ser probado (¡lo estoy probando con mi propio dinero!)

Asumo que eso es salirse del tema.

Entonces, ¿me das la revista y el código?

tengo ganas de ayudar aquí.

 
C-4:
Resulta que no es así, ya que todavía tenemos que tomar información de la historia.

¡Oh, Dios mío! ¿Es válido en la historia?

¿Papaklass probablemente quería decir que OnTradeTransaction devuelve errores?

 

sergeev -> Tengo ganasde ayudar aquí.

Lo siento, pero no necesito ayuda.

 
Mikalas:

sergeev -> Tengo ganasde ayudar aquí.

Lo siento, pero no necesito ayuda.

¿por qué tienes que babear durante 9 páginas?
 
Mikalas:

Vasiliy - este es un código "primitivo".

Es sencillo: se toma un pedido y se trabaja con él....

¡Una línea!

No es cuestión de una línea o de cien. Se trata del enfoque. A.k. Aquí está el código como ejemplo para ver lo que quiero decir. Se garantiza el seguimiento de las nuevas órdenes que entran con o sin evento TradeTransaction, ya sea una inicialización o una nueva orden que entra:

/*Какое бы событие не наступило, оно будет обработано OnRefresh()*/

OnInit()
{
    OnRefresh();
}

void OnTimer(void)
{
    OnRefresh();
}

void  OnTradeTransaction(
      const MqlTradeTransaction&    trans,
      const MqlTradeRequest&        request,
      const MqlTradeResult&         result
   )
{
     OnRefresh();
}

///
/// Следит за поступлением новых трейдов и ордеров.
///

void OnRefresh()
{
    HistorySelect(0, TimeCurrent());
    for(; ordersCountNow < HistoryOrdersTotal(); ordersCountNow++)
    {  
       printf(HistoryOrderGetTicket(dealsCountNow));
    }
}

///
/// Текущее количество ордеров.
///
int ordersCountNow;
 
papaklass:

A eso me refiero.

Por qué este OnTradeTransaction no está separado en eventos separados:

- OnOrderCreate //emitir una orden;

- OnOrderModify // modificación de una orden activa;

- OnOrderDelete //borrar el pedido;

- OnPositionOpen //abrir posición;

- OnPositionModify //instalación/modificación de topes/cambio de volumen de posición;

- OnPositionClosed //cerrar una posición mediante una orden Stop Loss o de mercado;

y así sucesivamente.

Con este enfoque, el comerciante se suscribirá a los eventos que le interesan y los gestionará.

Me llegan todos los eventos que me interesan, ¡hay una división ahí!
 

C-4, se procesará, por supuesto, pero ¿por qué se necesita OnRefresh()?

Todo se comparte en OnTradeTransaction(). No me falta información.