Strumenti non in ritardo - pagina 48

 
zilliq:
Anche noi usiamo i radianti

Può essere una spiegazione: Nel codice MT4 moltiplichiamo alfa con il prezzo

Suppongo che questo sia il prezzo, i périods prima, no ?

E così abbiamo bisogno di aggiungere, per esempio con una len di 5

alfa*close[4]+alfa*close[3]+alfa*close[2]+alfa*close[1] and alfa*close

oppure

alfa[4]*chiudi[4]+alfa[3]*chiudi[3]+alfa[2]*chiudi[2]+alfa[1]*chiudi[1] e alfa*chiudi?

Ed è strano, perché con una lunghezza di 1 la len è uguale a 4 (4*1+0) e quindi la nonlagma non può essere uguale a close perché aggiungiamo l'alfa*prezzo degli ultimi 4 periodi

Grazie per i vostri prossimi commenti

Zilliq

Uso il tuo codice, ma per capire meglio uso il codice più semplice del NonlagMav3

doppio pi = 3.1415926535;

doppio Coeff = 3*pi;

int Fase = Lunghezza-1;

doppio Len = Lunghezza*Ciclo + Fase;

if ( counted_bars > 0 ) limit=Bars-counted_bars;

se ( counted_bars < 0 ) return(0);

se ( counted_bars ==0 ) limit=Bars-Len-1;

for(shift=limit;shift>=0;shift--)

{

Weight=0; Sum=0; t=0;

for (i=0;i<=Len-1;i++)

{

g = 1.0/(Coeff*t+1);

se (t <= 0,5 ) g = 1;

beta = MathCos(pi*t);

alfa = g * beta;

prezzo = iMA(NULL,0,1,0,MODE_SMA,Prezzo,shift+i);

Somma += alfa*prezzo;

Peso += alfa;

if ( t < 1 ) t += 1.0/(Fase-1);

else if ( t < Len-1 ) t += (2*Ciclo-1)/(Ciclo*Lunghezza-1);

}

se (Peso > 0) MABuffer[shift] = Somma/Peso;

Dovresti usare la forma alfa[4]*chiusura[4]+alfa[3]*chiusura[3]+alfa[2]*chiusura[2]+alfa[1]*chiusura[1] e alfa*chiusura (alfa è diversa per ogni elemento)

Perché non fai una versione semplice che visualizza i valori di alfa e li confronta con i valori di alfa in metatrader 4?

 

Grazie Mladen,

Proverò questo

Infatti su MT4, ho il prezzo cfd del mio broker (Activtrade), e su Prorealtime questo è un altro flusso in Cash, quindi ci sono alcune grandi differenze

Grazie mille e ci vediamo dopo

Zilliq

 

Beh, ho provato molte cose diverse ma non funziona e non so assolutamente perché

Il mio codice sembra essere ok:

****************************

peso=0

somma=0

per i=0 a Len

se i<=Fase-1 allora

t = 1.0*i/(Fase-1)

altrimenti

t = 1.0 + (i-Phase+1)*(2.0*Cyclee-1.0)/(Cyclee*Length-1.0)

endif

beta = Cos(pi*t)

g = 1,0/(Coeff*t+1)

se t <= 0,5 allora

g = 1

endif

alfa = g * beta

somma=somma+alfa*chiusura

peso=peso+alfa

successivo

nonlagma=somma/peso

***************************

E simile al tuo, ma come vedi nel mio grafico, il nonlagma è molto lontano dal close

Hai un'idea del perché, e hai il codice NonlagMa in linguaggio Easy (spesso più facile da trascrivere)??

Grazie mille Mladen, sono stanco...

Vedi U

Zilliq

File:
 
zilliq:
Beh, ho provato molte cose diverse ma non funziona e non so assolutamente perché

Il mio codice sembra essere ok:

****************************

peso=0

somma=0

per i=0 a Len

se i<=Fase-1 allora

t = 1.0*i/(Fase-1)

altrimenti

t = 1.0 + (i-Phase+1)*(2.0*Cyclee-1.0)/(Cyclee*Length-1.0)

endif

beta = Cos(pi*t)

g = 1,0/(Coeff*t+1)

se t <= 0,5 allora

g = 1

endif

alfa = g * beta

somma=somma+alfa*chiusura

peso=peso+alfa

successivo

nonlagma=somma/peso

***************************

E simile al tuo, ma come vedi nel mio grafico, il nonlagma è molto lontano dal close

Hai un'idea del perché, e hai il codice NonlagMa in linguaggio Easy (spesso più facile da trascrivere)??

Grazie mille Mladen, sono stanco...

Vedi U

Zilliq

Ecco una versione che calcola solo le alfa: _nonlag_ma_alphas.mq4

Fate qualcosa di simile in protrader. Una volta che sono uguali, dovrebbe essere facile rendere uguale anche la ma non lag. L'esempio è per il periodo 50

File:
 

Grazie mille Mladen,

Lo testerò con questo primo passo

Vedi U

Zilliq

 

Bene,

Primo: buona notizia che ho lo stesso EUR/USD come te, perché sarà più facile da confrontare

Ma in realtà non ci riesco

Il tuo codice per calcolare l'alfa è

double Cycle = 4.0;

doppio Coeff = 3.0*Pi;

int Phase = NlmPeriod-1;

int len = NlmPeriod*4 + Phase;

if (ArraySize(alphas) != len) ArrayResize(alphas,len);

for (int k=0; k<len; k++)

{

se (k<=Fase-1)

doppio t = 1.0 * k/(Fase-1);

altrimenti t = 1.0 + (k-Fase+1)*(2.0*Ciclo-1.0)/(Ciclo*NlmPeriodo-1.0);

doppio beta = MathCos(Pi*t);

doppio g = 1.0/(Coeff*t+1); se (t <= 0.5 ) g = 1;

alfa[k] = g * beta;

}

for(int i=len-1; i>=0; i--) nlm = alphas;

Quindi, se ho ben capito:

1/ Primo sted: Calcola tutti gli alfa da 0 a len-1

Questo è:

alphas[k] = g * beta;

2/ Secondo passo, aggiunge tutti gli alfa da 0 a len-1

Questo è

for(int i=len-1; i>=0; i--) nlm = alphas;

Il problema è che ho sempre la stessa alfa sul mio grafico ? Come si può avere un'alfa diversa su ogni candela dato che k, t e così via sono sempre gli stessi su ogni candela e non dipendono dalla chiusura?

Il codice che ho su Prorealtime sembra essere lo stesso:

Pi=3.14159265358979323846264338327950288

Cyclee = 4.0

Coeff = 3.0*Pi

Fase = NlmPeriodo-1

len = NlmPeriodo*4 + Fase

alph=0

per k=0 a len-1

t=0

se (k<=Fase-1) allora

t = 1.0 * k/(Fase-1)

altrimenti

t = 1.0 + (k-Fase+1)*(2.0*Ciclo-1.0)/(Ciclo*NlmPeriodo-1.0)

endif

beta = Cos(Pi*t)

g = 1.0/(Coeff*t+1)

se (t <= 0,5 ) allora

g = 1

endif

alphas= g * beta

alph=alph+alphas

successivo

 
zilliq:
Bene,

Primo: buona notizia che ho lo stesso EUR/USD come te, perché sarà più facile da confrontare

Ma in realtà non ci riesco

Il tuo codice per calcolare l'alfa è

double Cycle = 4.0;

doppio Coeff = 3.0*Pi;

int Phase = NlmPeriod-1;

int len = NlmPeriod*4 + Phase;

if (ArraySize(alphas) != len) ArrayResize(alphas,len);

for (int k=0; k<len; k++)

{

se (k<=Fase-1)

doppio t = 1.0 * k/(Fase-1);

altrimenti t = 1.0 + (k-Fase+1)*(2.0*Ciclo-1.0)/(Ciclo*NlmPeriodo-1.0);

doppio beta = MathCos(Pi*t);

doppio g = 1.0/(Coeff*t+1); se (t <= 0.5 ) g = 1;

alfa[k] = g * beta;

}

for(int i=len-1; i>=0; i--) nlm = alphas;

Quindi, se ho ben capito:

1/ Primo sted: Calcola tutti gli alfa da 0 a len-1

Questo è:

alphas[k] = g * beta;

2/ Secondo passo, aggiunge tutti gli alfa da 0 a len-1

Questo è

for(int i=len-1; i>=0; i--) nlm = alphas;

Il problema è che ho sempre la stessa alfa sul mio grafico ? Come si può avere un'alfa diversa su ogni candela dato che k, t e così via sono sempre gli stessi su ogni candela e non dipendono dalla chiusura?

Il codice che ho su Prorealtime sembra essere lo stesso:

Pi=3.14159265358979323846264338327950288

Cyclee = 4.0

Coeff = 3.0*Pi

Fase = NlmPeriodo-1

len = NlmPeriodo*4 + Fase

alph=0

per k=0 a len-1

t=0

se (k<=Fase-1) allora

t = 1.0 * k/(Fase-1)

altrimenti

t = 1.0 + (k-Fase+1)*(2.0*Ciclo-1.0)/(Ciclo*NlmPeriodo-1.0)

endif

beta = Cos(Pi*t)

g = 1.0/(Coeff*t+1)

se (t <= 0,5 ) allora

g = 1

endif

alphas= g * beta

alph=alph+alphas

prossimo

Zilliq

Come ho detto: c'è un array di aplha

Quello che ho visualizzato lì è un array di alfa - ignora la componente temporale. Quelli sono i valori di ogni singolo valore alfa nell'array di alfa, Quelli sono i pesi che vengono applicati ad ogni elemento del prezzo che si usa per il calcolo

 

Probabilmente non capisco come chiami l'array di alphas (capisco alphas differenti su ogni candela), mi dispiace

Proverò un'altra volta...

 
zilliq:

Probabilmente non capisco come chiami l'array di alphas (capisco alphas differenti su ogni candela), scusa

Proverò ancora una volta...

Zilliq

Coefficiente (alfa) per il prezzo 0 == 1

Coefficiente (alfa) per il prezzo 1 == 0.9nnnnn

e così via (come viene visualizzato dall'indicatore non lag ma alphas) e tutto ciò utilizzato per i prezzi len per ottenere il valore attuale non lag ma

 

Ok, penso di aver capito le tue spiegazioni (sei grande ) e ho fatto diversi test su MT4 con il tuo codice

l'alfa che come valore diverso da 1 a len-1 ponderano il prezzo e alla fine dividiamo per la somma degli alfa

Ecco perché il primo valore di alfa a destra è sempre 1 ed ecco perché anche se cambiamo il valore di nlm l'aspetto degli alfa sul grafico è sempre lo stesso tipo di serpente)

Bene, so che devo cercare come posso fare questo su Prorealtime...

Motivazione: