Entradas Populares

La Elección Del Editor - 2019

MQL4: Cálculo de coeficientes estadísticos y su uso para la optimización de asesores.

Saludos amigos!

Existen bastantes coeficientes estadísticos diferentes que reflejan uno u otro aspecto de la calidad del sistema comercial. ¿Y qué sucederá si optimizamos el TS en función de los valores de cualquiera de estos coeficientes? Hoy trataremos este tema en una nueva lección de programación.

Criterio de optimización personalizado

Afortunadamente, MetaTrader ofrece la capacidad de probar asesores utilizando criterios de optimización personalizados. Puede encontrar esta función en las "Propiedades del Asesor Experto" en la pestaña "Pruebas":

El parámetro en sí, con respecto al cual tiene lugar la optimización, se calcula en el cuerpo del experto utilizando el método especial onTester ().

Relación de calamar

Aquí hay un cálculo del coeficiente clásico del calamar:

double OnTester () {double AvProfit = 0; doble Kalmar = 0; if (TesterStatistics (STAT_PROFIT_TRADES)> 0) {AvProfit = NormalizeDouble (TesterStatistics (STAT_GROSS_PROFIT) / TesterStatistics (STAT_TRADES), dígitos); Kalmar = NormalizeDouble (AvProfit / TesterStatistics (STAT_BALANCE_DD), dígitos); } retorno (Kalmar); }

Este coeficiente fue especialmente inventado para evaluar la efectividad de una estrategia comercial particular de un comerciante. Según muchos inversores, resuelve problemas bastante complejos al elegir un objeto de inversión.

Por primera vez coeficiente de calamar fue presentado en una de las revistas de intercambio de futuros más famosas por el autor de la columna de fideicomiso e inversión en fondos de cobertura, Terry Young. Este indicador se basa en un concepto que los traders conocen bien como reducción.

La principal desventaja de este indicador es que el riesgo está determinado por un solo evento (reducción máxima), lo que reduce su significancia estadística y representatividad. El uso de la reducción máxima como una única evaluación de riesgos puede conducir a un sesgo en la evaluación de los resultados debido a las emisiones. Por lo tanto, puede modificar ligeramente la fórmula ingresando algunos datos adicionales:

double OnTester () {double AvProfit = 0; doble Kalmar = 0; if (TesterStatistics (STAT_PROFIT_TRADES)> 0) {AvProfit = NormalizeDouble (TesterStatistics (STAT_GROSS_PROFIT) / TesterStatistics (STAT_TRADES), dígitos); } Kalmar = NormalizeDouble (-AvProfit * (TesterStatistics (STAT_CONPROFITMAX_TRADES) / TesterStatistics (STAT_TRADES)) / (TesterStatistics (STAT_MAX_LOSSTRADE) * (TesterStatistics (STAT_CONLOSSMAX_TRADES)) volver (Kalmar); }

Coeficiente de Sortino

Se utilizan muchas métricas diferentes para evaluar los sistemas de negociación. Cada uno de ellos tiene como objetivo identificar uno u otro factor y uno de esos indicadores es el coeficiente de Sortino.

Coeficiente de Sortino Se acostumbra usar en casos en los que estamos interesados ​​en la propagación de valores negativos de los retornos. El método de cálculo es muy similar al cálculo de la relación de Sharpe. Si se usan retornos positivos y negativos para la relación de Sharpe, entonces solo se usan valores negativos para el coeficiente de Sortino.

Vale la pena señalar que Harry Markowitz, quien desarrolló la teoría moderna de la cartera, señaló la importancia de utilizar desviaciones negativas como medida de riesgo. Un rendimiento positivo siempre tiene un efecto positivo para un inversor, pero uno negativo representa un impacto negativo y debe estudiarse.

Escribamos un código que calculará y devolverá el valor del coeficiente de Sortino:

double OnTester () {double AvProfit = 0; doble Sortino = 0; doble AvLoss = 0; doble MaxLoss = 0; if (TesterStatistics (STAT_PROFIT_TRADES)> 0) AvProfit = NormalizeDouble (TesterStatistics (STAT_GROSS_PROFIT) / TesterStatistics (STAT_PROFIT_TRADES), dígitos); AvLoss = NormalizeDouble (TesterStatistics (STAT_GROSS_LOSS) / TesterStatistics (STAT_LOSS_TRADES), dígitos); MaxLoss = NormalizeDouble (TesterStatistics (STAT_MAX_LOSSTRADE), dígitos); Sortino = NormalizeDouble (((AvProfit-MaxLoss) / - AvLoss), dígitos); volver (Sortino); }

Coeficiente Trainor

Coeficiente Trainor (Treynor 1965) también se llama la relación de recompensa a la volatilidad y representa la relación del exceso de rendimiento al riesgo de mercado. A diferencia del índice de Sharpe, en este indicador, la rentabilidad no se correlaciona con el riesgo general, sino solo con el sistema (no diversificable) sistemático.

Cuanto más altos son los valores del indicador Trainor, más eficientemente se administra la cartera de inversiones, por lo tanto, se seleccionan las estrategias que tienen los valores más altos del indicador Trainor. Por lo general, este indicador se utiliza para generar calificaciones de cartera.

Echemos un vistazo al código:

double OnTester () {double AvProfit = 0; doble Treynor = 0; doble AvLoss = 0; doble MaxProfit = 0; if (TesterStatistics (STAT_PROFIT_TRADES)> 0) AvProfit = NormalizeDouble (TesterStatistics (STAT_GROSS_PROFIT) / TesterStatistics (STAT_PROFIT_TRADES), dígitos); AvLoss = NormalizeDouble (TesterStatistics (STAT_GROSS_LOSS) / TesterStatistics (STAT_LOSS_TRADES), dígitos); MaxProfit = NormalizeDouble (TesterStatistics (STAT_MAX_PROFITTRADE), dígitos); Treynor = NormalizeDouble (((AvProfit-MaxProfit) / - AvLoss), dígitos); volver (Treynor); }

Relación de Sharpe

Relación de Sharpe se le ocurrió el famoso economista estadounidense William Sharp. Hoy es uno de los indicadores más utilizados de la relación riesgo / retorno. Puede leer más sobre la relación de Sharpe en un artículo separado. Bueno, miramos el código:

double OnTester () {double AvProfit = 0; doble Sharp = 0; doble ObLoss = 0; doble MaxProfit = 0; if (TesterStatistics (STAT_PROFIT_TRADES)> 0) AvProfit = NormalizeDouble (TesterStatistics (STAT_GROSS_PROFIT) / TesterStatistics (STAT_PROFIT_TRADES), dígitos); MaxProfit = NormalizeDouble (TesterStatistics (STAT_MAX_PROFITTRADE), dígitos); ObLoss = NormalizeDouble (TesterStatistics (STAT_GROSS_LOSS), dígitos); Sharp = NormalizeDouble (((AvProfit-MaxProfit) / - ObLoss), dígitos); volver (Sharp); }

Conclusión

Por lo tanto, puede optimizar cualquier estadística de sus expertos comerciales, utilizando fórmulas de varios coeficientes estadísticos generalmente aceptados, así como escribiendo los suyos propios.

Deja Tu Comentario