Errores, fallos, preguntas - página 1804

 
Los comentarios no relacionados con este tema han sido trasladados a "Cualquier pregunta de los novatos en MQL4, ayuda y discusión sobre algoritmos y códigos".
 
fxsaber:
La suspensión sólo es necesaria cuando el símbolo no está en Market Watch. Para todos los símbolos que están en Market Watch antes (y durante) el indicador, no es necesario ningún deslizamiento.
Ya veo.
 

1531 - los frenos de Metaquotes-Demo no han desaparecido.

Solicitud y respuesta

Request.action = TRADE_ACTION_DEAL (1)
Request.magic = 0
Request.order = 0
Request.symbol = #KO
Request.volume = 1.0
Request.price = 40.31
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 100
Request.type = ORDER_TYPE_BUY (0)
Request.type_filling = ORDER_FILLING_RETURN (2)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment = My Position
Request.position = 0
Request.position_by = 0
Result.retcode = 10009
Result.deal = 117613087
Result.order = 133997293
Result.volume = 1.0
Result.price = 40.31
Result.bid = 40.28
Result.ask = 40.31
Result.comment = Request executed 345.781 + 26.356 ms
Result.request_id = 5712
Result.retcode_external = 0

OrderSend tardó 345 ms, y el pedido y la operación correspondientes tardaron 26 ms en estar disponibles en el historial. Es decir, una sincronización muy lenta que nunca había visto antes.

Registro estándar

2017.02.14 22:26:46.767 Trades  '5122740': prices for #KO 1.00
2017.02.14 22:26:46.852 Trades  '5122740': accepted prices for #KO 1.00
2017.02.14 22:26:46.852 Trades  '5122740': answer prices for #KO 1.00 40.28 / 40.31 in 86.046 ms (0.190 ms on server)
2017.02.14 22:26:46.852 Trades  '5122740': request buy 1.00 #KO at 40.31
2017.02.14 22:26:47.107 Trades  '5122740': accepted request buy 1.00 #KO at 40.31
2017.02.14 22:26:47.107 Trades  '5122740': deal #117613087 buy 1.00 #KO at 40.31 done (based on order #133997293)
2017.02.14 22:26:47.107 Trades  '5122740': order #133997293 buy 1.00 / 1.00 #KO at 40.31 done in 345.709 ms (3.022 ms on server)

¡El nuevo registro está ahora en 1531! Por favor, explique en este caso, qué es qué.

Registro de ZZY casi inmediatamente después de la desaceleración.

2017.02.14 22:26:47.433 Trades  '5122740': prices for #KFT 1.00
2017.02.14 22:26:47.503 Trades  '5122740': accepted prices for #KFT 1.00
2017.02.14 22:26:47.506 Trades  '5122740': answer prices for #KFT 1.00 49.17 / 49.20 in 70.980 ms (4.166 ms on server)
2017.02.14 22:26:47.506 Trades  '5122740': request buy 1.00 #KFT at 49.20
2017.02.14 22:26:47.583 Trades  '5122740': accepted request buy 1.00 #KFT at 49.20
2017.02.14 22:26:47.583 Trades  '5122740': deal #117613092 buy 1.00 #KFT at 49.20 done (based on order #133997299)
2017.02.14 22:26:47.583 Trades  '5122740': order #133997299 buy 1.00 / 1.00 #KFT at 49.20 done in 149.304 ms (3.015 ms on server)

Se trata de caracteres solicitados, por lo que las órdenes de mercado son más lentas que otras.

 

Los frenos de TRADE_ACTION_REMOVE.

Request.action = TRADE_ACTION_REMOVE (8)
Request.magic = 0
Request.order = 134003202
Request.symbol =
Request.volume = 0.0
Request.price = 0.0
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 0
Request.type = ORDER_TYPE_BUY (0)
Request.type_filling = ORDER_FILLING_FOK (0)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment =
Request.position = 0
Request.position_by = 0
Result.retcode = 10009
Result.deal = 0
Result.order = 134003202
Result.volume = 0.0
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = Request executed 290.089 + 0.005 ms
Result.request_id = 10078
Result.retcode_external = 0
FL      0       23:02:46.797    Trades  '5122740': buy limit 1.00 Si-3.17 at 56288
GG      0       23:02:46.849    Trades  '5122740': accepted buy limit 1.00 Si-3.17 at 56288
PR      0       23:02:46.852    Trades  '5122740': order #134003202 buy limit 1.00 / 1.00 Si-3.17 at market done in 54.423 ms (0.342 ms on server)
PR      0       23:02:46.854    Trades  '5122740': cancel order #134003202 buy limit 1.00 Si-3.17 at 56288
LL      0       23:02:47.142    Trades  '5122740': accepted cancel order #134003202 buy limit 1.00 Si-3.17 at 56288
CE      0       23:02:47.144    Trades  '5122740': cancel #134003202 buy limit 1.00 Si-3.17 at market done in 290.050 ms (1.400 ms on server)
HH Mirando el libro de registro de la terminal no dio estas líneas de ninguna manera. Tuve que tomarlas directamente del archivo.
 
Error [No hay precios] en el lugar
2017.02.14 23:18:41.442 '5122740': failed instant buy 1.00 EURPLN at 4.30632 (deviation: 100) [No prices]

¿Cómo es que no hay precio, incluso hay un precio en el registro?

Consulta

2017.02.14 23:18:41.442 Request.action = TRADE_ACTION_DEAL (1)
2017.02.14 23:18:41.442 Request.magic = 0
2017.02.14 23:18:41.442 Request.order = 0
2017.02.14 23:18:41.442 Request.symbol = EURPLN
2017.02.14 23:18:41.442 Request.volume = 1.0
2017.02.14 23:18:41.442 Request.price = 4.30632
2017.02.14 23:18:41.442 Request.stoplimit = 0.0
2017.02.14 23:18:41.442 Request.sl = 0.0
2017.02.14 23:18:41.442 Request.tp = 0.0
2017.02.14 23:18:41.442 Request.deviation = 100
2017.02.14 23:18:41.442 Request.type = ORDER_TYPE_BUY (0)
2017.02.14 23:18:41.442 Request.type_filling = ORDER_FILLING_RETURN (2)
2017.02.14 23:18:41.442 Request.type_time = ORDER_TIME_GTC (0)
2017.02.14 23:18:41.442 Request.expiration = 1970.01.01 00:00:00
2017.02.14 23:18:41.442 Request.comment = My Position
2017.02.14 23:18:41.442 Request.position = 0
2017.02.14 23:18:41.442 Request.position_by = 0
2017.02.14 23:18:41.442 Result.retcode = 10021
2017.02.14 23:18:41.442 Result.deal = 0
2017.02.14 23:18:41.442 Result.order = 0
2017.02.14 23:18:41.442 Result.volume = 0.0
2017.02.14 23:18:41.442 Result.price = 0.0
2017.02.14 23:18:41.442 Result.bid = 0.0
2017.02.14 23:18:41.442 Result.ask = 0.0
2017.02.14 23:18:41.442 Result.comment = No prices 0.028 + 0.000 ms
2017.02.14 23:18:41.442 Result.request_id = 0
2017.02.14 23:18:41.442 Result.retcode_external = 0
2017.02.14 23:18:41.442
2017.02.14 23:18:41.442 SymbolInfoDouble(Symb,::SYMBOL_BID) = 4.30151
2017.02.14 23:18:41.442 SymbolInfoDouble(Symb,::SYMBOL_ASK) = 4.30632
 
fxsaber:
Error [No hay precios] en el lugar
2017.02.14 23:18:41.442 '5122740': failed instant buy 1.00 EURPLN at 4.30632 (deviation: 100) [No prices]

¡¿Cómo es posible que no haya precios, ni siquiera en la bitácora?!

Hace poco me salió el mismo error en mi cuenta real. Intenté hacer un pedido pero el servidor no lo ejecutó.

Actualmente me estoy comunicando con el soporte técnico de una empresa muy famosa en L... En estos momentos estoy chateando con el soporte técnico de una empresa muy conocida L. (nuestra correspondencia es confidencial, no la llamaré así), me explican que el tiempo de ejecución en su servidor de operaciones es el mismo para las órdenes salientes de MT4 (tienen MT4) que las enviadas por FIX y es de aproximadamente 1-6ms. Entonces, les pregunté cuál es el tiempo que se gasta en 40-50 ms. cuando se opera desde MT4, ya que desde el momento de enviar la orden y obtener una respuesta unos 40-60 ms. Se encogen de hombros con tolerancia, como si buscaran la latencia de la red, les digo que el ping 1-2ms, y de nuevo se encogen de hombros. La conclusión es que la parte del servidor de MT4/5 es lenta. Ahora los nuevos registros lo muestran. Entiendo que el tiempo no puede ser "limpio" como el FIX, pero al menos debería ser del mismo orden.
 
Andrey Dik:
SZY. En este momento estoy hablando con el soporte técnico de una empresa muy famosa en L... (No sé por qué no les voy a llamar, me explican que el tiempo de ejecución en su servidor de operaciones es el mismo que para las órdenes que salen de MT4 (tienen MT4) que envían por FIX y es de 1-6ms aproximadamente. Entonces, les pregunté cuál es el tiempo que se gasta en 40-50 ms. cuando se opera desde MT4, ya que desde el momento de enviar la orden y obtener una respuesta unos 40-60 ms. Se encogen de hombros con tolerancia, como si buscaran la latencia de la red, les digo que el ping 1-2ms, y de nuevo se encogen de hombros. La conclusión es que la parte del servidor de MT4/5 es lenta. Ahora los nuevos registros lo muestran. Entiendo que el tiempo no puede ser "limpio" como FIX, pero al menos debería ser del mismo orden.

EN L... tenía en cuenta que cuando reciben una orden en su sistema, el tiempo de ejecución en el propio sistema y el envío de vuelta es minúsculo. Pueden obtener la orden desde el servidor de MT4 o a través de FIX y su otra API. El propio servidor de MT4 gasta muchas decenas de ms para su procesamiento interno, que no está conectado con la ejecución de ninguna manera.

Hace tiempo, el tiempo mínimo en MT4 era de 150 ms. Parece que algo se ha retocado seriamente, ya que se ha convertido en 40-60. Pero MT5 es notablemente más rápido. Ahora puedo ver en los registros cuánto tiempo trabajó el servidor. Sólo queda entender a qué se dedica el tiempo principal.

 
Los comentarios que no son relevantes para este tema se han movido a "CopiarCerrar ¿Por qué un error?".
 

Error de compilación: no se puede acceder a f() //2

typedef void (*fn)();
#import "Test.ex5"
        void f(); //1
#import
void f() {} //2
void OnStart()
{
        fn g1 = Test::f; //нормально
        fn g2 =       f; //Error: 'f' - cannot resolve function address
}
 
@Slawa, por favor aclara, ¿hay alguna restricción en la escritura de los buffers de los indicadores fuera de la función OnCalculate()? ¿Se escribirá todo correctamente en caso de escribir los buffers en las funciones: OnTimer(), OnBookEvent(), OnChartEvent()?