Pregunta sobre la función OnTradeTransaction - página 3

 
Mikalas:

:)

1. EJEMPLO de FORTALEZAS

2. ¿No puedes poner brackpoints?

3. Me da la impresión de que estás leyendo mensajes a través de una línea :)

No, tengo la impresión de que estás escribiendo al otro lado de la línea:

void OnTick()
{
  MqlTick a_tick; //Зачем этот зазор ниже?
                                           
  if ( SymbolInfoTick( _Symbol, a_tick ) )
  {
    PlaceOrder( _Symbol, a_tick.ask, 1, false );   //Устанавливаем ордер
  }     
}

:)) He puesto puntos de ruptura y sigo sin entenderlo. Lo siento, pero tu código es feo. Primero se envía la orden y luego se hacen algunas comprobaciones sin sentido enOnTradeTransaction y CheckOrder(). El volumen también se calcula en el comprobador.

No nos torturemos: Da al menos una breve anotación de tu código (lo que el autor quería decir por así decirlo, qué objetivos buscaba:) y yo intentaré hacer un análisis no superficial del mismo. No quiero volver a llamarlo como está ahora, ni siquiera bajo puntos de ruptura.

 
Mikalas:

:)

Hagámoslo así.

Te haré preguntas y tú las responderás, ¿de acuerdo?

...

¡Vamos!
Mikalas:

Pregunta 1: ¿Cómo va a saber la entrada de la orden (enviando el comando OrderSendAsync), si el evento TradeTransaction no ha llegado (o no se utiliza)?

Reconoceré el ticket de la orden a través de la función TrackingHistoryOrders, porque tarde o temprano la orden se ejecutará y pasará al historial de órdenes que esta función analizará.

 
C-4:

Me da la impresión de que está escribiendo a través de una línea:

Pongo puntos de ruptura y sigo sin conseguirlo. Lo siento, pero tu código es feo. Primero se envía la orden y luego se hacen algunas comprobaciones sin sentido en OnTradeTransaction y CheckOrder(). El volumen también se calcula en el comprobador.

No nos torturemos: Da al menos una breve anotación de tu código (lo que el autor quería decir por así decirlo, qué objetivos buscaba:) y yo intentaré hacer un análisis no superficial del mismo. No quiero volver a llamarlo en la forma en que está ahora, incluso bajo puntos de ruptura.

:):):)

Ya no soy un joven (la foto tiene 9 años), y me siento más cómodo haciendo "huecos" en el código para una mejor percepción.

Además, a mucha gente le resulta más cómodo leer el código cuando las líneas y columnas de 100 caracteres no se escriben juntas.

Crees que es "feo" porque TÚ te tomaste el tiempo de inventar tu propio método de

OrderSendAsync, por lo que se piensa que un código distinto es feo. :)

El principio es muy sencillo, y tú lo sabes, porque has participado en el debate sobre este tema.

La solución a este problema fue sugerida por Yurich, que fue que para cada orden del comando OrderSendAsync

tiene su propia magia, entonces esta orden, si el evento TradeTransaction no ha llegado, es muy fácil de encontrar (por magia).

A cada símbolo se le asigna un rango de números mágicos, por ejemplo, para el AUDUSD de 1010000 a 1019999,

para EURUSD de 1020000 a 1029999

Estos números únicos pueden repetirse a lo largo del tiempo

if ( mem_magic >= ( magic_number + 9999 ) ) mem_magic = magic_number;  //Переполнение, начинаем сначала

Para evitar "meterse" en otro orden, hay una variable (datetime mem_time;)

que almacena la fecha y la hora en que se realizó el pedido.

¿Seguimos con esto?

 
C-4:
¡Vamos!

Obtengo el ticket de la orden a través de la función TrackingHistoryOrders, porque tarde o temprano la orden se ejecutará y entrará en el historial de órdenes, que será analizado por esta función.

Está bien, pero lo necesito cuanto antes (el pedido puede "colgarse" un día y no aparecerá en el historial).

¡Quiero modificarlo!

¡Quiero borrar!

 

Todo el alboroto y un montón de código auxiliar viene de esta frase: Además,las transacciones pueden perderse en la entrega desde el servidor al terminal.

¿Puede alguien aclarar la situación? ¿Quién puede perder una transacción en persona (fallos de la bolsa, cierre del broker, paradas del servidor MQ MT5)?

¿Por qué MQ no quiere garantizar la entrega de las transacciones, quién se beneficia?

 
Serj_Che:

Todo el alboroto y un montón de código auxiliar viene de esta frase: Además,las transacciones pueden perderse en la entrega desde el servidor al terminal.

¿Puede alguien aclarar la situación? ¿Quién puede perder una transacción específicamente en personas (fallos de la bolsa, cierre del corredor)?

¿Por qué MQ no quiere garantizar la entrega de las transacciones, quién se beneficia?

Nadie lo hace, pero MQ "no puede permitirse" hacer todo a la vez, y hay muchos proyectos, y

Los programadores con talento son escasos, por lo que se está tardando demasiado...

Lo harán, por supuesto. (Ya lo tienen todo para ello, aparte del propio mecanismo de seguimiento).

 
Basil, ¿entonces cómo se modifica (borra) un OrderSendAsync emitido si no se tiene un ticket?
 
Mikalas:

Nadie se beneficia, simplemente MQ no puede meter mano de una vez, y hay muchos proyectos, pero

Los programadores con talento son escasos, por lo que se está tardando demasiado...

Lo harán, por supuesto. (ya lo tienen todo para ello, excepto el propio mecanismo de seguimiento).

Por lo que tengo entendido el intercambio lo regala todo. Tampoco tiene sentido que un corredor normal pierda nada.

En MQ se ve así. MQ tiene MetaTrader5 y la integración con la bolsa no es una prioridad.

 
Serj_Che:

En lo que a mí respecta, el intercambio lo regala todo. Tampoco tiene sentido que un corredor normal pierda nada.

Esto es similar a MQ. MQ tiene MetaTrader5 y la integración con la bolsa no es una prioridad.

Sí, esto es porque no hay cocina en la bolsa (sólo comisiones), y hay millones de seguidores de MMM en FOREX,

Puede que tengan 100 dólares, ¡pero todos los tienen! Un dinero enorme, ¡hay algo que contar! :)

 

Vasily, ¿habrá una respuesta?

No lo creo.

¿He ganado?

Razón de la queja: