Errores, fallos, preguntas - página 2319
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
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
Gracias.
Por favor, muestre los registros de la terminal en el momento del problema desde el principio
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.
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.
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!
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 #11396. 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:
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:
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í
Donde X2_nuevo=2*X2. Por lo tanto, ratio SharpeNuevo/Sharpe = MathSqrt(X2/(144-1)) / MathSqrt(X2_nuevo/(2*144-1)) =
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.
¿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.