Proceso de desarrollo del sistema Ubzen - página 4

 
sakis:


Estoy interesado en ambos sistemas que deben vender cuando el mercado cambia de dirección

Si usted hace un simple cruce entre 3WLMA y 100SMA 30 min gráfico EUR/USD tp 150pips y salir cuando el cruce happent no SL que va a terminar con extrema

sistema rentable que lo uso para somme tiempo mira los resultados y escribir a mí de nuevo con 13% drawdowm

Este sistema (3LWMA 100SMA cruz) no funciona en EURUSD H1, H4 y gráfico diario
 
zzuegg:
Este sistema (3LWMA 100SMA cross) no funciona en EURUSD H1,H4 y gráfico diario

hola zzuegg sé que funciona en 30min gráfico y funciona sólo en euro min gráfico acaba de poner el sistema de su auto con fuera macd
 

sakis:

hi zzuegg i know that,

funciona en el gráfico de 30 minutos y sólo funciona en euros

solo pon el sistema por si mismo sin macd
 
sakis:


algunas veces el sistema funciona mejor en el comercio en vivo que en automático debido al ojo humano nunca fx entrar en una consolidación antes de la 6 ª tuch

del canal y antes de que ocurra un empuje también

como nunca se toma un movimiento contra tendencia antes de que ocurran ondas superpuestas seguidas de un pico de rebasamiento del canal

tambien se toman los breackouts cuando ocurren en un 3er o 4to movimiento en un periodo corto de 1 o 2 dias y con valores de tick altos porque significa que los precios estan en manos fuertes

así que necesitamos filtros para ir a este ojo humano

 

Ok, aquí está el mal período al que me refería. Ahora, voy a correr esto hacia atrás, 1 año a la vez. 2009, 2008, etc.

Aquí están los resultados anuales:

2010--Max-DD= 6.47____Rel-DD= 6.47____Net_Profit=4588____Factor=2.48
2009--Max-DD=26.76____Rel-DD=26.76____Net_Profit=-380____Factor=0.94
2008--Max-DD=19.79____Rel-DD=19.79____Net_Profit=1096____Factor=1.20
2007--Max-DD= 7.10____Rel-DD= 7.10____Net_Profit=1506____Factor=1.62
2006--Max-DD=20.46____Rel-DD=20.46____Net_Profit=-1612____Factor=0.63
2005--Max-DD= 8,79____Rel-DD= 8,79____Net_Profit= -23____Factor=0,99

2005----------------

2006-----------------

2007-----------------

2008--------------

2009 ------------------

2010----------------

Un par de observaciones.

1) El sistema tiende a perder en una fila en lugar de al azar la mayor parte del tiempo. Z-Score del artículo podría ayudar con esto.

Esto ayuda a subrayar el hecho de que los operadores profesionales buscan una rentabilidad del 20-30% al año.

 

Por ahora sólo puedo hacer back-to-2005 porque estoy usando los datos de Fxdd que se encuentran aquí. La razón por la que estoy utilizando estos datos es porque Fxdd cierra durante el fin de semana, al igual que mi corredor y tienen los huecos de fin de semana por defecto. Además, su configuración de tiempo está más cerca de mi corredor. Puede que haga pruebas con los datos de 2000-2005 de aquí si tengo tiempo. La apertura de la semana comienza el miércoles y funcionan 6 días a la semana.

Tho, el único período que he visto visualmente es el período de enero a marzo de 2010, Mi mejor conjetura es que este sistema está perdiendo de manera secuencial porque está en rangos apretados o muy volátiles. Pero eso sólo se aplica mejor a 2008, e incluso si usted tiene experiencia limitada mirando gráficos, podría adivinar que puede haber tenido algo que ver con la Crisis Financiera Global y los mercados pueden haber estado moviéndose en Fear más en ese momento.

Entonces, ¿qué hacer ahora?

-Aceptar los resultados (como tener un año perdedor está bien), Calcular nuestra Kelly y no ser codiciosos?

-Seguir avanzando con más análisis estadísticos como el Z-Score. Pero incluso si tengo una confirmación sobre la correlación entre las pérdidas, ¿entonces qué? Puede que todavía tenga que resultar a otros métodos como a continuación para filtrar los datos.

-Mirar esta cosa en modo visual durante los períodos malos y tratar de evitar lo que está matando? El inconveniente es que esto puede conducir a la curva de ajuste ... si demasiado conocimiento pasado evitando se utiliza sólo para hacer la prueba de espalda se ven bien.

-Aplicar algunos filtros ciegos como rango, volatilidad, tiempo, volumen, etc.? El inconveniente aquí es que los filtros limitan el # de operaciones. Ejemplo: el comercio en 1 dirección a la vez o la celebración de las tendencias de largo es el filtro que la mayoría de la gente no se da cuenta de que está actuando como un filtro. Mi única queja con este sistema es que no es lo suficientemente activo para convertir como $1,000 en felicidad dentro de un tiempo razonable para hacer feliz a la mayoría de la gente. Pero eso podría superarse añadiendo otros sistemas estables a la cuenta.

-La última opción, pero la que menos me gusta: Cambiar el sistema un poco más. Ejemplo:

a) Scalp on Direction - Inconveniente necesitaremos datos de tick. ¿Pueden los principios de Solid MM trabajar con tales complementos?

b) Pirámide en la dirección - añadir lotes cuando el precio va en nuestra dirección - Inconveniente: ¿cómo los cerramos cuando va en nuestra contra?

c) Dollar cost Averaging - añadir a través de intervalos de tiempo pero antes de la toma de beneficios. Inconveniente, no se tiene en cuenta la situación.

d) Grid - Añadir el mismo tamaño cuando la posición va a una distancia fija contra nosotros - Inconveniente, lleva a un RRR al alza, y el MM no puede seguir el ritmo.

e) Martingala/Progresión (ja.ja.ja) en cualquiera de los métodos anteriores. Para alguien que quiera convertir una cuenta pequeña en una grande, esto podría parecer atractivo. Inconveniente, definitivamente no se puede seguir una correcta MM.

Personalmente me inclino por llamar a esto por lo que es y seguir adelante con MM.

Me gustaría saber lo que otros piensan, ya que otros pueden sentir "No-Way, voy a requerir algo mejor".

 
ubzen:

Por ahora sólo puedo hacer back-to-2005 porque estoy usando los datos de Fxdd que se encuentran aquí. La razón por la que estoy utilizando estos datos es porque Fxdd cierra durante el fin de semana, al igual que mi corredor y tienen los huecos de fin de semana por defecto. Además, su configuración de tiempo está más cerca de mi corredor. Puede que haga pruebas con los datos de 2000-2005 de aquí si tengo tiempo. La apertura de la semana comienza el miércoles y funcionan 6 días a la semana.

Sin embargo, el único período que he visto visualmente es el período de enero a marzo de 2010, mi mejor conjetura es que este sistema está perdiendo de manera secuencial porque está en rangos estrechos o muy volátiles. Pero eso sólo se aplica mejor a 2008, e incluso si usted tiene experiencia limitada mirando gráficos, podría adivinar que puede haber tenido algo que ver con la Crisis Financiera Global y los mercados pueden haber estado moviéndose en Fear más en ese momento.

Entonces, ¿qué hacer ahora?

-Aceptar los resultados (como tener un año perdedor está bien), Calcular nuestra Kelly y no ser codiciosos?

-Seguir avanzando con más análisis estadísticos como el Z-Score. Pero incluso si tengo una confirmación sobre la correlación entre las pérdidas, ¿entonces qué? Puede que todavía tenga que resultar a otros métodos como a continuación para filtrar los datos.

-Mirar esta cosa en modo visual durante los períodos malos y tratar de evitar lo que está matando? El inconveniente es que esto puede llevar a un ajuste de curvas ... si demasiado conocimiento pasado evitando se utiliza sólo para hacer la prueba de espalda se ven bien.

-Aplicar algunos filtros ciegos como rango, volatilidad, tiempo, volumen, etc.? El inconveniente aquí es que los filtros limitan el # de operaciones. Ejemplo: el comercio en 1 dirección a la vez o la celebración de las tendencias de largo es el filtro que la mayoría de la gente no se da cuenta de que está actuando como un filtro. Mi única queja con este sistema es que no es lo suficientemente activo para convertir como $1,000 en felicidad dentro de un tiempo razonable para hacer feliz a la mayoría de la gente. Pero eso podría superarse añadiendo otros sistemas estables a la cuenta.

-La última opción, pero la que menos me gusta: Cambiar el sistema un poco más. Ejemplo:

a) Scalp on Direction - Inconveniente necesitaremos datos de tick. ¿Pueden los principios de Solid MM trabajar con tales complementos?

b) Pirámide en la dirección - añadir lotes cuando el precio va en nuestra dirección - Inconveniente: ¿cómo los cerramos cuando va en nuestra contra?

c) Dollar cost Averaging - añadir a través de intervalos de tiempo pero antes de la toma de beneficios. Inconveniente, no se tiene en cuenta la situación.

d) Grid - Añadir el mismo tamaño cuando la posición va a una distancia fija contra nosotros - Inconveniente, lleva a un RRR al alza, y el MM no puede seguir el ritmo.

e) Martingala/Progresión (ja.ja.ja) en cualquiera de los métodos anteriores. Para alguien que quiera convertir una cuenta pequeña en una grande, esto podría parecer atractivo. Inconveniente, definitivamente no se puede seguir una correcta MM.

Personalmente me inclino por llamar a esto por lo que es y seguir adelante con MM.

Me gustaría saber lo que otros piensan, ya que otros pueden sentir "No-Way, voy a requerir algo mejor".


Hola,

Piramidar en las direcciones parece poderoso, esto es exactamente lo que hace mi versión. Yo piramido con las operaciones secundarias.

Desgraciadamente MAE nos muestra que promediar podría no funcionar en esta estrategia, digo desgraciadamente porque me gusta eso ;)


Pero otra pregunta que tengo es para Phillip.

En tu script estás investigando el tiempo entre OrderOpen y OrderClose, pero como muestra el diagrama también deberías investigar algún tiempo antes y después de la apertura/cierre para obtener una visión general y un cálculo correcto de MAE/MFE? ¿Estoy en el camino equivocado?

 
zzuegg:

Pero otra pregunta que tengo es para Phillip.

En tu script estás investigando el tiempo entre OrderOpen y OrderClose, pero como muestra el diagrama, también deberías investigar algún tiempo antes y después de la apertura/cierre para obtener una visión general y un cálculo correcto de MAE/MFE. ¿Estoy en el camino equivocado?


Es correcto. En cada operación debe calcular si el tiempo hasta el MAE ocurrió primero o último en relación con el tiempo hasta el MFE. Las operaciones en las que el MAE se produce antes del MFE se denominan "Tipo 1". Las operaciones en las que el MFE se produce antes que el MAE se denominan "Tipo 2".

Una métrica fácil para expresar la capacidad de previsión del mercado de su estrategia es simplemente la relación de las ocurrencias de las operaciones de Tipo 1 por el número total de operaciones y multiplicar por 100%. Digamos que tiene 100 operaciones en un año, 90 de ellas resultan ser de Tipo 1 y 10 de ellas son de Tipo 2. Entonces su "tasa de éxito de predicción" es de 90/100 x 100% = 90%.

Las estrategias con una mejor tasa de predicción del mercado a corto plazo son más deseables que las estrategias que no pueden predecir correctamente la dirección del mercado a corto plazo. (por todas las razones obvias)
 

Ok, entendido eso, pero ¿también debería permitir que TimeToMAE realtive al opentime sea nagativo y positivo? El tToMAE es positivo cuando se entra en la operación demasiado pronto y negativo cuando se entra demasiado tarde. Por supuesto, el promedio de los valores podría resultar en una estrategia perfecta, por lo que también tiene que mirar el StdDev de la tToMAE.

Por lo que veo no está permitiendo tToMAE's negativos.

Al introducir las variables WatchBarsBeforeOpen y WatchBarsAfterClose creo que he superado este problema. Tenga en cuenta que esto es todavía un trabajo temprano en progreso. tToMAE y tToMFE están en minutos tan precisos como el marco de tiempo utilizado permite.

Todavía no se han incluido análisis, sólo datos en bruto.

//+------------------------------------------------------------------+
//|                                      AdvancedReport_03_04_11.mq4 |
//|                                                           zzuegg |
//|                                       when-money-makes-money.com |
//+------------------------------------------------------------------+
#property copyright "zzuegg"
#property link      "when-money-makes-money.com"

extern int WatchBarsBeforeOpen=10;
extern int WatchBarsAfterClose=10;
extern int WatchPeriod=0;

int ticket[];
int mae[];
int mae.time[];
int mfe[];
int mfe.time[];
int mfee[];
int profit[];
int missed[];

void reportTrade(int trade){
   OrderSelect(trade,SELECT_BY_TICKET,MODE_HISTORY);
   int start   =(iBarShift(OrderSymbol(),WatchPeriod,OrderOpenTime(),false) +WatchBarsBeforeOpen)+1;
   int end     =iBarShift(OrderSymbol(),WatchPeriod,OrderCloseTime(),false) -WatchBarsAfterClose;
   int highest =iHighest (OrderSymbol(),WatchPeriod,MODE_HIGH,(start-end)+1,end);
   int lowest  =iLowest  (OrderSymbol(),WatchPeriod,MODE_LOW,(start-end)+1,end);
  // Print(OrderTicket()+"  "+start+"  "+end+"  "+highest+"  "+lowest);
   ArrayResize(ticket,ArraySize(ticket)+1);   
   ArrayResize(mae,ArraySize(mae)+1);
   ArrayResize(mae.time,ArraySize(mae.time)+1);
   ArrayResize(mfe,ArraySize(mfe)+1);
   ArrayResize(mfe.time,ArraySize(mfe.time)+1);
   ArrayResize(mfee,ArraySize(mfee)+1);
   ArrayResize(profit,ArraySize(profit)+1);
   ArrayResize(missed,ArraySize(missed)+1);
   
   //Print(TimeMinute(OrderOpenTime())+"  "+TimeMinute(OrderCloseTime())+"  "+TimeMinute(iTime(OrderSymbol(),WatchPeriod,lowest))+"  "+TimeMinute(iTime(OrderSymbol(),WatchPeriod,highest)));
   ticket[ArraySize(ticket)-1]            =OrderTicket();
   switch(OrderType()){
      case OP_BUY:{
         mae[ArraySize(mae)-1]            =(OrderOpenPrice()-iLow(OrderSymbol(),WatchPeriod,lowest))/MarketInfo(OrderSymbol(),MODE_POINT);
         mae.time[ArraySize(mae.time)-1]  =(OrderOpenTime()-iTime(OrderSymbol(),WatchPeriod,lowest))/60;
         mfe[ArraySize(mae)-1]            =(iHigh(OrderSymbol(),WatchPeriod,highest)-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);
         mfe.time[ArraySize(mae.time)-1]  =(OrderOpenTime()-iTime(OrderSymbol(),WatchPeriod,highest))/60;
         profit[ArraySize(profit)-1]      =(OrderClosePrice()-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);
         missed[ArraySize(missed)-1]      =(mae[ArraySize(mae)-1]+mfe[ArraySize(mfe)-1])-profit[ArraySize(profit)-1];
         mfee[ArraySize(mfee)-1]          =(mfe[ArraySize(mfe)-1])-profit[ArraySize(profit)-1];
      break;
      }
      case OP_SELL:{
         mae[ArraySize(mae)-1]            =(iHigh(OrderSymbol(),WatchPeriod,highest)-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);
         mae.time[ArraySize(mae.time)-1]  =(OrderOpenTime()-iTime(OrderSymbol(),WatchPeriod,highest))/60;
         mfe[ArraySize(mae)-1]            =(OrderOpenPrice()-iLow(OrderSymbol(),WatchPeriod,lowest))/MarketInfo(OrderSymbol(),MODE_POINT);
         mfe.time[ArraySize(mae.time)-1]  =(OrderOpenTime()-iTime(OrderSymbol(),WatchPeriod,lowest))/60;
         profit[ArraySize(profit)-1]      =(OrderOpenPrice()-OrderClosePrice())/MarketInfo(OrderSymbol(),MODE_POINT);
         missed[ArraySize(missed)-1]      =(mae[ArraySize(mae)-1]+mfe[ArraySize(mfe)-1])-profit[ArraySize(profit)-1]; 
         mfee[ArraySize(mfee)-1]          =(mfe[ArraySize(mfe)-1])-profit[ArraySize(profit)-1];      
      break;
      }
   }  
}

void writeCSV(string EA.name,string EA.parameter=""){
   int hnd=FileOpen(EA.name+"-"+EA.parameter+".csv",FILE_CSV | FILE_WRITE,";");
   FileWrite(hnd,"Ticket","MAE","TimeToMAE","MFE","TimeToMFE","MFEE","Profit","Missed");
   for(int i=0;i<ArraySize(mae);i++){
      FileWrite(hnd,ticket[i],mae[i],mae.time[i],mfe[i],mfe.time[i],mfee[i],profit[i],missed[i]);
   }
   FileClose(hnd);
}


void AdvancedReport.doStatistics(string EA.name,string EA.parameters="",int EA.limitMagicNumber=-1){
   for(int i=0;i<OrdersHistoryTotal();i++){
      OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      if(OrderMagicNumber()==EA.limitMagicNumber || EA.limitMagicNumber==-1){
         reportTrade(OrderTicket());
      }
   }
   
   
   writeCSV(EA.name,EA.parameters);
}
 
ubzen:

Ok, aquí está el mal período al que me refería. Ahora, voy a correr esto hacia atrás, 1 año a la vez. 2009, 2008, etc.

Aquí están los resultados anuales:

2010--Max-DD= 6.47____Rel-DD= 6.47____Net_Profit=4588____Factor=2.48
2009--Max-DD=26.76____Rel-DD=26.76____Net_Profit=-380____Factor=0.94
2008--Max-DD=19.79____Rel-DD=19.79____Net_Profit=1096____Factor=1.20
2007--Max-DD= 7.10____Rel-DD= 7.10____Net_Profit=1506____Factor=1.62
2006--Max-DD=20.46____Rel-DD=20.46____Net_Profit=-1612____Factor=0.63
2005--Max-DD= 8,79____Rel-DD= 8,79____Net_Profit= -23____Factor=0,99

2005----------------

2006-----------------

2007-----------------

2008--------------

2009 ------------------

2010----------------

Un par de observaciones.

1) El sistema tiende a perder en una fila en lugar de al azar la mayor parte del tiempo. Z-Score del artículo podría ayudar con esto.

Esto ayuda a subrayar el hecho de que los operadores profesionales buscan una rentabilidad del 20-30% al año.



Cuando se dispone de datos sobre el rendimiento de la inversión que abarcan meses y años, se tienen los datos necesarios para evaluar el riesgo de ruina en el futuro.

http://www.futuresmag.com/Issues/2009/August2009/Pages/Minimizing-your-risk-of-ruin.aspx

Estos datos de backtesting son precisamente los que se necesitan para calcular algo a partir de los resultados del backtesting que pueda ser aprovechado para indicar resultados futuros.

Las puntuaciones Z no son predictivas de los resultados futuros, ya que dependen de la serie temporal, la única manera de que una puntuación Z de 2009 sea relevante para 2011 es si la actividad de los precios del mercado en 2011 es esencialmente una repetición de 2009.

La puntuación Z es una estadística interesante para evaluar, pero no añade ningún valor o conocimiento sobre cómo se comportará su estrategia en el futuro. Hay una razón por la que los CTA, los gestores de dinero, Morningstar, etc. no rastrean e informan sobre el Z-score para las cuentas gestionadas profesionalmente. Es una métrica de éxito sin valor.

Computar el riesgo de ruina, sin embargo, y la reducción media, estas son cosas que los profesionales hacen, y no sólo en la industria de la divisa.

Además, en términos de corredores... el uso de diferentes corredores para backtesting es como el esfuerzo del hombre pobre para desacoplar su estrategia de la de la serie de tiempo subyacente. Usted no sabe cómo será la serie temporal futura, pero no hay dos series temporales pasadas del corredor que sean idénticas, por lo que el backtesting a través de una amplia gama de conjuntos de datos históricos de diferentes fuentes y, a continuación, el análisis de la robustez de su estrategia es una buena idea, ya que esta robustez habla de lo bien que su estrategia podría llevar a cabo en futuras series temporales.

Los profesionales también realizan pruebas retrospectivas con distintos tipos de mercado históricos. En algunos casos, utilizan métodos de Montecarlo para crear datos de mercado totalmente ficticios que son estadísticamente equivalentes a los datos de mercado reales, sólo para reforzar sus pruebas retrospectivas.

Es sólo una reflexión, ya que es posible que usted conozca todo esto y tenga sus propias razones, igualmente válidas, para optar por métodos de análisis alternativos.