Discusión sobre el artículo "Sistemas de Trading Adaptables y su Uso en el Terminal de Cliente MetaTrader 5" - página 2

 

¿Es una molestia traducir la documentación al inglés? Siempre aprecio una buena documentación. Gran artículo, gracias por su impresionante contribución.

 
Lugner:

¿Es una molestia traducir la documentación al inglés? Siempre aprecio una buena documentación. Gran artículo, gracias por tu impresionante contribución.

Traduciremos la documentación adjunta lo antes posible.
 

Para trabajar con parámetros de entrada (variables), es fácil con sólo declararlos antes de la declaración de la clase, y

siguiendo la ruta de llamada de la clase (includes).

 
Lugner:

¿Es una molestia traducir la documentación al inglés? Siempre aprecio una buena documentación. Gran artículo, gracias por su impresionante contribución.

Gracias. La documentación está traducida.
 
AM2:

En la clase CAdaptiveStrategy intento operar sólo con estocásticos:

He desactivado el resto, pero el gráfico en el tester sigue igual. Por lo que entiendo, aquí es donde las estrategias están conectadas y desconectadas?

Sí, las estrategias se conectan en la función CAdaptiveStrategy::Expert_OnInit(). Para mayor comodidad, es mejor utilizar la versión de depuración del Asesor de Expertos, se ha añadido guardar los resultados en archivos. Puede averiguar qué señales de qué estrategias se utilizaron en el comercio real utilizando el archivo direction_res.txt.

Al utilizar una estrategia adaptativa que consta de los 5 estocásticos especificados(EURUSD H1, prueba desde principios de 2010 hasta el 1 de septiembre de 2010), se obtienen los siguientes resultados:




 

Este es probablemente el artículo que más me ha hecho pensar de los que he leído sobre comercio programático/robótico en mucho, mucho, mucho tiempo. Muchas gracias.

Aprovechando este nuevo entusiasmo, he adaptado un poco el trabajo de Eugene. [Disculpas - al menos yo también compartiré ideas ;-) ]

He adaptado un EA existente (aún no orientado a objetos, por desgracia) para:

1. Múltiples escalas de tiempo: M1, M3, M5, M10, M20, M30, H1
2. Múltiples MA rápidas: 3,5,7,9,11
3. Múltiples MA lentas: 17,27,37,47 etc 97,107, 117 etc

Adjunto a un tick M1, en un bucle foreach(period)-foreach(fast)-foreach(slow). Cada tick calcula si necesita comprobar una operación "virtual", y la "ejecuta" si es necesario, manteniendo un balance P/L lógico/virtual.

Los resultados son sorprendentes y muy positivos...

La optimización se encuentra ahora en las áreas de eliminación de periodos de tiempo cortos (por ejemplo, M1, M3) [ya que los periodos de tiempo más largos acaban 'ganando'], y también en la determinación de la frecuencia con la que se debe borrar el contador de 'P/L en ejecución' para permitir la detección de conjuntos de parámetros que 'mejoran rápidamente'.

También tengo que interconectar mi EA de trading favorito en este trabajo (para añadir comprobaciones ADX/RSI/MACD/RVI, etc.), para que siempre utilice pares MA rápidos/lentos óptimos y ganadores, y también tenga una buena lógica de gestión de mercado, dinero, posición y trading.

Gracias de nuevo,

T.

 

Quantum,

obviamente si quiero añadir más condiciones de compra y venta (o pares/combos de condiciones de compra y venta), aparte de las todavía dotadas

if(buy_condition_1 && buy_condition_2) new_state=SIGNAL_OPEN_LONG;
if(sell_condition_1 && sell_condition_2) new_state=SIGNAL_OPEN_SHORT;

en el ejemplo en CStrategyMA.mqh,

para desencadenar otras oportunidades de

new_state=SIGNAL_CLOSE_SHORT;
// y 
new_state=SIGNAL_CLOSE_LONG;

no tiene sentido lógico añadir esos combos en el archivo CStrategyMA.mqh, pero para cada nueva condición o pares/combos

de condiciones, habría que dedicarle otro fichero include/class,

¿es así?

Rápidamente me refiero, por ejemplo, si quiero añadir esas condiciones:

// Condición de compra 3: MA nuevo 
   bool buy_condition_3=(m_values[0+5]>m_values[1+7]) && (m_values[1+5]>m_values[2+7]);
// Condición de compra 4: el precio OPEN anterior es superior a la MA
   bool buy_condition_4=(p_open>m_values[1]);

// Condición de venta 3: MA nuevo 
   bool sell_condition_3=(m_values[0+5]<m_values[1+7]) && (m_values[1+5]<m_values[2+7]);
// Condición de compra 4: el precio OPEN anterior es inferior a la MA
   bool sell_condition_4=(p_open<m_values[1]);

y

  if(buy_condition_3  &&  buy_condition_4) new_state=SIGNAL_OPEN_LONG;
   if(sell_condition_3 && sell_condition_4) new_state=SIGNAL_OPEN_SHORT;

   if((GetSignalState()==SIGNAL_OPEN_SHORT) && (buy_condition_3 || buy_condition_4)) new_state=SIGNAL_CLOSE_SHORT;
   if((GetSignalState()==SIGNAL_OPEN_LONG) && (sell_condition_3 || sell_condition_4)) new_state=SIGNAL_CLOSE_LONG;

se pueden añadir en subclases dentro de CStrategyMA.mqh, sin afectar al sistema central del

sistema adaptativo, en otras palabras con continuar correctamente este archivo de inclusión CStrategyMA.mqh interactuar con CAdaptiveStrategy.mqh

y CSampleStrategy.mqh, también teniendo en cuenta las nuevas condiciones (3 y 4 del ejemplo) en el núcleo lógico

de la idea de EA?

O para la condición 3 y 4, debo reescribir y añadir, por ejemplo, un archivo CStrategyMA3and4.mqh ???

¿Es posible añadir esas condiciones dentro de la misma CStrategyMA.mqh y trabajar todos correctamente?

Tal vez tengo la respuesta por mí mismo y yo soy un poco estúpido, pero también quiero pedir su opinión (s)..

Gracias

 
Automated-Trading:

Sí, las estrategias se conectan en la función CAdaptiveStrategy::Expert_OnInit(). Para mayor comodidad, es mejor utilizar la versión de depuración del Asesor Experto, donde se ha añadido guardar los resultados en archivos. Puede averiguar qué señales de estrategia se utilizaron en el comercio real mediante el archivo direction_res.txt.

Al utilizar una estrategia adaptativa que consiste en los 5 estocásticos anteriores (EURUSD H1, prueba desde principios de 2010 hasta el 1 de septiembre de 2010), se obtienen los siguientes resultados:

A juzgar por el gráfico se tiene de nuevo simplemente un modelo optimizado, aunque parte de esta optimización resultó ser automatizada, pero un modelo adaptado es un modelo en el que existe un bloque de cálculo que adapta la entrada y salida al mercado durante el funcionamiento de la estrategia, y los parámetros en la inicialización no importan en absoluto. En tales condiciones, sólo la línea de equidad en relación con la línea de equilibrio será igualada, porque en los casos en que la distribución para el cierre de una posición por ganancia ha cambiado - tal sistema todavía recalculará los nuevos valores y determinará una nueva zona para la ganancia, y por lo tanto reconstruirá los parámetros para la ganancia y el grupo de órdenes de equidad será preservado:
Archivos adjuntos:
 

Estimado Forexistence,

Usted ha respondido a su pregunta :)

Tienes razón, hay dos maneras si desea modificar las condiciones de negociación, por un lado podemos añadir nuevas condiciones a la estrategia CStrategyMA (pero vamos a obtener la nueva estrategia, diferente de la inicial), la otra forma es crear una nueva clase (por ejemplo, CStrategyMA34) y añadir condiciones adicionales de compra / venta allí.

Pero, por supuesto, debe incluir el archivo con su nueva estrategia y añadir estas nuevas estrategias a la función Expert_OnInit de la clase CAdaptiveStrategy:

#include <CStrategyMA3and4.mqh>

int CAdaptiveStrategy::Expert_OnInit()
{
.....
--- adding new strategies
   for(int i=0; i<10; i++)
     {
      CStrategyMA34 *t_StrategyMA34;
      t_StrategyMA34=new CStrategyMA34;
      if(t_StrategyMA34==NULL)
        {
         delete m_all_strategies;
         Print("Error of creation of object of the CStrategy3and4 type");
         return(-1);
        }
      int period=3+i*10;
      t_StrategyMA34.Initialization(period,true);
      t_StrategyMA34.SetStrategyInfo(_Symbol,"[MA34_"+IntegerToString(period)+"]",period,"Moving Averages with new conditions "+IntegerToString(period));
      m_all_strategies.Add(t_StrategyMA34);
     }
.....
}

La segunda forma es mejor, puede agregar muchas estrategias y sus variaciones.

No es necesario eliminar las instancias de la clase CStrategyMA (si las tiene), no miraremos en sus sandboxes en sus resultados serán malos.

El mercado nos ayudará a determinar la mejor estrategia de la lista de estrategias, incluidas en m_all_strategies.

 
dasmen:
A juzgar por el gráfico, de nuevo tiene simplemente un modelo optimizado, incluso si parte de esta optimización fue automatizada, pero un modelo adaptado es un modelo en el que hay un bloque de cálculo que adapta la entrada y salida al mercado durante el funcionamiento de la estrategia, y los parámetros en la inicialización no importan en absoluto. En tales condiciones, sólo la línea de equidad en relación con la línea de equilibrio será igualada, porque en los casos en que la distribución para el cierre de una posición en beneficio ha cambiado - tal sistema todavía recalculará nuevos valores y determinará una nueva zona para el beneficio, y por lo tanto reconstruirá los parámetros para el beneficio y el grupo de órdenes de equidad se conservará:

el artículo utiliza el concepto y la aplicación de la estrategia adaptativa como en las matemáticas, de hecho como un sistema de aplicación de las opciones de gestión.