Processus de développement du système Ubzen - page 4

 
sakis:


je suis interessé par les deux systèmes, il faut vendre quand le marché change de direction.

Si vous faites un simple cross over entre 3WLMA et 100SMA sur le graphique 30 min EUR/USD jusqu'à 150pips et que vous sortez quand le cross over n'est pas SL, vous obtiendrez un système extrêmement rentable.

système extrêmement rentable que j'utilise depuis un certain temps, regardez les résultats et répondez moi avec un drawdowm de 13%.

Ce système (3LWMA 100SMA cross) ne fonctionne pas sur le graphique EURUSD H1,H4 et Daily.
 
zzuegg:
Ce système (3LWMA 100SMA cross) ne fonctionne pas sur le graphique EURUSD H1,H4 et Daily

bonjour zzuegg je sais qu'il fonctionne sur le graphique 30min et qu'il ne fonctionne que sur le graphique euro min il suffit de mettre le système lui-même sans macd
 

sakis:

hi zzuegg i know that,

il fonctionne dans le graphique 30min et fonctionne seulement en euro

Il suffit de mettre le système lui-même sans macd.
 
sakis:


parfois les systèmes fonctionnent mieux en live trading qu'en automatique à cause de l'œil humain on n'entre jamais dans une consolidation avant le 6ème tuch.

du canal et avant qu'une poussée se produise aussi.

de même qu'il ne faut jamais prendre un mouvement à contre-courant avant que des vagues superposées ne se produisent suivies d'un pic de dépassement de canal

de même, il ne faut jamais prendre un mouvement à contre-courant avant que des vagues superposées ne se produisent suivies d'un pic de dépassement de canal.

donc nous avons besoin de filtres pour contourner l'œil humain.

 

Ok, voici la mauvaise période à laquelle je faisais référence. Maintenant, je vais remonter le temps, une année à la fois. 2009, 2008, etc.

Voici les résultats annuels :

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----------------

Quelques observations.

1) Le système a tendance à perdre dans une rangée plutôt qu'au hasard la plupart du temps. Le Z-Score de l'article pourrait vous aider.

Cela montre bien pourquoi les traders professionnels recherchent des rendements de 20 à 30 % par an.

 

Pour l'instant, je ne peux que remonter jusqu'à 2005 car j'utilise les données de Fxdd que vous trouverez ici. La raison pour laquelle j'utilise ces données est que Fxdd ferme pour le week-end, tout comme mon courtier et a les écarts de week-end par défaut. De plus, leurs paramètres horaires sont plus proches de ceux de mon courtier. Je pourrais tester les données 2000-2005 d'ici si j'ai le temps. Leur semaine d'ouverture commence le mercredi et ils fonctionnent 6 jours par semaine.

Cependant, la seule période que j'ai visualisée est celle de janvier à mars 2010. Ma meilleure hypothèse est que ce système perd de manière séquentielle parce qu'il se trouve dans des fourchettes étroites ou très volatiles. Mais cela ne s'applique qu'à 2008, et même si vous n'avez qu'une expérience limitée de l'observation des graphiques, vous pouvez deviner que cela a peut-être quelque chose à voir avec la crise financière mondiale et que les marchés ont peut-être bougé sur la peur plus à cette époque.

Alors, que faire maintenant ?

-Accepter les résultats (comme le fait d'avoir une année perdante est acceptable), Calculer notre Kelly et ne pas être avide ?

-Continuer à aller de l'avant avec plus d'analyses statistiques comme le Z-Score. Mais même si j'ai la confirmation de la corrélation entre les pertes, que se passera-t-il ? Je peux toujours avoir recours à d'autres méthodes comme ci-dessous pour filtrer les données.

-Regarder ce truc en mode visuel pendant les mauvaises périodes et essayer d'éviter ce qui le tue ? L'inconvénient est que cela peut conduire à l'ajustement de la courbe ... si trop de connaissances passées sont utilisées juste pour que le back-test semble bon.

-Appliquer des filtres aveugles comme la fourchette, la volatilité, le temps, le volume, etc. L'inconvénient ici est que les filtres limitent le nombre de transactions. Exemple : négocier dans une seule direction à la fois ou s'accrocher à des tendances longues est un filtre dont la plupart des gens ne se rendent pas compte qu'il agit comme un filtre. Mon seul problème avec ce système est qu'il n'est pas assez actif pour transformer 1 000 $ en bonheur dans un délai raisonnable pour rendre la plupart des gens heureux. Mais cela pourrait être surmonté en ajoutant d'autres systèmes stables au compte.

-Dernière option, mais celle que je préfère le moins : Modifier le système un peu plus. Exemple :

a) Scalp on Direction - Inconvénient : nous aurons besoin de données tick. Les principes solides du MM peuvent-ils fonctionner avec de tels ajouts ?

b) Pyramide sur la direction - ajouter des lots lorsque le prix va dans notre sens - inconvénient : comment les fermer lorsqu'il va dans le sens contraire ?

c) Dollar cost Averaging - ajouter via des intervalles de temps mais avant le take profit. Inconvénient, il n'y a pas de prise en compte de la situation.

d) Grille - Ajouter la même taille que la position à une distance fixe contre nous - Inconvénient, conduit à un RRR à l'envers, et MM ne peut pas suivre.

e) Martingale/Progression (ha.ha.ha.ha) sur l'une des méthodes ci-dessus. Pour quelqu'un qui veut transformer un petit compte en un grand, cela peut sembler attrayant. L'inconvénient, c'est que l'on ne peut pas suivre le bon MM.

Je suis personnellement enclin à appeler cela pour ce que c'est et à aller de l'avant avec le MM.

J'aimerais savoir ce que les autres en pensent, car d'autres peuvent penser "Pas question, je vais demander quelque chose de mieux".

 
ubzen:

Pour l'instant, je ne peux que remonter jusqu'à 2005 car j'utilise les données de Fxdd que vous trouverez ici. La raison pour laquelle j'utilise ces données est que Fxdd ferme pour le week-end, tout comme mon courtier et a les écarts de week-end par défaut. De plus, leurs paramètres horaires sont plus proches de ceux de mon courtier. Je pourrais tester les données 2000-2005 d'ici si j'ai le temps. Leur semaine d'ouverture commence le mercredi et ils fonctionnent 6 jours par semaine.

Cependant, la seule période que j'ai visualisée est celle de janvier à mars 2010. Ma meilleure hypothèse est que ce système perd de manière séquentielle parce qu'il se trouve dans des fourchettes étroites ou très volatiles. Mais cela ne s'applique qu'à 2008, et même si vous n'avez qu'une expérience limitée de l'observation des graphiques, vous pouvez deviner que cela a peut-être quelque chose à voir avec la crise financière mondiale et que les marchés ont peut-être bougé sur la peur plus à cette époque.

Alors, que faire maintenant ?

-Accepter les résultats (comme le fait d'avoir une année perdante est acceptable), Calculer notre Kelly et ne pas être avide ?

-Continuer à aller de l'avant avec plus d'analyses statistiques comme le Z-Score. Mais même si j'ai la confirmation de la corrélation entre les pertes, que se passera-t-il ? Je peux toujours avoir recours à d'autres méthodes comme ci-dessous pour filtrer les données.

-Regarder ce truc en mode visuel pendant les mauvaises périodes et essayer d'éviter ce qui le tue ? L'inconvénient est que cela peut conduire à l'ajustement de la courbe ... si trop de connaissances passées sont utilisées juste pour que le back-test semble bon.

-Appliquer des filtres aveugles comme la fourchette, la volatilité, le temps, le volume, etc. L'inconvénient ici est que les filtres limitent le nombre de transactions. Exemple : négocier dans une seule direction à la fois ou s'accrocher à des tendances longues est un filtre dont la plupart des gens ne se rendent pas compte qu'il agit comme un filtre. Mon seul problème avec ce système est qu'il n'est pas assez actif pour transformer 1 000 $ en bonheur dans un délai raisonnable pour rendre la plupart des gens heureux. Mais cela pourrait être surmonté en ajoutant d'autres systèmes stables au compte.

-Dernière option, mais celle que je préfère le moins : Modifier le système un peu plus. Exemple :

a) Scalp on Direction - Inconvénient : nous aurons besoin de données tick. Les principes solides du MM peuvent-ils fonctionner avec de tels ajouts ?

b) Pyramide sur la direction - ajouter des lots lorsque le prix va dans notre sens - Inconvénient : comment les fermer lorsqu'il va dans le sens contraire ?

c) Dollar cost Averaging - ajouter via des intervalles de temps mais avant le take profit. Inconvénient, il n'y a pas de prise en compte de la situation.

d) Grille - Ajouter la même taille que la position à une distance fixe contre nous - Inconvénient, conduit à un RRR à l'envers, et MM ne peut pas suivre.

e) Martingale/Progression (ha.ha.ha.ha) sur l'une des méthodes ci-dessus. Pour quelqu'un qui veut transformer un petit compte en un grand, cela peut sembler attrayant. L'inconvénient, c'est que l'on ne peut pas suivre le bon MM.

Je suis personnellement enclin à appeler cela pour ce que c'est et à aller de l'avant avec le MM.

J'aimerais savoir ce que les autres en pensent, car d'autres peuvent penser "Pas question, je vais demander quelque chose de mieux".


Bonjour,

La pyramide sur les directions semble puissante, c'est exactement ce que fait ma version. Je pyramide avec les transactions secondaires.

Malheureusement, MAE nous montre que le calcul de la moyenne ne fonctionne pas dans cette stratégie, je dis malheureusement parce que j'aime ça ;)


Mais j'ai une autre question à poser à Phillip.

Dans votre script, vous étudiez le temps entre l'ordre d'ouverture et l'ordre de fermeture, mais comme le montre votre diagramme, vous devriez également étudier le temps avant et après l'ouverture/la fermeture afin d'obtenir une vue d'ensemble et un calcul MAE/MFE correct. Suis-je sur la mauvaise voie ?

 
zzuegg:

Mais j'ai une autre question à poser à Phillip.

Dans votre script, vous étudiez le temps entre l'ordre d'ouverture et l'ordre de fermeture, mais comme le montre votre diagramme, vous devriez également étudier le temps avant et après l'ouverture/la fermeture afin d'obtenir une vue d'ensemble et un calcul MAE/MFE correct. Suis-je sur la mauvaise voie ?


C'est exact. Pour chaque transaction, vous devez calculer si le temps jusqu'à la MAE est survenu en premier ou en dernier par rapport au temps jusqu'à la MFE. Les transactions pour lesquelles la MAE se produit avant la MFE sont appelées "Type 1". Les transactions pour lesquelles la MFE se produit avant la MAE sont appelées "Type 2".

Une mesure facile pour exprimer la capacité de prévision du marché de votre stratégie consiste simplement à rapporter les occurrences de transactions de type 1 au nombre total de transactions et à multiplier par 100 %. Supposons que vous ayez 100 transactions sur une année, 90 d'entre elles s'avèrent être des transactions de type 1 et 10 d'entre elles sont de type 2. Votre "taux de réussite des prédictions" est donc de 90/100 x 100% = 90%.

Les stratégies ayant un meilleur taux de prédiction du marché à court terme sont plus souhaitables que les stratégies qui ne parviennent pas à prédire correctement la direction du marché à court terme. (pour toutes les raisons évidentes)
 

Ok, j'ai compris, mais devez-vous également permettre à TimeToMAE réel par rapport à l'heure d'ouverture d'être négatif et positif ? Un TimeToMAE positif lorsque vous êtes entré trop tôt dans la transaction et négatif lorsque vous êtes entré trop tard. Bien sûr, le calcul de la moyenne des valeurs peut aboutir à une stratégie parfaite, il faut donc également tenir compte de l'écart-type du tToMAE.

D'après ce que je vois, vous n'autorisez pas les tToMAE négatifs.

En introduisant les variables WatchBarsBeforeOpen et WatchBarsAfterClose, je pense avoir résolu ce problème. Notez qu'il s'agit encore d'un travail en cours. tToMAE et tToMFE sont en minutes aussi précises que le permet la période utilisée.

Il n'y a pas encore d'analyses incluses, juste des données brutes.

//+------------------------------------------------------------------+
//|                                      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, voici la mauvaise période à laquelle je faisais référence. Maintenant, je vais remonter le temps, une année à la fois. 2009, 2008, etc.

Voici les résultats annuels :

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----------------

Quelques observations.

1) Le système a tendance à perdre dans une rangée plutôt qu'au hasard la plupart du temps. Le Z-Score de l'article pourrait vous aider.

Cela montre bien pourquoi les traders professionnels recherchent des rendements de 20 à 30 % par an.



Lorsque vous disposez de données de retour sur investissement couvrant des mois et des années, vous disposez des données nécessaires pour évaluer votre risque de ruine à l'avenir.

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

Ces données de backtesting sont précisément les données nécessaires pour calculer réellement quelque chose à partir des résultats de backtesting qui peuvent être exploités pour indiquer les résultats futurs.

Les scores Z ne permettent pas de prédire les résultats futurs car ils dépendent des séries chronologiques. La seule façon dont un score Z de 2009 est pertinent pour 2011 est que l'activité des prix du marché en 2011 soit essentiellement une répétition de 2009.

Le score Z est une statistique intéressante à évaluer, mais il n'apporte aucune valeur ajoutée et ne donne aucune indication sur les performances futures de votre stratégie. Ce n'est pas pour rien que les CTA, les gestionnaires de fonds, Morningstar, etc. ne suivent pas et ne rendent pas compte du score Z pour les comptes gérés professionnellement. C'est une mesure de succès sans valeur.

Le risque de ruine calculé, et le drawdown médian, sont des choses que les professionnels font, et pas seulement dans le secteur du forex.

De plus, en termes de courtiers... utiliser différents courtiers pour le backtesting est en quelque sorte l'effort du pauvre pour découpler leur stratégie de celle de la série chronologique sous-jacente. Vous ne savez pas à quoi ressembleront les séries temporelles futures, mais les séries temporelles passées de deux courtiers ne sont pas identiques. Il est donc judicieux d'effectuer des backtests sur un large éventail d'ensembles de données historiques provenant de différentes sources, puis d'analyser la robustesse des performances de votre stratégie, car cette robustesse permet d'évaluer les performances de votre stratégie sur les séries temporelles futures.

Les professionnels effectuent également des backtests sur des taux de marché historiques variables. Dans certains cas, ils utilisent des méthodes de Monte Carlo pour créer des données de marché entièrement fictives qui sont statistiquement équivalentes aux données de marché réelles, juste pour renforcer leur backtesting.

Vous êtes peut-être déjà au courant de tout cela et avez vos propres raisons, tout aussi valables, de choisir des méthodes d'analyse alternatives.