Clic
Forumer storico
Su suggerimento di f4f posto qui la mia richiesta augurandomi che oltre a f4f possano di nuovo, nello spirito di collaborazione che ha contraddistinto questo 3d ,dare tutti il proprio contributo Meursault (al quale ho anche scritto congratulandomi e chiedendogli se fosse ancora attivo questo 3d e avanzandogli la richiesta che di seguito vado ad illustrare) e tutti gli altri che volessero.
L’indicatore di cui sto parlando l’ho preso da un link postato da venere qualche giorno fa sul 3d “William's %R come indicatore ciclico”.Il link è il seguente:
Multicharts: la discussione - Pagina 2 - Forum di Finanzaonline.com
Si tratta di un indicatore ciclico derivante dagli studi di Garrett che cerca di unire prezzi e volumi al fine di determinare il futuro andamento dei prezzi.La formula postata da venere è la seguente:
Input:avgvol(64),avgdiavg(56),DispDiv(4),Modo(1);
vars:upward(0),downward(0),upvol(0),downvol(0),totmovimento(0),totvolume(0),idcvol(0),closeward(0);
upward=(h-c[1])+(c-l);
VALUE4=AVERAGE(upward,avgdiavg);
downward=h-l;
VALUE5=AVERAGE(downward,avgdiavg);
closeward=c-c[1];
VALUE6=AVERAGE(closeward,avgdiavg);
totvolume=(v);
VALUE7=AVERAGE(V,avgvol);
value8=value4+value5;
totmovimento=upward+downward+closeward;
upvol=VALUE7/value8 *VALUE4;
downvol=VALUE7/value8 *VALUE5;
value1=average(upvol,avgvol);
value2=average(downvol,avgvol);
if value1>value2 then begin value3=1;end;
if value1<value2 then begin value3=-1;end;
idcvol=idcvol[1]+value3;
if modo=1 then begin
plot1[avgvol/DispDiv](idcvol,"Upvol");
plot2[avgvol/DispDiv](average(idcvol,avgdiavg/4),"DOWNvol");end;
if modo=2 then begin
plot1[avgvol/DispDiv](value1,"Upvol");
plot2[avgvol/DispDiv](value2,"DOWNvol");end;
Devi definire queste variabili:
avgvol=64
avgdiavg=56
DispDiv =4
Modo=1
Di default assegna il valore a destra del segno uguale.
Questo è il codice in PRT
upward=(High-Close[1])+(Close-Low)
VALUE4=AVERAGE[avgdiavg](upward)
downward=High-Low
VALUE5=AVERAGE[avgdiavg](downward)
//closeward=Close-Close[1]
//VALUE6=AVERAGE[avgdiavg](closeward)
//totvolume=(v)
VALUE7=AVERAGE(Volume)[avgvol]
value8=value4+value5
//totmovimento=upward+downward+closeward
upvol=VALUE7/value8 *VALUE4
downvol=VALUE7/value8 *VALUE5
value1=average[avgvol](upvol)
value2=average[avgvol](downvol)
if value1>value2 then
value3=1
ENDIF
if value1<value2 then
value3=-1
ENDIF
idcvol=idcvol[1]+value3
Graf1 = idcvol[avgvol/DispDiv]
Graf = Average(idcvol)[avgdiavg/4]
Graf2 = Graf[avgvol/DispDiv]
Graf4 = value1[avgvol/DispDiv]
Graf4 = value2[avgvol/DispDiv]
Return Graf1 as "UPVOL", Graf2 as "DOWNVOL", Graf3 as "UPVOL", Graf4 as "DOWNVOL"
Nel codice originale l’utente decide se disegnare le variabili Graf1 e Graf2 o Graf3 e Graf4 in base al valore assunto da Modo.
In particolare se Modo assume valore 1 si disegnano Graf1 e Graf2, invece se Modo assume valore 2 si disegnano Graf3 e Graf4. Con PRT credo non sia possibile, pertanto nel codice che ho scritto vengono disegnate tutte e quattro.
PRT riscontra dei problemi in quanto alcune variabili dichiarate non sono utilizzate nel codice. Pertanto ho eliminato le variabili: VALUE6, closeward, totvolume e totmovimento ma vengono disegnate solo 2 curve. Non riesco a fare di meglio.
Ultima modifica: