Programmazione Visual Trader AROON su VT (2 lettori)

BOVARO

Nuovo forumer
Su VT volevo mettere l' AROON OSCILLATORE . Sotto c'è la formula però non riesco a farla pertire.
Qualcuno puo gentilmente mettermi aposto il tutto farlo funzionare e lanciandolo che mi mostri il suo andamneto sul graficoo ?

Grazie mille

AROON UP

100 * ( 14 - ( ( If (Ref (H ,-1) = HHV(H ,14 ) ,1 ,If (Ref (H ,-2 ) = HHV (H ,14 ) ,2 ,If (Ref (H ,- 3 ) =
HHV(H ,14 ) ,3, If (Ref (H ,-4 ) = HHV(H ,14 ) ,4 ,If (Ref (H ,-5 ) = HHV(H ,14 ) ,5 ,If (Ref (H ,-6 ) =
HHV(H ,14 ) ,6 ,If (Ref (H,-7 ) = HHV(H ,14 ) ,7 ,If (Ref (H ,-8 ) = HHV(H ,14) ,8 , If (Ref (H ,-9 ) =
HHV(H ,14) ,9 ,If (Ref (H ,-10 ) = HHV(H ,14 ) ,10 ,If (Ref (H ,-11 ) = HHV(H ,14) ,11 ,If (Ref (H ,-12 ) =
HHV(H ,14) ,12 ,If (Ref(H ,-13) = HHV(H ,14 ) ,13 ,If (Ref (H ,-14 ) = HHV(H ,14 ) ,14 ,0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) / 14;


AROON DOWN

100* (14 - (( If (Ref (L,-1) = LLV( L ,14 ) ,1 , If ( Ref (L ,-2 ) = LLV ( L,14 ) ,2 , If ( Ref (L ,- 3 ) =
LLV( L,14 ) ,3 ,If ( Ref (L ,-4 ) = LLV ( L ,14 ) ,4 ,If (Ref ( L ,-5 ) = LLV ( L ,14 ) ,5 ,If (Ref (L ,-6 ) =
LLV( L,14 ) ,6 ,If ( Ref (L ,-7 ) = LLV ( L,14 ) ,7 ,If (Ref ( L ,-8 ) = LLV ( L ,14 ) ,8 ,If (Ref( L ,-9 ) =
LLV( L,14 ) ,9 ,If ( Ref (L,-10) = LLV (L,14 ) ,10 ,If (Ref (L ,-11) = LLV( L,14 ) ,11 ,If (Ref(L,-12 ) =
LLV(L ,14) ,12,If ( Ref (L,-13) = LLV (L ,14 ) ,13 ,If ( Ref ( L,-14) = LLV( L,14 ) ,14 ,0) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) / 14;
 

robom1

Forumer storico
Ciao, prova a vedere se l'indicatore piu' o meno corrisponde con il grafico:

1257786457aaronciclo.gif
 

BOVARO

Nuovo forumer
aroon ok

Ho scritto anche un messaggio privato ma non ho ricevuto alcuna risposta.
Il numero di periodi è modificabile e per default è 14:

Codice:
{******************************************************************************
Aaron
******************************************************************************}
Var: indice, maxperiodo(0), minperiodo, aaron_up, aaron_dn, indzona1;
//Numero periodi di default con variazione
Input: numperiodi(14);
indzona1=CreateViewport(200, true, True);
//******************************************************************************
//Calcolo per ogni barra il massimo degli high e il minimo dei low
maxperiodo = hhv(H, numperiodi);
minperiodo = llv(L, numperiodi);
//******************************************************************************
//Calcolo l'aaron up
BeginFor(indice, 0, numperiodi);
         if H[indice] = maxperiodo
         then aaron_up = 100 * (numperiodi - indice) / numperiodi;
         endif;
endFor;
//******************************************************************************
//Calcolo l'aaron dn
BeginFor(indice, 0, numperiodi);
         if  L[indice] = minperiodo
         then aaron_dn = 100 * (numperiodi - indice) / numperiodi;
         endif;
endFor;
//******************************************************************************
//Plotto il risultato
PlotChart(aaron_up, indzona1, green, solid, 2);
PlotChart(aaron_dn, indzona1, red, solid, 2);



Grazie ROBOM1 funziona ( ho fatto anche una piccola modifica facendo up-dn per trovare l'oscillatore
 

BOVARO

Nuovo forumer
Ho scritto anche un messaggio privato ma non ho ricevuto alcuna risposta.
Il numero di periodi è modificabile e per default è 14:

Codice:
{******************************************************************************
Aaron
******************************************************************************}
Var: indice, maxperiodo(0), minperiodo, aaron_up, aaron_dn, indzona1;
//Numero periodi di default con variazione
Input: numperiodi(14);
indzona1=CreateViewport(200, true, True);
//******************************************************************************
//Calcolo per ogni barra il massimo degli high e il minimo dei low
maxperiodo = hhv(H, numperiodi);
minperiodo = llv(L, numperiodi);
//******************************************************************************
//Calcolo l'aaron up
BeginFor(indice, 0, numperiodi);
         if H[indice] = maxperiodo
         then aaron_up = 100 * (numperiodi - indice) / numperiodi;
         endif;
endFor;
//******************************************************************************
//Calcolo l'aaron dn
BeginFor(indice, 0, numperiodi);
         if  L[indice] = minperiodo
         then aaron_dn = 100 * (numperiodi - indice) / numperiodi;
         endif;
endFor;
//******************************************************************************
//Plotto il risultato
PlotChart(aaron_up, indzona1, green, solid, 2);
PlotChart(aaron_dn, indzona1, red, solid, 2);


Grazie ROBOM1 ho creato l'oscillatore facendo aaron_up - aaron_dn e fin qui tutto ok
Ora voglio avere averil valore piu alto degli ultimi 10 periodi ma con queste modifiche non funziona, potresti per favore come si crea l'aroon con l'istruzione " OP " così probabilmente funziona. GRAZIE

AROON = OP(aaron_up, aaron_dn, SUB);

AROH = HHV(AROON,10);
AROL = LLV(AROON,10);
 

robom1

Forumer storico
Su VT volevo mettere l' AROON OSCILLATORE . Sotto c'è la formula però non riesco a farla pertire.
Qualcuno puo gentilmente mettermi aposto il tutto farlo funzionare e lanciandolo che mi mostri il suo andamneto sul graficoo ?

Grazie mille

AROON UP

100 * ( 14 - ( ( If (Ref (H ,-1) = HHV(H ,14 ) ,1 ,If (Ref (H ,-2 ) = HHV (H ,14 ) ,2 ,If (Ref (H ,- 3 ) =
HHV(H ,14 ) ,3, If (Ref (H ,-4 ) = HHV(H ,14 ) ,4 ,If (Ref (H ,-5 ) = HHV(H ,14 ) ,5 ,If (Ref (H ,-6 ) =
HHV(H ,14 ) ,6 ,If (Ref (H,-7 ) = HHV(H ,14 ) ,7 ,If (Ref (H ,-8 ) = HHV(H ,14) ,8 , If (Ref (H ,-9 ) =
HHV(H ,14) ,9 ,If (Ref (H ,-10 ) = HHV(H ,14 ) ,10 ,If (Ref (H ,-11 ) = HHV(H ,14) ,11 ,If (Ref (H ,-12 ) =
HHV(H ,14) ,12 ,If (Ref(H ,-13) = HHV(H ,14 ) ,13 ,If (Ref (H ,-14 ) = HHV(H ,14 ) ,14 ,0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) / 14;


AROON DOWN

100* (14 - (( If (Ref (L,-1) = LLV( L ,14 ) ,1 , If ( Ref (L ,-2 ) = LLV ( L,14 ) ,2 , If ( Ref (L ,- 3 ) =
LLV( L,14 ) ,3 ,If ( Ref (L ,-4 ) = LLV ( L ,14 ) ,4 ,If (Ref ( L ,-5 ) = LLV ( L ,14 ) ,5 ,If (Ref (L ,-6 ) =
LLV( L,14 ) ,6 ,If ( Ref (L ,-7 ) = LLV ( L,14 ) ,7 ,If (Ref ( L ,-8 ) = LLV ( L ,14 ) ,8 ,If (Ref( L ,-9 ) =
LLV( L,14 ) ,9 ,If ( Ref (L,-10) = LLV (L,14 ) ,10 ,If (Ref (L ,-11) = LLV( L,14 ) ,11 ,If (Ref(L,-12 ) =
LLV(L ,14) ,12,If ( Ref (L,-13) = LLV (L ,14 ) ,13 ,If ( Ref ( L,-14) = LLV( L,14 ) ,14 ,0) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) / 14;





Ciao, avevo cominciato a fare le modifiche solo che sono emerse alcune anomalie da sistemare, ovvero:

1.Da come si vede sopra in realtà le barre da esaminare sono 15 e non 14; mi spiego meglio: il massimo e/o minimo di n barre (calcolato con hhv e llv) contiene già la barra in corso; detto questo se il massimo è appunto la barra in corso il risultato sarà 100 in quanto il numero delle barre da sottrarre in questo caso 14 è 0, quindi la formula sarebbe

100 x (14 - 0 barre perche barra in corso ) / 14 = 100

ma se io faccio cosi l'indicatore aroon up e down non sarà mai pari a zero in quanto io lo trovo sempre a 14 periodi.
Infatti sotto avevo visto che non era mai zero ma figurava come minimo sempre 7 che corrisponde alla 14esima posizione.

Quindi in sostanza qualora voglia determinare l'aroon corretto devo calcolarlo su n periodi + 1 se voglio utilizzare l'hhv e l'llv.

Inoltre dalla verifica è emerso che se io faccio partire il ciclo da 0, quindi dal piu' recente al piu vecchio potrebbe succedere, in alcuni casi (vedi laterale giugno) che se per caso ho un massimo uguale ad un massimo passato l'indice aaron up diminiusce anziche aumentare perche va a prendere, proprio per effetto del conteggio il piu' vecchio perche trattato successivamente a quello piu' recente e gli va a sostituire il valore.
 

robom1

Forumer storico
Questa versione sostituisce la precedente di cui al punto 4:

Codice:
{******************************************************************************
Indicatore AROON di Chande
*******************************************************************************}
Var: indice, maxperiodo, minperiodo, aroon_up, aroon_dn, indzona1, check_max, check_min;
Input: numperiodi(14);
indzona1=CreateViewport(200, true, True);
//******************************************************************************
//CALCOLO DEI MAX E DEI MIN RELATIVI AL PERIODO SELEZIONATO
//Il numero dei periodi viene incrementato di 1 in quanto la barra attuale ha
//appunto valore 0 nel conteggio del calcolo dell'aroon-up e aroon-down.
maxperiodo = hhv(H, numperiodi+1);
minperiodo = llv(L, numperiodi+1);
//******************************************************************************
//CALCOLO AROON-UP E AROON-DOWN
//Il punteggio di entrambi gli indicatori puo' andare da 0 a 100
//
//Esempio modalità di calcolo dell'aroon-up su 14 periodi
//
//il valore 100 di aroon_up corrisponderà al max realizzato sulla barra corrente
//(barra zero) e la formula quindi corrisponderà a = 100 * (14 - 0) / 14 = 100
//
//il valore 0   di aroon_up corrisponderà al max realizzato sulla quattordic.
//barra SUCCESSIVA alla barra corrente e la formula quindi corrisponderà a =
//100 * (14 - 14) / 14 = 0
//
//
//*****************************************************************************
//Calcolo dell'aroon up
check_max = 0;
//Ogni volta che entro nel ciclo inizializzo a zero la variabile check_max
//Nel caso in cui si trovano quindi due valori all'interno dei 14+1 rilevati
//i cui massimi si eguagliano, l'aroon_up prenderà il valore piu' recente dei
//due max e non il piu' vecchio
BeginFor(indice, 0, numperiodi);
         if H[indice] = maxperiodo and check_max = 0
         then aroon_up = 100 * ((numperiodi - indice) / numperiodi);
         check_max = 1;
//poiche per forza uno dei 14+1 valori deve essere compreso all'interno del ciclo
//quando trovo il primo valore corrispondente al massimo non faccio piu' entrare
//nessun altro dentro il ciclo mettendo check_max uguale a 1
         endif;
endFor;
//******************************************************************************
//Calcolo l'aaron dn
check_min = 0;
//Vedi stesse considerazioni effettuate per il check_max
BeginFor(indice, 0, numperiodi);
         if  L[indice] = minperiodo and check_min = 0
         then aroon_dn = 100 * (numperiodi - indice) / numperiodi;
         check_min = 1;
         endif;
endFor;
//******************************************************************************
//Plotto il risultato
PlotChart(aroon_up,   indzona1, red,  solid, 2);
PlotChart(aroon_dn,   indzona1, blue, solid, 2);
PlotChart(maxperiodo,        0, red,  solid, 2);
PlotChart(minperiodo,        0, blue, solid, 2);
 

Users who are viewing this thread

Alto