" Error de PositionSelect() flotante - página 3

 
Karputov Vladimir:

Ya lo he dicho antes: no te dejes llevar por las órdenes: fíjate en las transacciones. Aquí hay un código corto que muestra CUANDO cambia el volumen de la posición y qué tipo de transacción es:

Y aquí están las huellas, en un cierre parcial:

Se puede ver claramente que en cuanto pasa un evento con el tipo de transacción comercialTRADE_TRANSACTION_DEAL_ADD, ya está, se actualizan los datos de posición en el terminal.

¡Estoy realmente sorprendido!

¿Lo haces a propósito o no lees lo que escribo?

 
prostotrader:

¡Estoy sorprendido!

¿Lo haces a propósito o es que no lees nada de lo que escribo?

Me parece que no quieres entender que una orden no lo es todo. Y el registro de un acuerdo en el historial es una señal para el programador de que los datos de la posición ya han sido modificados.
 
Karputov Vladimir:
Me parece que no quieres entender que una orden no lo es todo. Pero registrar una operación en el historial es una señal para el programador de que los datos de la posición ya han sido modificados.
Todo está claro, gracias.
 
prostotrader:
Todo despejado, gracias.

Una orden es una pulga, puede o no inscribirse. Por encima de la orden es un comercio. Por encima de una operación hay una posición. Los cambios en los datos de posición tienen lugar después de que la operación se registre en el historial.

Lo que a veces se capta - bueno, sólo el mérito de los ordenadores rápidos e Internet. Si te gusta - por casualidad.

Añadido: aunque será interesante conocer la respuesta a su solicitud por parte del ServiceDesk.

 
prostotrader:

1. >Sin conocer el algoritmo exacto (que necesita del programa), es difícil evaluar si está implementado correctamente...

Pensaba que no era difícil entender lo que hace el programa, pues si no está claro, entonces

Un Asesor Experto abre una posición en el mercado FORTS con un volumen de 2 contratos; si la posición se abre, se cierra parcialmente con un volumen de 1 contrato,

entonces la posición se cerrará completamente. Repite este procedimiento hasta que el contador tr_cnt<50

2. Puedes "ejecutar" PositionSelect() un millón de veces - no cambiará nada, porque

el eventoTRADE_TRANSACTION_DEAL_ADD no se recibirá hasta que esté en el bucle, y por lo tanto, el terminal no se actualizará

información sobre el puesto.

Bueno, puede que el objetivo del programa sea correcto, pero los medios para conseguirlo son una porquería, perdón...

¿Por qué hay que comprobar los pedidos históricos? Hay que mirar los oficios. ¡Vladimir tiene toda la razón!

Sólo un loco podría ejecutar un programa así en el...

 
Dennis Kirichenko:

Así que, ¡sí! El objetivo del programa puede ser correcto, pero los medios para conseguirlo son una porquería, perdón por mi francés...

¿Por qué demonios se comprueban los pedidos históricos? Hay que mirar los oficios. ¡Vladimir tiene toda la razón!

Sólo un loco ejecutaría un programa así en el mercado real...

Entiendo lo de "profesor", pero no se trata de mi locura, sino del error en el término.

Por cierto, aquí hay otro que encontré (y es después del LOCK!!!!!!!!!!):

2016.08.03 17:25:57.693 Test_Pos_selct (GAZR-9.16,M1)   OpenPosition: Order sent successfully for open position volume = 2.0
2016.08.03 17:25:57.703 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Order resived #50278099
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Deal, based on order #50278099  done.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position exists.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position type: POSITION_TYPE_BUY
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position volume: 1
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Order #50278099  add to history.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Order #50278099  not found.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position exists
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position type: POSITION_TYPE_BUY
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position volume: 2
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Deal, based on order #50278099  done.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position exists.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position type: POSITION_TYPE_BUY
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position volume: 2
2016.08.03 17:25:58.613 Test_Pos_selct (GAZR-9.16,M1)   OnBookEvent: Position exists
2016.08.03 17:25:58.613 Test_Pos_selct (GAZR-9.16,M1)   OnBookEvent: Position type: POSITION_TYPE_BUY
2016.08.03 17:25:58.613 Test_Pos_selct (GAZR-9.16,M1)   OnBookEvent: Position volume: 2
 
prostotrader:

Veo "Profesor", pero no se trata de mi locura, sino de la presencia de un error en el termeal.

Por cierto, aquí hay otra que surgió (y es después de la WORK!!!!!!!!!!):

Por favor, traiga su código a la mía - no tiene el tipo de transacción comercial impreso. Elimine la comprobación de pedidos: no la necesita aquí.
 

Una vez más, para "candidatos", "doctores", "profesores" y "académicos".

Cualquier evento que llegue a OnTradeTransaction() puede perderse

Por eso creo que es un error que después de recibir el evento significativoTRADE_TRANSACTION_HISTORY_ADD

los datos del terminal no se actualizan

 
Karputov Vladimir:
Por favor, traiga su código al mío - su tipo de transacción comercial no se imprime. Elimine la comprobación de pedidos: no la necesita aquí.
Gracias por su persistencia.
 
prostotrader:

Veo "Profesor", pero no se trata de mi locura, sino de la presencia de un error en el termeal.

Por cierto, aquí hay otro que surgió (y está después del WORD!!!!!!!!!!):

Cometí un error, no me di cuenta de que había dos ofertas.
Razón de la queja: