Periodi dinamici per gli indicatori

 
Molti indicatori usano un "periodo" per calcolare i loro valori. Questo è di solito il numero di barre che sono coinvolte nel calcolo del valore successivo. Prendete l'RSI, per esempio. In parole povere, questo indicatore mostra il rapporto tra la lunghezza della "corsa" dei prezzi verso l'alto e la lunghezza simile della corsa dei prezzi verso il basso. Quando i periodi sono molto brevi, dà una grande turbolenza, e quando i periodi sono molto lunghi, dà una debole pulsazione vicino allo zero. Ma il mercato non è sempre uniforme. Precisamente, è sempre irregolare. Dopo il rilascio della notizia cambiando le sessioni di trading e su tempi brevi, per catturare tutti i movimenti il periodo non dovrebbe essere troppo lungo. D'altra parte, durante una lunga tendenza "prolungata" (o piatta) questo periodo può essere esteso per tracciare la tendenza della tendenza, non le fluttuazioni all'interno del suo canale.
Qualcuno ha provato a costruire indicatori che adattano la lunghezza del periodo al cambiamento delle condizioni? Per esempio, "qui", quando un altro indicatore (o alcuni calcoli all'interno dell'indicatore corrente) in un tale intervallo, diminuiamo proporzionalmente la lunghezza del periodo per questa barra, e in tali condizioni (su un'altra barra) - viceversa.
Se sì - quali risultati sono stati ottenuti? E in generale - c'è un senso comune in questa idea (autotuning della lunghezza del periodo)?
 
Se qualcuno sapesse come distinguere un long flat da un long trend, o semplicemente come determinare se un flat è finito e un trend è iniziato, e regolare gli indicatori o adattare il proprio TS di conseguenza.
Questo sarebbe il graal.
 
Provato. Vengono fuori delle varianti molto interessanti. Per esempio, un ibrido di MA e stocastico. Cioè l'angolo della MA influenza i periodi dello stocastico. Ma potete immaginare quante varianti ci sono? I risultati sono incoerenti e non sono arrivato a nulla di sensato.
 
ForexTools >>:
да и вообще - есть ли здравое зерно в этой идее (автоподстройки длинны периода)?

Il grano c'è, ma è necessario un mulino adatto.

L'idea non è nuova, cercate nel codebase e nel forum. Anche negli indicatori forniti con MT5.

// Il nome intelligente "filtri digitali adattivi" significa fondamentalmente la stessa cosa. Più precisamente, generalizza un po' l'idea.

 
ForexTools >>:
Очень много индикаторов используют для рассчета своих значений так называемый "период". Обычно это количество баров которое учавствует в расчете очередного значения. Возьмем например RSI. Если очень грубо - этот индикатор показывает отношение длинны "пробега" цены вверх по отношению к аналогичной длине пробега цены вниз. При очень маленьких периодах получается жуткая болтанка, при очень длинных - нечто слабопульсирующее около нуля. Однако рынок не всегда равномерен. Точнее всегда не равномерен. После выхода новостей смены торговых сессий да еще на коротких таймах, чтобы поймать все движения период нужно выбирать не очень большой. С другой стороны во время длинного "затяжного" тренда (или флэта) этот период вполне разумно увеличить чтобы отслеживать тенденцию самого тренда, а не колебаний внутри его канала.
Кто нибудь пробовал строить индикаторы которые сами адаптируют длину периода под меняющиеся условия? Вот, например "здесь", когда какойто другой индикатор (или какието вычисления внутри текущего индикатора) в таком то диапазоне мы пропорционально сокращаем длинну перода для этого бара, а при таких то условиях (уже на другом баре) - наоборот увеличиваем.
Если да - то какие получались результаты? да и вообще - есть ли здравое зерно в этой идее (автоподстройки длинны периода)?

Ho provato questo attraverso la correlazione con le armoniche di riferimento,

Ma si scopre che a volte i periodi saltano bruscamente per poi tornare a quello iniziale, rovinando così l'intero quadro,

E inoltre questo metodo è molto lungo, se in tempo reale può ancora essere usato nel tester, ma nell'ottimizzazione è un fallimento totale,

Beh, in generale, è un argomento promettente.

 
ForexTools >>:
Очень много индикаторов используют для рассчета своих значений так называемый "период". Обычно это количество баров которое учавствует в расчете очередного значения. Возьмем например RSI. Если очень грубо - этот индикатор показывает отношение длинны "пробега" цены вверх по отношению к аналогичной длине пробега цены вниз. При очень маленьких периодах получается жуткая болтанка, при очень длинных - нечто слабопульсирующее около нуля. Однако рынок не всегда равномерен. Точнее всегда не равномерен. После выхода новостей смены торговых сессий да еще на коротких таймах, чтобы поймать все движения период нужно выбирать не очень большой. С другой стороны во время длинного "затяжного" тренда (или флэта) этот период вполне разумно увеличить чтобы отслеживать тенденцию самого тренда, а не колебаний внутри его канала.
Кто нибудь пробовал строить индикаторы которые сами адаптируют длину периода под меняющиеся условия? Вот, например "здесь", когда какойто другой индикатор (или какието вычисления внутри текущего индикатора) в таком то диапазоне мы пропорционально сокращаем длинну перода для этого бара, а при таких то условиях (уже на другом баре) - наоборот увеличиваем.
Если да - то какие получались результаты? да и вообще - есть ли здравое зерно в этой идее (автоподстройки длинны периода)?

Sì, l'ho fatto. Molte volte e in modi diversi. Il risultato migliora certamente (per le applicazioni standard), ma è ancora - come ho già scritto più volte - un adattamento di una coppia di frasi su un polipo, poiché si considera la BP e non una serie di impulsi. Per esempio, un metodo molto semplice (oltre a quello che ho già presentato nel codice base): se l'ampiezza della barra è inferiore a una soglia specificata, allora il periodo dell'indicatore viene aumentato di 1. Cioè la lunghezza del campione sarà uguale alla lunghezza del segmento in cui si trovano le barre significative (con ampiezza superiore alla soglia). Le condizioni, naturalmente, possono essere inventate (logicamente, ovviamente) in una varietà di modi.

Per esempio, l'RSI per questa selezione elementare sarà così: selezionano le barre con uno swing maggiore di 2 pips (il periodo aumenta fino a raggiungere il min necessario; il periodo è limitato in alto da un dato parametro - qui da 14 a 33 (blu - RSI normale, rosso - con la soglia). La finestra qui sotto mostra come è cambiato il periodo.

Non guardare la finestra 0 - semplicemente non ha cancellato l'indicatore. Non c'entra niente. // ))) anche se l'adattamento del periodo tramite il coefficiente EMA è usato anche lì.

===
Sì. Ma - ripeto - è meglio di niente, ma...)))
A proposito, nel caso non lo sapessi, esiste il cosiddetto DMI (Dynamic Momentum Index), dove anche il periodo RSI cambia, ma a seconda del RMS. Potete vedere la descrizione in Williams e Chand.
===
E il semplice approccio che ho descritto può essere applicato a qualsiasi cosa, dove c'è una lunghezza di campionamento. Se avete bisogno di qualcosa di più complesso, c'è un indicatore di direzione speciale - MsterSlave (vedi nella base).

===========
E qui, dove il limite superiore della lunghezza del periodo è praticamente illimitato. Cioè il periodo di RSI aumenterà fino a raggiungere 14 barre con più di 2 pip di spread. Come potete vedere, come regola, 100 barre per un dato strumento e timeframe sono sufficienti per questo - in altre parole, il periodo non va oltre le 100 barre.
File:
_rsi_tr.mq4  3 kb
 
Svinozavr >>:

но все же это - как уже неодн. писал - примерка фрачной пары на осьминога, т.к....

Invece di un'incertezza (quale periodo scegliere), ne introduciamo un'altra (come scegliere un meccanismo per cambiare la lunghezza del periodo) e pensiamo che eliminerà la prima.
Ma sostituire un'incertezza con un'altra non sembra dare un risultato qualitativo. dannazione, quasi una filosofia, madre di tutte le scienze.
Grazie a tutti quelli che hanno risposto - cercherò di digerire il tutto, pensarci e trovare qualcosa.
 
Ho scritto di filosofia per scherzo, ma poi ho pensato: forse ci sono alcune leggi generali che si applicano al prezzo e ai suoi movimenti, per esempio dalla fisica: il principio di indeterminazione di Heisenberg. Forse è davvero impossibile misurare (e nel nostro caso - prevedere) "due parametri da gruppi diversi" simultaneamente. Cioè possiamo conoscere il tempo esatto e il prezzo ma non possiamo conoscere la direzione del movimento del prezzo, l'impulso (una candela non costruisce la MA). e viceversa, conoscendo la direzione, l'impulso non possiamo sapere quando e dove è il prezzo (la MA non coincide mai con il prezzo attuale).
 

Un indicatore period-adaptive è un trasferimento di una parte del sistema e dell'idea di trading nel suo codice. Cioè il timing non dipende dall'indicatore, ma dall'idea di trading, e l'indicatore è solo una trasformazione del prezzo.
L'AT cerca di identificare i processi che si verificano oggettivamente nel mercato e permette di utilizzarli quando esistono ancora. Cioè il processo iniziale, e gli eventi sul grafico sono l'opportunità di rilevare in quale fase si trova. In questo modo, per l'adattività non è necessario calcolare il valore del periodo, ma i nuovi punti di riferimento. Cioè c'è un certo evento AT (svolta, impulso, ecc., ecc.) - c'è un nuovo punto nel tempo da cui il riferimento è fatto. Infatti è un nuovo t-stop. L'indicatore conta sulla finestra adattiva con un periodo uguale allo spostamento del momento attuale dal caso t di riferimento. Se viene identificato un nuovo dato, il periodo viene calcolato a partire da esso. Ma forse la variante è utile, quando alla comparsa di un nuovo evento TA il periodo dell'indicatore diventa un valore predefinito, che in realtà significa la cattura del prezzo di formazione di questo evento. Oppure per calcolare il periodo dell'indicatore usare il tempo tra gli eventi TA più vicini

 

Ho deciso di unirmi alla conversazione tra gli scienziati e contribuire con la mia ricetta di cucina. Negli ultimi due anni ho realizzato quasi tutti gli indicatori con parametri che cambiano in modo adattivo. Le soluzioni primitive non funzionano sul mercato, sono arrivato a questa conclusione molto tempo fa, e ho coltivato l'idea di fare un sistema completamente adattivo, ma non ho ancora il tempo di farlo, faccio frammenti di adattamento separati negli indicatori. Ecco un esempio di un frammento dell'ultimo indicatore. In generale, l'indicatore è composto da diversi blocchi funzionali, ogni blocco forma i suoi segnali target, in tutto ci sono 24 segnali, citerò solo un blocco che forma i canali. Non ho ancora fatto l'autotuning per il cambio di timeframes e simboli, quindi ogni variante deve essere regolata individualmente.

//=====================================================================================================================================
extern int PIB= 33;
extern int PIS= 37;
extern double PMB= 3.98;
extern double PMS= 3.98;
//====================================================================================================================================

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init() {

        PPB=NormalizeDouble(PIB*Point,Digits);
        PPS=NormalizeDouble(PIS*Point,Digits);
        PMB=NormalizeDouble(PMB*Point,Digits);
        PMS=NormalizeDouble(PMS*Point,Digits);
           }
funzione di avvio esperto :

     PR=NormalizeDouble((High[1]-Low[1])+(High[2]-Low[2])+(High[3]-Low[3])+(High[4]-Low[4])+(High[5]-Low[5])+(High[6]-Low[6])+(High[7]-Low[7]),Digits);
     PRB=NormalizeDouble(PMB/PR,Digits); 
     PRS=NormalizeDouble(PMS/PR,Digits); 
      
      BTH[0]=High[0]-PR/17-PRB/2;
  if ((MathAbs(BTH[0]-BTH[1])<=PPB))
      BTH[0]=BTH[1];
      
      BTC[0]=Close[0]-PR/10;
  if ((MathAbs(BTC[0]-BTC[1])<=PPB))
      BTC[0]=BTC[1];
      
      BTC[0]=0.4*BTC[0]+0.6*BTC[1];
      
      BTL[0]=Low[0]-PR/17+PRB/2;
  if ((MathAbs(BTL[0]-BTL[1])<=PPB))
      BTL[0]=BTL[1];
  
      STH[0]=High[0]+PR/17-PRS/2;
  if ((MathAbs(STH[0]-STH[1])<=PPS))
      STH[0]=STH[1];
      
      STC[0]=Close[0]+PR/10;
  if ((MathAbs(STC[0]-STC[1])<=PPS))
      STC[0]=STC[1];
      
      STC[0]=0.4*STC[0]+0.6*STC[1];
      
      STL[0]=Low[0]+PR/17+PRS/2;
  if ((MathAbs(STL[0]-STL[1])<=PPS))
      STL[0]=STL[1];
Come potete vedere, i parametri dei canali sono regolati in modo adattivo a seconda degli indicatori dinamici medi delle ultime barre.
Il risultato è la seguente immagine:


VTN - blu, BTL - giallo, BTL - rosa, STH - blu, STC - rosso, STL - viola;
Naturalmente, questo è un approccio semplificato, per un adattamento più accurato alle mutevoli fasi del mercato abbiamo bisogno di una soluzione più complessa, ma tuttavia questa variante migliora significativamente le caratteristiche dell'indicatore.
 
Il mio ultimo sviluppo )))