Errores, fallos, preguntas - página 2095

 

Hay un nuevo error en el probador de la propagación. Está presente en el modo visual, así como en el modo estándar (el experto ve los diferenciales inflados).

Puede comprobarlo ejecutando el experto en MA de los ejemplos estándar, con los parámetros por defecto.

En algunas fechas el diferencial se amplía de 2-5 a 200-500 para todo el día desde las 0:00 hasta las 23:59. Lo he comprobado en 2 empresas de corretaje, el problema probablemente no esté en las cotizaciones sino en el propio probador.

Aquí hay un ejemplo para la fecha 16.10.2017. La prueba debe realizarse a partir del 16.10.2017. En el fondo está el terminal con el gráfico desplazado a esa fecha - el spread allí está en el rango normal.

Otro ejemplo en otro. OTRO EJEMPLO DE OTRA EMPRESA DE CORRETAJE

He configurado un Asesor Experto que controla los spreads y son estos 200 a 500 los que ve. Como resultado, trabaja todo el día sin seguir el algoritmo.

La otra fecha encontrada es el 19.09.2017. Realizó la prueba desde septiembre hasta hoy - alrededor del 20-30% de los días con propagación de sobrepredicción. Vio un exceso de predicción hasta el año 2000.

Enviando a SD.

PS. Respondió. Se arreglará en la nueva versión.
 
elibrarius:

...

Enviando a SD.

También espero una respuesta sobre este tema:

Abierto, Iniciado: 2017.12.16 14:36, #1911211

 

OrderSend en MetaQuotes-Demo se cuelga - a veces se ejecuta durante unos segundos, a veces el script no se puede eliminar (sólo cerrando el terminal).

 
Varios errores en TRADE_ACTION_CLOSE_BY
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID)
#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  MqlTradeRequest Request = {0};
  MqlTradeResult Result;      
      
  Request.action = TRADE_ACTION_CLOSE_BY;
  Request.position = OrderSend(_Symbol, OP_SELL, 0.01, Bid, 100, 0, 0);
  Request.position_by = OrderSend(_Symbol, OP_BUY, 1, Ask, 100, 0, 0);

  Request.symbol = _Symbol; // Если убрать эту строку, то сообщения в логе изменятся

  Print(OrderSend(Request, Result)); // false
}

Resultado

'7489613': instant sell 0.01 GBPUSD at 1.34334 (deviation: 100)
'7489613': accepted instant sell 0.01 GBPUSD at 1.34334 (deviation: 100)
'7489613': deal #176902665 sell 0.01 GBPUSD at 1.34334 done (based on order #193547458)
'7489613': order #193547458 sell 0.01 / 0.01 GBPUSD at 1.34334 done in 73.458 ms
'7489613': instant buy 1.00 GBPUSD at 1.34342 (deviation: 100)
'7489613': accepted instant buy 1.00 GBPUSD at 1.34342 (deviation: 100)
'7489613': deal #176902666 buy 1.00 GBPUSD at 1.34342 done (based on order #193547459)
'7489613': order #193547459 buy 1.00 / 1.00 GBPUSD at 1.34342 done in 76.044 ms
'7489613': failed close position #193547459 buy 0.99 GBPUSD by position #193547458 [Invalid request]


En realidad todo coincide perfectamente, pero sólo en los registros hay mensajes erróneos, y el retorno de OrderSend es negativo. Si elimina la línea resaltada en el origen, puede ver un mensaje completamente inadecuado en los registros.

 

Bicho ME Styler MT4/MT5

 #define  f(x) x   //пробел вначале строки и перед конечным выражением
#define  f(x) x    //стилизатор удалил пробел в начале строки. Пробел перед конечным выражением остался

 #define  f(x) (x)   //пробел вначале строки и перед конечным выражением, ЗАКЛЮЧЕННЫМ В СКОБКИ
#define  f(x)(x) //стилизатор удаляет не только пробел в начале строки, но и разделяющий пробел между аргументом и конечным выражением. 

//В итоге компилятор выдает ошибку во втором случае
//'(' - unexpected in macro definition

 

Ticks reales de M1. Cuando la dispersión es negativa en la ventana de datos del comprobador (modo vis.), la dispersión se vuelve incorrecta. Su servidor, 2017.10.23 01:00 y 01:01 minutos

Hice un Asesor Experto que comprueba el spread. Cuando el diferencial es negativo, el Asesor Experto ve el diferencial erróneo, - incrementado en 1. La captura de pantalla muestra -1 en el EA, -2 en el gráfico. Si el spread es positivo, todo es correcto en Expert Advisor.

El spread en ticks reales puede ser muy diferente del spread de precio de apertura. Este es un ejemplo con una diferencia de 39 puntos. 2017.10.23 00:53
En los precios de apertura:


En las
garrapatas reales:

Algo que pensé que debía coincidir en ambos modos...

 
elibrarius:

He hecho un Asesor Experto que comprueba el spread. Si el diferencial es negativo, el Asesor Experto ve el diferencial incorrecto - incrementado en 1. La captura de pantalla muestra -1 en el Asesor Experto, -2 en el gráfico. Cuando el spread es positivo, todo es correcto en Expert Advisor.

Seguro que has cometido un error en el código al calcular el diferencial. Si no lo encuentras, por favor muestra el código.

 

¿Qué ha pasado con las funciones de Copia...? Antes devolvían las series de tiempo, pero ahora no lo hacen:


En principio no es difícil ampliar la indexación de los arrays por sí misma, pero el código anterior en el que utilizaba funciones que ampliaban las series temporales después de copiar... probablemente no funcione ahora
 
Konstantin:

¿Qué ha pasado con las funciones de Copia...? Antes devolvían las series temporales, pero ahora no:


Básicamente no es difícil ampliar la indexación de los arrays por uno mismo, pero el código anterior en el que utilicé funciones que amplían las series temporales después de copiar... probablemente no funcione ahora

Esto era originalmente el caso y está escrito en la ayuda.


 
fxsaber:

Estoy seguro de que has cometido un error en el código al calcular el diferencial. Si no lo encuentras, por favor muéstrame el código.

Hmm. Encuéntralo ))))

int OnInit()
  {
   return(INIT_SUCCEEDED);
}

void OnTick()
  {
  int s[];
  CopySpread(_Symbol,_Period,0,1,s);
  Print(s[0]);
  }