Por encima del código del indicador Spread_of_symbols ... decidí reescribirlo para que funcione más rápido.... y el código apareció, ver abajo ... los datos no se copian ... si se copian los datos de 1 a 0 en el código, el indicador dibuja muy rápido pero se produce un error fuera de rango ... ¿qué está mal en el código ver abajo ...?
En el modo de visualización, cuando se opera con dos símbolos, después de cerrar las operaciones al mismo tiempo, sólo aparecen en el historial los datos del símbolo en el que se está ejecutando el Asesor Experto. Los datos del otro símbolo llegan a la pestaña del historial sólo después de abrir otras operaciones. Como resultado, hay un periodo de tiempo en el que los datos de las pestañas de comercio e historial son diferentes.
JF 0 Trades 19:31:10 '***': cancela la orden #3694236 buy stop 1.10 AUDJPY.m a 95.679<br / translate="no">DS 0 Trades 19:31:10 '***': cancela la orden #3694238 buy limit 1.10 AUDJPY.m a 93.876 DH 0 Operaciones 19:31:10 '***': cancelar orden #3694237 comprar stop 0,36 AUDJPY.m a 95,679 FI 0 Operaciones 19:31:10 '***': cancelar la orden #3694239 comprar límite 0,36 AUDJPY.m a 93,876 FP 0 Operaciones 19:31:10 '***': cancelar orden #3694236 comprar stop 1.10 AUDJPY.m a 95.679 hecho QE 0 Operaciones 19:31:11 '***': cancelar orden #3694238 comprar límite 1.10 AUDJPY.m a 93.876 hecho CG 0 Operaciones 19:31:11 '***': cancelar orden #3694237 comprar stop 0,36 AUDJPY.m a 95,679 hecho OL 0 Operaciones 19:31:11 '***': cancelar orden #3694239 comprar límite 0,36 AUDJPY.m a 93,876 hecho
Cuatro órdenes pendientes, según el registro, parecieron borrarse rápidamente. Pero onTradeTransaction, las respuestas llegaban en unos 15 segundos, los ticks llegaban en este periodo.
IE 0 prp5 (EURUSD.m,M1) 19:31:26 TS=6 =O= Cierre de la operación/precio inverso=95,648 m=3 b/s=SELL ... ==>Tiempo antes de OrderSendAsync ES 0 prp5 (EURUSD.m,M1) 19:31:29 TS=6 case 8(real) m=3 b/s=SELL Err=Order placed ==>Después de OrderSendAsync, 3 seg parece ser demasiado tiempo.
P.D. Supongo que había retrasos en la ejecución de Expert, aunque me pregunto cuánto tiempo pueden aguantar los paquetes de OnTradeTransaction en la cola.
Referencia MQL5 / Librería Estándar / Clases para crear paneles y diálogos / CWnd / StateFlagsSet
¿Qué propiedades?
StateFlagsSet no son propiedades, sino estados. Un método de grupo para cambiar el estado. Justo por encima de los métodos para cambiar las banderas de los estados individuales.
Tras ver la "organización de acceso a los datos", mirar el script de ejemplo que bombea los datos y entenderlo todo, surgieron las siguientes preguntas:
1. ¿Por qué no puedo escribir este código en el indicador en la función OnInit, para que al inicio el indicador descargue su propio historial y prepare la serie temporal? ¿Puedo escribir un cheque de este tipo en mi Asesor Experto?
2. ¿Con qué frecuencia tengo que hacer esta comprobación? ¿1 para los Asesores Expertos y 2 para los indicadores? ¿Si sólo preparo una vez el historial y las series temporales para copiarlas, entonces en el futuro no se producirán errores en la copia? ¿O tengo que comprobar cada vez o de vez en cuando si el historial y las series temporales están listos?
3. ¿Es necesaria esta comprobación sólo para los indicadores y Asesores Expertos que utilizan varios marcos temporales y símbolos, o es deseable para todos?
Los procesos de intercambio son asíncronos y el indicador no puede esperar los datos. Por lo tanto, es posible consultar en inite, sin esperar ni ralentizar y sólo en oncalculate para comprobar la disponibilidad y el recuento.
Por favor, tenga en cuenta que el indicador no tiene derecho a esperar o hacer un bucle, de lo contrario matará el cálculo de los indicadores posteriores.
Renat: Los procesos de intercambio son asíncronos y el indicador no puede esperar los datos. Así que puede consultar en el inite, de ninguna manera esperar o ralentizar y sólo en el oncalculate para comprobar la disponibilidad y el recuento.
Por favor, tenga en cuenta que el indicador no tiene derecho a esperar o hacer un bucle, de lo contrario matará el cálculo de los indicadores posteriores.
1 Entonces, ¿dónde se paginan los datos? Si quiero hacer un indicador con una cesta de pares de divisas, muchos símbolos... para cada uno de ellos necesito comprobar e intercambiar los datos... ¿debo ejecutar un script desde el indicador? ¿Por qué un indicador iba a acabar con los cálculos de los siguientes? En los siguientes indicadores, basta con utilizar la comprobación del cálculo del indicador anterior a través de BarsCalculated(indicator1_Handle), dejar que calcule y descargue los datos, ¿o me equivoco?
2 Otra pregunta, de otro tipo - cuando declaro la manija del indicador en la función, ¿comienza a contar? ¿O empieza a contar antes de que dé la orden de copiarlo?
Por encima del código del indicador Spread_of_symbols ... decidí reescribirlo para que funcione más rápido.... y el código apareció, ver abajo ... los datos no se copian ... si se copian los datos de 1 a 0 en el código, el indicador dibuja muy rápido pero se produce un error fuera de rango ... ¿qué está mal en el código ver abajo ...?
DH 0 Operaciones 19:31:10 '***': cancelar orden #3694237 comprar stop 0,36 AUDJPY.m a 95,679
FI 0 Operaciones 19:31:10 '***': cancelar la orden #3694239 comprar límite 0,36 AUDJPY.m a 93,876
FP 0 Operaciones 19:31:10 '***': cancelar orden #3694236 comprar stop 1.10 AUDJPY.m a 95.679 hecho
QE 0 Operaciones 19:31:11 '***': cancelar orden #3694238 comprar límite 1.10 AUDJPY.m a 93.876 hecho
CG 0 Operaciones 19:31:11 '***': cancelar orden #3694237 comprar stop 0,36 AUDJPY.m a 95,679 hecho
OL 0 Operaciones 19:31:11 '***': cancelar orden #3694239 comprar límite 0,36 AUDJPY.m a 93,876 hecho
Cuatro órdenes pendientes, según el registro, parecieron borrarse rápidamente. Pero onTradeTransaction, las respuestas llegaban en unos 15 segundos, los ticks llegaban en este periodo.
***
JG 0 prp5 (EURUSD.m,M1) 19:31:26 TS=6 Borrar tp _ OnTrade PENDING id=85 m=3 b/s=SELL Err=Bid completed
***
RL 0 prp5 (EURUSD.m,M1) 19:31:26 TS=6 Delete sl _ OnTrade PENDING id=86 m=3 b/s=SELL Err=Bid completed
***
HK 0 prp5 (EURUSD.m,M1) 19:31:26 TS=6 Borrar tp _ OnTrade PENDING id=87 m=3 b/s=SELL Err=Orden ejecutada
Aunque, también hay algo extraño aquí
ES 0 prp5 (EURUSD.m,M1) 19:31:29 TS=6 case 8(real) m=3 b/s=SELL Err=Order placed ==>Después de OrderSendAsync, 3 seg parece ser demasiado tiempo.
P.D. Supongo que había retrasos en la ejecución de Expert, aunque me pregunto cuánto tiempo pueden aguantar los paquetes de OnTradeTransaction en la cola.
De la referencia:
Referencia MQL5 / Librería Estándar / Clases para crear paneles y diálogos / CWnd / StateFlagsSet
¿Qué propiedades?
StateFlagsSet no son propiedades, sino estados. Un método de grupo para cambiar el estado. Justo por encima de los métodos para cambiar las banderas de los estados individuales.
Utilízalo por separado.
Tras ver la "organización de acceso a los datos", mirar el script de ejemplo que bombea los datos y entenderlo todo, surgieron las siguientes preguntas:
1. ¿Por qué no puedo escribir este código en el indicador en la función OnInit, para que al inicio el indicador descargue su propio historial y prepare la serie temporal? ¿Puedo escribir un cheque de este tipo en mi Asesor Experto?
2. ¿Con qué frecuencia tengo que hacer esta comprobación? ¿1 para los Asesores Expertos y 2 para los indicadores? ¿Si sólo preparo una vez el historial y las series temporales para copiarlas, entonces en el futuro no se producirán errores en la copia? ¿O tengo que comprobar cada vez o de vez en cuando si el historial y las series temporales están listos?
3. ¿Es necesaria esta comprobación sólo para los indicadores y Asesores Expertos que utilizan varios marcos temporales y símbolos, o es deseable para todos?
Por favor, tenga en cuenta que el indicador no tiene derecho a esperar o hacer un bucle, de lo contrario matará el cálculo de los indicadores posteriores.
Los procesos de intercambio son asíncronos y el indicador no puede esperar los datos. Así que puede consultar en el inite, de ninguna manera esperar o ralentizar y sólo en el oncalculate para comprobar la disponibilidad y el recuento.
Por favor, tenga en cuenta que el indicador no tiene derecho a esperar o hacer un bucle, de lo contrario matará el cálculo de los indicadores posteriores.
1 Entonces, ¿dónde se paginan los datos? Si quiero hacer un indicador con una cesta de pares de divisas, muchos símbolos... para cada uno de ellos necesito comprobar e intercambiar los datos... ¿debo ejecutar un script desde el indicador? ¿Por qué un indicador iba a acabar con los cálculos de los siguientes? En los siguientes indicadores, basta con utilizar la comprobación del cálculo del indicador anterior a través de BarsCalculated(indicator1_Handle), dejar que calcule y descargue los datos, ¿o me equivoco?
2 Otra pregunta, de otro tipo - cuando declaro la manija del indicador en la función, ¿comienza a contar? ¿O empieza a contar antes de que dé la orden de copiarlo?