Processo di sviluppo del sistema Ubzen - pagina 4

 
sakis:


Sono interessato ad entrambi i sistemi che devono vendere quando il mercato cambia direzione

Se fai un semplice incrocio tra 3WLMA e 100SMA sul grafico a 30 minuti EUR/USD fino a 150pips e esci quando l'incrocio è avvenuto e non SL ti ritroverai con un sistema estremamente

sistema profittevole che io uso per qualche tempo guarda i risultati e scrivimi indietro con il 13% di drawdowm

Questo sistema (3LWMA 100SMA cross) non funziona su EURUSD H1, H4 e grafico giornaliero
 
zzuegg:
Questo sistema (3LWMA 100SMA cross) non funziona su EURUSD H1,H4 e grafico giornaliero

Ciao zzuegg so che funziona nel grafico 30min e funziona solo nel grafico euro min appena messo il sistema stesso con fuori macd
 

sakis:

hi zzuegg i know that,

funziona in un grafico a 30 minuti e funziona solo in euro

basta mettere il sistema da solo senza macd
 
sakis:


alcune volte il sistema funziona meglio nel live trading che in automatico a causa dell'occhio umano non si entra mai in un consolidamento prima del 6° tuch

del canale e prima che avvenga una spinta

come non si prende mai una mossa in controtendenza prima della sovrapposizione delle onde che si verificano seguite da un picco di overshoot del canale

anche voi tutti i modi prendere un breackout quando hapent in un 3 ° o 4 mossa in breve periodo di 1 o 2 giorni e alti valori di tick perché significa che i prezzi sono in mani forti

quindi abbiamo bisogno di filtri per governare questo occhio umano

 

Ok, ecco il brutto periodo a cui mi riferivo. Ora, vado all'indietro, 1 anno alla volta. 2009, 2008 ecc.

Ecco i risultati annuali:

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 paio di osservazioni.

1) Il sistema tende a perdere in una riga invece che in modo casuale la maggior parte del tempo. Lo Z-Score dell'articolo potrebbe aiutare in questo.

Questo aiuta a sottolineare il fatto che i trader professionisti cercano rendimenti del 20-30% all'anno.

 

Per ora posso fare solo il back-to-2005 perché sto usando i dati di Fxdd che si trovano qui. Il motivo per cui sto usando questi dati è che Fxdd chiude per il fine settimana, proprio come il mio broker e hanno le lacune del fine settimana per impostazione predefinita. Inoltre, le loro impostazioni temporali sono più vicine a quelle del mio broker. Potrei testare i dati 2000-2005 da qui se ho il tempo. La loro settimana di apertura inizia il mercoledì e funzionano 6 giorni a settimana.

Tho, l'unico periodo che ho visto visivamente è il periodo gennaio-marzo 2010, La mia ipotesi migliore è che questo sistema sta perdendo in modo sequenziale perché è in Tight o Very Volatile Ranges. Ma questo vale solo per il 2008, e anche se hai un'esperienza limitata nel guardare i grafici, potresti indovinare che potrebbe aver avuto qualcosa a che fare con la crisi finanziaria globale e i mercati potrebbero essersi mossi su Fear più in quel periodo.

Quindi, cosa fare ora?

-Accettare i risultati (come avere un anno perdente va bene), calcolare la nostra Kelly e non essere avidi?

-Continuare ad andare avanti con altre analisi statistiche come lo Z-Score. Ma anche se ottenessi una conferma della correlazione tra le perdite, cosa succederebbe? Potrei ancora dover risultare in altri metodi come sotto per filtrare i dati.

-Guardare questa cosa in modo visivo durante i periodi negativi e cercare di evitare ciò che la sta uccidendo? Lo svantaggio è che questo può portare all'adattamento della curva ... se troppa conoscenza del passato evitando è usato solo per rendere il back-test guardare bene.

-Applicare alcuni filtri Blind come range, volatilità, tempo, volume ecc. Lo svantaggio qui è che i filtri limitano il numero di trade. Esempio: scambiare in 1 direzione alla volta o mantenere le tendenze lunghe è un filtro di cui la maggior parte delle persone non si rende conto che agisce come un filtro. Il mio unico problema con questo sistema è che non è abbastanza attivo per trasformare tipo $1,000 in felicità in un tempo ragionevole per rendere felice la maggior parte delle persone. Ma questo potrebbe essere superato aggiungendo altri sistemi stabili al conto.

-L'ultima opzione, ma la meno preferita: Cambiare il sistema un po' di più. Esempio:

a) Scalp on Direction - Lo svantaggio è che avremo bisogno di dati in tick. I solidi principi di MM possono funzionare con tali componenti aggiuntivi?

b) Piramide sulla direzione - aggiungere lotti quando il prezzo va nella nostra direzione - svantaggio: come li chiudiamo quando ci va contro?

c) Dollar cost Averaging - aggiungere tramite intervalli di tempo ma prima del take profit. Svantaggio, non c'è considerazione della situazione.

d) Griglia - Aggiungere la stessa dimensione quando la posizione va a distanza fissa contro di noi - svantaggio, porta a un RRR rovesciato, e MM non può tenere il passo.

e) Martingala/Progressione (ha.ha.ha.ha) su uno qualsiasi dei metodi di cui sopra. Per qualcuno che vuole costruire un piccolo conto in grande questo potrebbe sembrare attraente. Svantaggio, sicuramente non può seguire una corretta MM.

Personalmente sono propenso a chiamarlo per quello che è e ad andare avanti con MM.

Mi piacerebbe sapere cosa ne pensano gli altri, dato che altri potrebbero sentirsi "No-Way, richiederò qualcosa di meglio".

 
ubzen:

Per ora posso fare solo il back-to-2005 perché sto usando i dati di Fxdd che si trovano qui. Il motivo per cui sto usando questi dati è che Fxdd chiude per il fine settimana, proprio come il mio broker e hanno le lacune del fine settimana per impostazione predefinita. Inoltre, le loro impostazioni temporali sono più vicine a quelle del mio broker. Potrei testare i dati 2000-2005 da qui se ho il tempo. La loro settimana di apertura inizia il mercoledì e funzionano 6 giorni a settimana.

Tho, l'unico periodo che ho visto visivamente è il periodo gennaio-marzo 2010, La mia ipotesi migliore è che questo sistema sta perdendo in modo sequenziale perché è in Tight o Very Volatile Ranges. Ma questo vale solo per il 2008, e anche se hai un'esperienza limitata nel guardare i grafici, potresti indovinare che potrebbe aver avuto qualcosa a che fare con la crisi finanziaria globale e i mercati potrebbero essersi mossi su Fear più in quel periodo.

Quindi, cosa fare ora?

-Accettare i risultati (come avere un anno perdente va bene), calcolare la nostra Kelly e non essere avidi?

-Continuare ad andare avanti con altre analisi statistiche come lo Z-Score. Ma anche se ottenessi una conferma della correlazione tra le perdite, cosa succederebbe? Potrei ancora dover risultare in altri metodi come sotto per filtrare i dati.

-Guardare questa cosa in modo visivo durante i periodi negativi e cercare di evitare ciò che la sta uccidendo? Lo svantaggio è che questo può portare all'adattamento della curva ... se troppa conoscenza del passato evitando è usato solo per rendere il back-test guardare bene.

-Applicare alcuni filtri Blind come range, volatilità, tempo, volume ecc. Lo svantaggio qui è che i filtri limitano il numero di trade. Esempio: scambiare in 1 direzione alla volta o mantenere le tendenze lunghe è un filtro di cui la maggior parte delle persone non si rende conto che agisce come un filtro. Il mio unico problema con questo sistema è che non è abbastanza attivo per trasformare tipo $1,000 in felicità in un tempo ragionevole per rendere felice la maggior parte delle persone. Ma questo potrebbe essere superato aggiungendo altri sistemi stabili al conto.

-L'ultima opzione, ma la meno preferita: Cambiare il sistema un po' di più. Esempio:

a) Scalp on Direction - Lo svantaggio è che avremo bisogno di dati in tick. I solidi principi di MM possono funzionare con tali componenti aggiuntivi?

b) Piramide sulla direzione - aggiungere lotti quando il prezzo va nella nostra direzione - svantaggio: come li chiudiamo quando ci va contro?

c) Dollar cost Averaging - aggiungere tramite intervalli di tempo ma prima del take profit. Svantaggio, non c'è considerazione della situazione.

d) Griglia - Aggiungere la stessa dimensione quando la posizione va a distanza fissa contro di noi - svantaggio, porta al rialzo del RRR, e MM non può tenere il passo.

e) Martingala/Progressione (ha.ha.ha.ha) su uno qualsiasi dei metodi di cui sopra. Per qualcuno che vuole costruire un piccolo conto in grande questo potrebbe sembrare attraente. Svantaggio, sicuramente non può seguire una corretta MM.

Personalmente sono propenso a chiamarlo per quello che è e ad andare avanti con MM.

Mi piacerebbe sapere cosa ne pensano gli altri, dato che altri potrebbero sentirsi "No-Way, richiederò qualcosa di meglio".


Ciao,

Piramidare sulle direzioni sembra potente, questo è esattamente quello che fa la mia versione. Io piramido con i trade secondari.

Purtroppo MAE ci mostra che il calcolo della media potrebbe non funzionare in questa strategia, dico purtroppo perché mi piace ;)


Ma un'altra domanda che ho è per Phillip.

Nel tuo script stai studiando il tempo tra OrderOpen e OrderClose, ma come mostra il tuo diagramma dovresti studiare anche il tempo prima e dopo l'apertura/chiusura per avere una visione d'insieme e un giusto calcolo MAE/MFE? Sono sulla strada sbagliata?

 
zzuegg:

Ma un'altra domanda che ho è per Phillip.

Nel tuo script stai studiando il tempo tra OrderOpen e OrderClose, ma come mostra il tuo diagramma dovresti studiare anche il tempo prima e dopo l'apertura/chiusura per avere una visione d'insieme e un giusto calcolo MAE/MFE? Sono sulla strada sbagliata?


Corretto. Su base trade-by-trade dovresti calcolare se il tempo al MAE si è verificato per primo o per ultimo rispetto al tempo al MFE. Le compravendite in cui il MAE si verifica prima del MFE sono chiamate "Tipo 1". Le compravendite in cui il MFE si verifica prima del MAE sono chiamate "Tipo 2".

Una facile metrica per esprimere la capacità di previsione del mercato della vostra strategia è semplicemente il rapporto tra le occorrenze delle compravendite di tipo 1 per il numero totale di compravendite e moltiplicare per il 100%. Diciamo che hai 100 operazioni in un anno, 90 di esse risultano essere di tipo 1 e 10 di esse sono di tipo 2. Quindi il tuo "tasso di successo della previsione" è 90/100 x 100% = 90%.

Le strategie con un migliore tasso di previsione del mercato a breve termine sono più desiderabili delle strategie che non riescono a prevedere correttamente la direzione del mercato a breve termine. (per tutte le ragioni ovvie)
 

Ok, questo l'ho capito, ma si dovrebbe anche permettere che il TimeToMAE reale all'opentime sia nagativo e positivo? TToMAE positivo quando si è entrati nel trade troppo presto e negativo quando si è entrati troppo tardi. Naturalmente la media dei valori potrebbe risultare in una strategia perfetta, quindi dovete anche guardare lo StdDev del tToMAE.

Da quello che vedo non permettete i tToMAE negativi.

Introducendo le variabili WatchBarsBeforeOpen e WatchBarsAfterClose penso di aver superato questo problema. Si noti che questo è ancora un lavoro iniziale in corso. tToMAE e tToMFE sono in minuti come preciso come il timeframe utilizzato consentono.

Non ci sono ancora analisi incluse, solo dati grezzi

//+------------------------------------------------------------------+
//|                                      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, ecco il brutto periodo a cui mi riferivo. Ora, vado all'indietro, 1 anno alla volta. 2009, 2008 ecc.

Ecco i risultati annuali:

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 paio di osservazioni.

1) Il sistema tende a perdere in una riga invece che in modo casuale la maggior parte del tempo. Lo Z-Score dell'articolo potrebbe aiutare in questo.

Questo aiuta a sottolineare il fatto che i trader professionisti cercano rendimenti del 20-30% all'anno.



Quando si dispone di dati sul ROI che coprono mesi e anni, allora si hanno i dati necessari per valutare il rischio di rovina andando avanti.

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

Questi dati di backtesting sono esattamente i dati necessari per calcolare effettivamente qualcosa dai risultati di backtesting che può essere sfruttato per indicare risultati futuri.

Gli Z-score non sono predittivi di risultati futuri perché dipendono dalla serie temporale, l'unico modo in cui uno z-score del 2009 è rilevante per il 2011 è se l'attività dei prezzi di mercato nel 2011 è essenzialmente una ripetizione del 2009.

Lo z-score è una statistica interessante da valutare, ma non aggiunge alcun valore o intuizione su come la vostra strategia si comporterà in futuro. C'è un motivo per cui CTA, money manager, Morningstar, ecc. non tracciano e riportano lo Z-score per i conti gestiti professionalmente. È una metrica di successo senza valore.

Il calcolo del rischio di rovina però, e il drawdown mediano, sono cose che i professionisti fanno, e non solo nel settore del forex.

Inoltre, in termini di broker... usare diversi broker per il backtesting è un po' come lo sforzo dei poveri di disaccoppiare la loro strategia da quella della serie temporale sottostante. Non sai come sarà la serie temporale futura, ma non due serie temporali passate di due broker sono identiche, quindi fare il backtesting su una vasta gamma di serie storiche di dati da fonti diverse e poi analizzare la robustezza della tua strategia è una buona idea, perché questa robustezza indica quanto bene la tua strategia potrebbe funzionare su serie temporali future.

I professionisti eseguono il backtest anche su tassi di mercato storici variabili. In alcuni casi usano metodi Monte Carlo per creare dati di mercato completamente fittizi che sono statisticamente equivalenti ai dati di mercato reali solo per rafforzare il loro backtesting.

Solo uno spunto di riflessione, potreste essere consapevoli di tutto questo e avere le vostre ragioni altrettanto valide per scegliere di perseguire metodi di analisi alternativi.