Discusión sobre el artículo "Aplicando el método de Monte Carlo para optimizar estrategias comerciales"

 

Artículo publicado Aplicando el método de Monte Carlo para optimizar estrategias comerciales:

Antes de iniciar un robot en la cuenta comercial, habitualmente lo probamos y optimizamos usando el historial de las cotizaciones. Pues, aquí surge una pregunta razonable, ¿cómo nos pueden ayudar los resultados anteriores en el historial en el futuro? En este artículo, se muestra la aplicación del método de Monte Carlo para construir sus propios criterios de optimización de las estrategias comerciales. Aparte de eso, se consideran los criterios de la estabilidad del Asesor Experto.

En adelante, vamos a usar la primera variante, ya que es la más simple y universal. Al trader no le interesa mucho conocer la propia función. Es importante saber qué valores indican en un posible beneficio gracias al trabajo del EA, en el riesgo de su uso y en la estabilidad del beneficio. Se puede obtener estos valores sabiendo la función de la distribución.
Concretizamos el algoritmo de la modelación en nuestro caso. El objeto que nos interesa es un posible resultado del trabajo del EA en el futuro. Se establece unívocamente por la secuencia de transacciones. Cada transacción se establece por el valor del beneficio. Los beneficios están distribuidos de acuerdo con la descripción empírica descrita antes. Tenemos que generar un gran número de estas secuencias y calcular las características necesarias para cada una de ellas. La generación de cada de estas secuencias es simple. Definimos la secuencia de beneficios de las transacciones obtenidos en el historial a través de k1, k2, ..., kn. Generando las secuencias con longitud N, vamos a seleccionar uno de ki (muestra con devolución) N veces de modo aleatorio (con la probabilidad igual a 1/n). Habitualmente, es N=n, puesto que con N grandes la precisión de la aproximación F(x) con distribución empírica disminuye. A veces, esta versión del método de Monte Carlo se llama el método de bootstrap.

Vamos a ilustrar lo arriba mencionado con la imagen. Se muestran varias curvas del capital, cada una de las cuales se determina por la secuencia generada de transacciones. Para la conveniencia de la percepción, las he marcado con varios colores. En realidad, su cantidad es mucho más grande (varias decenas de miles). Para cada una de ellas, calculamos las características necesarias y hacemos conclusiones estadísticas a base de su conjunto. Es obvio que la característica más importante es el beneficio final.

Curvas generadas del capital


Autor: Aleksey Nikolayev

 

Функция setks() вычисляет массив прибылей сделок, исходя из истории торговли. 

bool setks(double &k[])
  {
   if(!HistorySelect(0,TimeCurrent())) return false;
   uint nhd=HistoryDealsTotal();
   int nk=0;
   ulong hdticket;
   double capital=TesterStatistics(STAT_INITIAL_DEPOSIT);
   long hdtype;
   double hdcommission,hdswap,hdprofit,hdprofit_full;
   for(uint n=0;n<nhd;++n)
     {
      hdticket=HistoryDealGetTicket(n);
      if(hdticket==0) continue;

      if(!HistoryDealGetInteger(hdticket,DEAL_TYPE,hdtype)) return false;
      if(hdtype!=DEAL_TYPE_BUY && hdtype!=DEAL_TYPE_SELL) continue;

      hdcommission=HistoryDealGetDouble(hdticket,DEAL_COMMISSION);
      hdswap=HistoryDealGetDouble(hdticket,DEAL_SWAP);
      hdprofit=HistoryDealGetDouble(hdticket,DEAL_PROFIT);
      if(hdcommission==0.0 && hdswap==0.0 && hdprofit==0.0) continue;

      ++nk;
      ArrayResize(k,nk,NADD);
      hdprofit_full=hdcommission+hdswap+hdprofit;
      k[nk-1]=1.0+hdprofit_full/capital;
      capital+=hdprofit_full;
     }
   return true;
  }

El resaltado supone que algunas operaciones de cierre con beneficio cero no se incluyen de algún modo en la muestra, mientras que algunas operaciones de apertura sí.

Pruebe con DEAL_ENTRY.


¿Hay que calcular el swap y la comisión al analizar las operaciones de Monte Carlo? No tienen valor sistémico.

Yo recomendaría utilizar la relación entre los precios de apertura y cierre como beneficio. Aquí podemos discutir "¿se deben tener en cuenta los lotes?".

 

Por un lado, se supone que las transacciones son independientes.

Por otro lado, es difícil imaginar una ST en la que las operaciones sean independientes.


Por ejemplo, si ya se tiene una posición abierta, no se puede ignorar esta circunstancia a la hora de decidir realizar una operación.

Resulta que monte carlim es un valor no aleatorio. ¿O es que no entiendo algo?

 
fxsaber:

El resaltado supone que algunas operaciones de cierre con beneficio cero no se incluyen de algún modo en la muestra, mientras que algunas operaciones de apertura sí.

Pruebe DEAL_ENTRY.

Para simplificar el modelo, consideramos como operaciones sólo aquellas que afectan a la curva de capital.

 
fxsaber:

¿Hay que calcular el swap y la comisión al analizar las operaciones de Montecarlo? No tienen un valor sistémico.

Creo que depende del dispositivo EA. Si su valor es pequeño, no afectará al cálculo del criterio de optimización, si es grande, despreciarlos distorsionará los resultados de la optimización.

 

fxsaber:

Yo recomendaría utilizar la relación entre los precios de apertura y cierre como beneficio. Aquí podemos discutir el tema "¿deben tenerse en cuenta los lotes?".

De lo que estás hablando es similar a lo que llamé rentabilidad en el artículo sobre el riesgo. En ese artículo, estamos estudiando el EA desde dentro, mientras que aquí lo tomamos como un hecho - una "caja negra" y la gestión del tamaño de la operación es una parte integral de la misma. Esto significa que la distribución de los beneficios puede ser muy diferente de la distribución de los beneficios. Por lo tanto, si nos basamos únicamente en los beneficios, estaremos optimizando un EA muy diferente.

 
fxsaber:

Por un lado, se supone que las transacciones son independientes.

Por otro, es difícil imaginar una ST en la que las transacciones sean independientes.


Por ejemplo, si ya tiene una posición abierta, no puede ignorar esta circunstancia cuando decida realizar una operación.

Resulta que monte carlim es un valor no aleatorio. ¿O es que no entiendo algo?

Por supuesto, la independencia de las operaciones es una idealización. Si dos operaciones no se solapan mucho en el tiempo, podemos considerarlas independientes porque los precios pueden considerarse un proceso aleatorio con incrementos independientes en una primera aproximación. Es decir, la independencia y la aleatoriedad vienen determinadas por el precio de salida de la operación. Por definir, una operación aquí es lo que en MT4 se llama una posición. Ya he intentado dar algunas consideraciones sobre el tema de la independencia de las operaciones en el artículo.
 
Aleksey Nikolayev:
Por supuesto, la independencia de las operaciones es una idealización. Si dos operaciones no se solapan mucho en el tiempo, entonces podemos considerarlas independientes, porque los precios en la primera aproximación pueden considerarse como un proceso aleatorio con incrementos independientes. Es decir, la independencia y la aleatoriedad vienen determinadas por el precio de salida de la operación. Por definir, una operación aquí es lo que en MT4 se llama una posición. Ya he intentado dar algunas consideraciones sobre el tema de la independencia de las operaciones en el artículo.

Pero otras operaciones que no se abrieron porque ya estaban abiertas, ¿qué pasa con ellas? Y aquellas operaciones que se abrieron, de acuerdo con las señales de la misma lógica toroidal, pero que sólo tuvieron la suerte de que no había otras operaciones abiertas en el momento de la señal de operación - ¿son especiales?

Aquí es donde radica cierta contradicción. Tal vez sería razonable montecarlizar las señales comerciales. En realidad, no dependen unas de otras, ya que sólo están en función del precio.

 
fxsaber:

Pero otras operaciones que no se abrieron porque ya estaban abiertas, ¿qué pasa con ellas? Y aquellas operaciones que se abrieron, de acuerdo con las señales de la misma lógica de torus, pero que tuvieron la suerte de que no hubiera otras operaciones abiertas en el momento de su señal de apertura, ¿son especiales?

Aquí es donde radica cierta contradicción. Tal vez sería razonable montecarlizar las señales comerciales. En realidad, no dependen unas de otras, ya que sólo están en función del precio.

El enfoque del artículo es precisamente que no entramos en la lógica del Asesor Experto, sino que tomamos el resultado de su trabajo "tal cual". Su enfoque probablemente dará resultados más precisos, pero requerirá mucho más trabajo de programación y análisis de los resultados.
[Eliminado]  

Gracias por el artículo, pero no vi las pruebas sobre el delantero, ya que el objetivo principal era mejorar la robustez de la ST en la nueva muestra mediante la introducción de nuevos criterios de optimización.

Pero hay mucho que pensar.

 
Maxim Dmitrievsky:

no se realizaron pruebas con el delantero, ya que el objetivo principal era mejorar la estabilidad del ST en una nueva muestra introduciendo nuevos criterios de optimización.

Tienes razón, falta. Pero para obtener un resultado significativo sería necesario realizarlo para un número suficientemente grande de intervalos de tiempo, símbolos y EA (ley de los grandes números). No se ha querido hinchar demasiado el artículo.