Chi vuole una strategia? Molto e gratis) - pagina 19

 
orlekino >> :

L'ho riscritto secondo il mio gusto e colore; sembra qualcosa come EoM, ma i picchi sono incomprensibili.

//  Ease of Movement

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
extern int PeriodMA = 13;
extern int VolDivisor = 10000;
double EoMBuffer[];
double TempBuffer[];

int init()
{
   IndicatorBuffers(2);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, EoMBuffer);
   SetIndexBuffer(1, TempBuffer);
   IndicatorShortName("EoM("+ PeriodMA+")");
   SetIndexLabel(0,"EoM("+ PeriodMA+")");
   SetIndexDrawBegin(0, PeriodMA);

   return(0); 
}

int start()
{
   int counted_bars=IndicatorCounted();
   if( counted_bars>0)
      counted_bars--;
   int limit=Bars- counted_bars;
  
   for(int i=0; i< limit-1; i++)
      TempBuffer[ i]= VolDivisor * (High[ i] - Low[ i]) * ((High[ i] + Low[ i]) / 2.0 - (High[ i + 1] - Low[ i + 1]) / 2.0) / MathMax(Volume[ i], 1);

   for( i=0; i< limit; i++)
      EoMBuffer[ i]=iMAOnArray( TempBuffer,Bars, PeriodMA,0,MODE_SMA, i);

   return(0);
}
 
zelda >> :

Interessante, ma secondo l'idea originale di Arms l'indicatore dovrebbe camminare rispetto a 0 e dare segnali quando la linea dello zero e la SMA sono attraversate (che sono applicate all'indicatore, non lisciate immediatamente).

È possibile creare una tale variante? Io stesso non conosco (ancora) abbastanza MQlng, quindi nel mio codice disegna l'ultimo tick dell'indicatore come se salisse all'infinito (come sistemarlo - non lo so), ma nel contesto generale mi va bene.

 
FOREXMASTER >> :

L'inizio non è male, ma in questo programma vorrei vedere:

1. La scelta delle strategie generate, perché la macchina stessa non può scegliere la strategia più appropriata per ciascuno, e ho visto strateghi molto meglio del programma alla fine del salvataggio

Ho un'idea leggermente diversa, cioè la creazione di un deposito di strategie. Cioè lasciare che l'utente generi 1 strategia per strumento e timeframe e il computer la selezioni. Inoltre, scarica anche 20 strategie dal repository. Poi vengono eseguiti 20 test con tutte le strategie scaricate e viene creato un elenco con le loro caratteristiche. Alla strategia con il peggior risultato viene chiesto di essere cancellata dal repository e al suo posto viene aggiunta quella appena generata.


Così, l'utente è lasciato con una lista di 21 strategie, 20 delle quali sono già state testate, da cui può selezionare tutte quelle che gli piacciono e creare i codici sorgente degli EAs in MQL4.


In questo modo si raggiunge un compromesso:


1. Un computer seleziona una strategia tra quelle generate e lo fa non a caso, ma tenendo conto di certe caratteristiche.

2. L'utente sceglie la strategia dalla lista, cioè l'utente ha il diritto di fare una scelta, anche inadeguata, soggettiva ed errata. Sta all'utente decidere se usare un equilibrio appena tracciato dal tester o una strategia collaudata nel tempo.


Ma la cosa più importante è che così facendo, il repository sarà costantemente filtrato e memorizzato solo le strategie che danno i migliori risultati. E gli aggiustamenti casuali saranno eliminati attraverso la selezione naturale. Cioè, non c'è quasi bisogno di test in avanti, perché possiamo semplicemente guardare attraverso la lista e scegliere la strategia che è durata più tempo nel repository.


Inoltre, in questo modo, i risultati saranno ottenuti utilizzando il calcolo distribuito. In altre parole, ogni computer passerà solo circa 1 / 21 parte del suo tempo a generare strategie e una parte molto più piccola del tempo a testare le strategie.


Purtroppo non c'è alcuna possibilità di repository sul mio sito precedente, perché Ucoz CMS non permette di gestire database ed eseguire script PHP. Pertanto, dobbiamo prendere un hosting separato per il sito web di Stock Strategy Builder, sulla base del quale il repository funzionerà.


Ho già fatto una parte significativa del repository e una nuova versione del programma. Ci sono alcuni dettagli, soprattutto per quanto riguarda la qualità delle quotazioni, su cui le strategie saranno generate e testate. Non appena avrò capito tutti questi dettagli, posterò la versione che supporta il repository.

 
Reshetov писал(а) >>

Ho un'idea leggermente diversa, cioè la creazione di un deposito di strategie. ...

... In questo modo, il repository sarebbe costantemente filtrato e manterrebbe solo le strategie che hanno prodotto i migliori risultati. E gli adattamenti casuali saranno eliminati attraverso la selezione naturale. Quindi non c'è praticamente bisogno di test in avanti ...

... Ho dovuto ottenere un hosting separato per il sito Stock Strategy Builder, sulla base del quale il repository funzionerà.

... Ho già fatto una parte significativa del repository e della nuova versione del software. Ci sono ancora alcuni dettagli, soprattutto per quanto riguarda la qualità delle quotazioni su cui le strategie saranno generate e testate. Non appena risolvo questi dettagli, posterò la versione con il supporto del repository.

Grande idea! Buona fortuna con l'implementazione!

Ma non capisco perché i test in avanti non saranno necessari.

 
voltair >> :

Grande idea! Buona fortuna per l'implementazione!

Solo che sono un po' confuso sul perché non saranno richiesti i test in avanti.

Perché solo le strategie collaudate nel tempo rimarranno nel repository, e il resto sarà gradualmente rimosso.


È chiaro che se abbiamo scaricato una strategia, che è stata lì per esempio per mezzo anno, e che mostra profitto secondo i test, allora sarà più affidabile di quella appena generata.


Anche se, naturalmente, si possono eseguire ulteriori test da soli, per sicurezza.

 
Reshetov писал(а) >>

... Se avete scaricato una strategia dal repository, che è stato lì per mezzo anno, e anche oggi mostra un profitto nei test, allora è più affidabile di una strategia appena generata.

Capisco - le strategie non stanno lì, sono costantemente testate e rimangono nel repository solo se sono redditizie.

Ma può succedere che "oggi" (nel mercato attuale) "questa" strategia sia in deficit e domani riconquisti tutto con un profitto significativo.

Quale segmento di mercato sarà utilizzato per testare le strategie?

 
voltair >> :

Capisco che le strategie non sono solo memorizzate lì, ma sono costantemente testate e rimangono nel repository solo se sono redditizie.

Tuttavia, succede che "oggi" (nel mercato attuale) "questa" strategia è in deficit, e domani riconquisterà tutto con un profitto significativo.

In quale segmento di mercato sarà testata la strategia?

Per questo motivo, presumo che la sezione della storia debba essere di almeno 8000 battute. Cioè il programma dovrebbe rifiutare le quotazioni con meno di 8000 barre. Inoltre dovrebbe rifiutare le citazioni obsolete, per esempio, se il file hst non è stato aggiornato nell'ultimo giorno.


Quindi, i dati storici devono essere sufficientemente lunghi, a lungo termine e il più recenti possibile. Pertanto, la strategia non è più una strategia "di un giorno" a questo punto della storia, poiché il risultato finale sarà il totale complessivo per l'intero periodo, piuttosto che i singoli pezzi.

 
Reshetov писал(а) >>

...suppongo che la sezione della storia dovrebbe essere di almeno 8000 battute. ...

Probabilmente per i grandi orizzonti temporali questo va bene. Ma probabilmente non è sufficiente per il minuto o M5. Anche se la domanda è: per quanto tempo saranno conservate le strategie? Ci sono metodi provati (o esperienze) per selezionare il numero di barre da testare? Di solito non cerco meno di 20000 barre. Ma forse è sbagliato...

 
voltair >> :

Probabilmente va bene per grandi orizzonti temporali. Ma probabilmente non abbastanza per minuti o M5. Ma la mia domanda è: per quanto tempo saranno conservate le strategie? Ci sono metodi provati (o esperienze) per selezionare il numero di barre da testare? Di solito non cerco meno di 20000 barre. Ma forse è sbagliato.

Finora ho scelto la media aurea, cioè almeno 8000 barre di dati storici. Di più è possibile, di meno no.

 

Se permettiamo di rimuovere le strategie dal repository in base ai risultati negativi dei test, non è del tutto corretto. Perché ci possono essere casi in cui qualcuno carica quotazioni rotte e che perdono e dopo aver eseguito i test da loro, cancella tutte le strategie redditizie.


È meglio dare ad ogni strategia una valutazione, per esempio da -100 a +100. Al primo inserimento di una strategia nel repository le verrà dato un punteggio zero.


Tutte le strategie saranno ordinate per punteggio in ordine decrescente, cioè dal massimo al minimo. Il software caricherà le 20 migliori strategie con il rating massimo ed eseguirà dei test su di esse. Se il risultato del test è positivo e il rating della strategia è inferiore a 100, allora viene aumentato di 1. Se il risultato è negativo, allora viene diminuito di 1. Se il rating è inferiore a -100, la strategia viene rimossa dal repository.


1. Le strategie più vecchie che sono state testate e provate nel tempo avranno il rating più alto, quindi appariranno più in alto nella TOP-20.

2. Le strategie vecchie di un giorno scenderanno gradualmente nelle valutazioni e al raggiungimento del livello -100 saranno cancellate.

3. Nel caso in cui il programma lavori con citazioni spezzate, sarà solo in grado di cambiare la valutazione di 1, cioè non influenzerà globalmente i risultati della classifica del repository, ma li aggiusterà solo leggermente.