Errores, fallos, preguntas - página 2319

 
Hola, ¿podríais decirme cómo solucionar un error de visualización de precios incorrecta? Está echando a todos los indios.eurusd
 
Slava:

Configuración de los símbolos, no de los gráficos.

En la visión general del mercado, seleccione "especificación del símbolo" en el menú contextual del símbolo

 
Igor Semyonov:

Gracias.

Por favor, muestre los registros de la terminal en el momento del problema desde el principio

 
Slava:

Gracias.

Por favor, muestre los registros de la terminal en el momento del problema desde el principio

He enviado el archivo de registro por mensaje privado.

 
Igor Semyonov:

He enviado el archivo de registro por mensaje privado.

Sí, gracias.

Los registros son todos claros.

Dígame, ¿se mantiene la situación que ha descrito?

 

Volumen sin DoubleToString(Volumen, 2). La captura de pantalla es del EURUSD.

 
Slava:

Sí, gracias.

Todo está claro en los registros.

Dígame, ¿continúa la situación que ha descrito?

Después de reiniciar el terminal, todo está bien hasta ahora.

 

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Bichos, errores, preguntas

pantural, 2018.11.01 16:03

Hola queridos desarrolladores de MT, me gustaría informar de un error en el algoritmo de cálculo del Sharpe Ratio. En el informe del apéndice por el Sr.Aleksey Vyazmikin donde SR = 0,29, pero según mis cálculos es de alrededor de 3,7-3,8 (dependiendo de si cero PnL) sugieren que el error en la ausencia de un factor de escala en la desviación estándar (sqrt(longitud)) porque el rendimiento medio no depende de la longitud de la serie, converge, y el RMS aumenta como sqrt(longitud)

C++

double SharpRatio(vector<double> pnl)

{

double avret = 0;

for (int i = 0; i < pnl.size(); ++i) avret += pnl[i];

avret /= pnl.size();


double var = 0;

for (int i = 0; i < pnl.size(); ++i) var += pow(pnl[i] - avret, 2);

var = sqrt(var / pnl.size()) / sqrt(pnl.size());


return  avret / var;

}

Tomemos dos CTs idénticas. Los iniciamos simultáneamente. Un día después ambos muestran la matriz pnl. El primero fue detenido, el segundo no. Después de otro día, el segundo nos ha mostrado exactamente el mismo pnl.

Es decir, el primero tiene pnl[] y el segundo tiene pnl[]+pnl[]. Es decir, la operación del segundo día fue idéntica a la del primero.


Entonces, según la fórmula sugerida, el Sharpe Ratio de la segunda TS será sqrt(2) (raíz de dos) menor que el de la primera. ¡Pero se negocian de forma idéntica!

 
fxsaber:

Toma dos CTs idénticos. Hazlos funcionar al mismo tiempo. Después de 24 horas, ambos mostraron un conjunto de pnl. El primero fue detenido, el segundo no. Otro día después el segundo mostró exactamente el mismo pnl.

Es decir, el primero tiene pnl[] y el segundo tiene pnl[]+pnl[]. Es decir, la operación del segundo día fue idéntica a la del primero.


Entonces, según la fórmula sugerida, el Sharpe Ratio de la segunda TS será sqrt(2) (raíz de dos) menor que el de la primera. ¡Pero se negocian de forma idéntica!

¿Cómo es el chiste? "Hay que matarlos mientras son pequeños" .

Veamos el ejemplo del archivo adjunto a . Porque, en teoría, todo parece aterrador hasta que lo sientes con las manos.

Hay 144 operaciones en este archivo, cuyo valor de Sharpe es 0,29 (el sitio lo muestra con una precisión de 2 decimales, y eso está bien - nadie necesita 5 decimales, en este caso 2 decimales es suficiente para una buena medida para comparar dos estrategias).

El Sharpe se calcula como la relación K/STD, donde:

  • K - la tasa de crecimiento media del historial de operaciones
  • STD es la desviación estándar de las ganancias a lo largo del historial de operaciones

Supongamos que tenemos el doble de operaciones que fueron copias de operaciones anteriores. Esto significa que ahora tenemos 288 operaciones = 144*2. Al mismo tiempo, K no cambiará. Por lo tanto, podemos cambiar Sharpe sólo cambiando ETS.

STD inicial=MathSqrt(X2/(n-1)), donde:

  • X2 es la suma de los cuadrados de las desviaciones de la media X_aver
  • n - número de teads == 144

Es decir, Sharpe=MathSqrt(X2/(144-1)) = MathSqrt(X2/143)

Hemos duplicado el número de operaciones, por lo que para un historial dos veces mayor el nuevo Sharpe se calcula así

SharpeNew=MathSqrt(X2_new/(2*144-1))

Donde X2_nuevo=2*X2. Por lo tanto, ratio SharpeNuevo/Sharpe = MathSqrt(X2/(144-1)) / MathSqrt(X2_nuevo/(2*144-1)) =

MathSqrt(X2/(144-1))  / MathSqrt(2* X2/(2*144-1)) =  MathSqrt(X2/(143))  / MathSqrt(2* X2/(283))= MathSqrt(X2*283/(2*143*X2))= MathSqrt(283/286)= 0.994741 

Aunque confunda el denominador con el numerador, SharpeNew estará en el rango 0,292919- 0,296025. Es decir, la diferencia estará en algún lugar del tercer dígito.

Pero no por 10-20 veces. Compruebe usted mismo dónde me he equivocado.

 
Rashid Umarov:

¿Cuál es el chiste? "Hay que matarlos mientras son pequeños".

Me malinterpretas.

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Bichos, errores, preguntas

fxsaber, 2018.11.06 13:23

Entonces , según la fórmula propuesta, el ratio de Sharpe de la segunda TS sería sqrt(2) (raíz de dos) menos que la primera. ¡Pero se negocian de forma idéntica!


Me refería a la fórmula citada de C++.


Y en la fórmula utilizada en MT, por supuesto, no se restaría uno. Entonces, en el ejemplo propuesto, no importa cuántos intervalos de 144 se observaran, Sharpe sería siempre el mismo.