Programmazione Prorealtime Prorealtime:formule, indicatori, oscillatori, tsi ... (2 lettori)

meursault

lo straniero
Ecco che mi sono gia' pentito della mia poca gentilezza nei confronti di Ronca :rolleyes: ... allora ... il codice del di hk_lisse non te lo riporto visto che l'hai gia' trovato e non l'hai capito, ti rimetto questo che era gia' stato postato qui
http://www.investireoggi.it/forum/1311951-post103.html
e ti invito a leggere la discussione che l'ha preceduto.

Riporto il codice e le spiegazioni
Codice:
if barindex < start then
	ww = undefined
else
	pri=medianprice
	p=p+1
	if barindex = start then
		p=1
	endif
	
	sum=summation[p](volume)
	sump=summation[p](pri*volume)
	ww=sump/sum
	
	tot = (1/sum)*(summation[p](SQUARE(pri)*volume)) - SQUARE(ww)
	
	eca =SQRT(tot)
	
endif

return ww,ww+eca,ww-eca,ww+2*eca,ww-2*eca,ww+3*eca,ww-3*eca

Il codice usa una sola variabile, start, intera >=0, che indica il numero di barra del grafico da cui comincia ad essere tracciato il pentagramma. Se non sai come si fanno ad inserire le variabili chiedi.

1275041607penta.png


Ora, tu hai un grafico davanti, non importa il time frame, non importa da quando parte il grafico, e vuoi far partire il pentagramma da una certa barra ... come fai a sapere che numero di barra e' quella? Ti aiuti con un indicatore di supporto che puoi chiamare contabarre o barindex o come ti pare, e' quello che si vede nella finestrella in basso sul grafico. Tale indicatore e' costituito da una sola riga di codice
return barindex

Quindi, se vuoi far partire il pentagramma da una certa barra, ci vai sopra con il mirino, vedi il valore di barindex per quella barra, e riporti tale valore nella variabile start.

Ultima cosa: per grafici molto estesi, cioe' con un gran numero di barre, e valori di start molto piccoli, il calcolo puo' impiegare alcuni minuti.

Spero di essere stato chiaro altrimenti chiedi. Poi pero' basta con sto pentagramma ...
 

fracicone

Nuovo forumer
Nuova richiesta

Allora ... scusa la franchezza eh, ma prima di tutto avresti dovuto leggere con attenzione la risposta di Tetsuo



Qua nel 3d e' stato fatto un grosso lavoro per VWAP in risposta alle richieste di Casguzze e Fracicone arrivando ad un codice che va bene per ogni time frame aggirando dei problemi tecnici ... ti assicuro che un po' di tempo e fatica mi e' costata quel codice, e a me del VWAP non me ne puo' fregare di meno ... quindi perlomeno fai il favore di leggere indietro nel 3D per trovare quel codice ok? Questa e' la tua parte di lavoro, non mi sembra esagerato ;)

PS: scusate, stanotte ho dormito poco :D ronca, se poi proprio non ce la fai a trovarlo o hai bisogno di altre delucidazioni siamo qua ...
Ciao grande Meur :),
ti ringrazio ancora una volta x aver reso funzionante il Pentagramma in qualsiasi timeframe, pur non fregandotene nulla dell'argomento.
Approfitto ancora una volta della tua disponibilità e competenza per chiederti se sia possibile costruire un indicatore che, su barre a volume costante, mi indichi il tempo necessario x il completamento di ciascuna barra.
 

tetsuo

Guest
Si hai ragione ho postato troppo tutto insieme, comunque fai quel che puoi (se devi dare una preferenza dalla al DPO di Di Napoli.
Il DPO Di Napoli diffrisce parechio da quello di PRT, non so bene dirti in cosa, perchè la formula di PRT non la conosco, ma ti dico 2 cose semplici che te lo fanno capire:
DPO PRT = non ti dà il valoe aggiornato ma valori passati e per gli ultimi valori ti fa una bella riga orizzontale che non serve a niente.
DPO Di Napoli = ti posso mettere la formula artigianale che ho fatto io su PRT per darti un'idea della costruzione come da suo testo, ma sarebbe bello poterla plottare come hanno fatto in Metatrader perchè la mia fa pena (se non ti è chiaro qualcosa dimmelo).

Allora il week end è arrivato e quindi è ora di fare qualche cosina .

Innanzitutto mi chiarisco alcuni concetti così almeno so di cosa parliamo.

La formula classica per il Detrended price oscillator è:

DPO=Price-(MA a n periodi centrata di (n/2+1) periodi)

ovvero una differenza tra il prezzo e la sua media mobile centrata di un periodo pari alla metà+1 del periodo di calcolo

Prima conclusione sempre di cicli stiamo a parlare ;)!!!

questa formula è anche quella che si trova nel codice per metatrader che hai postato! Ti riporto le parti del codice che riguardano il calcolo del DPO:

1)La dichiarazione delle variabili
Codice:
//---- input parameters
extern string    ____0____   = "Period of average";
extern int       DPOPeriod   = 7;
extern string    ____1____   = "Type of average: SMA - 0, EMA - 1, SMMA -  2, LWMA - 3";
extern int       MaType      = 0;
extern string    ____2____   = "Type of price: close - 0, open - 1, high  - 2, low - 3";
extern int       PriceType   = 0;
extern string    ____3____   = "Moving Average Shift";
extern int       MaShift     = 0;
2) Il calcolo del DPO vero e proprio

Codice:
if(counted_bars>=DPOPeriod) i=Bars-counted_bars-1;
   while(i>=0)
   {
      ExtMapBuffer1[i] = priceSwitch(i) - iMA(NULL, NULL, DPOPeriod,  MaShift, MaType, PriceType, i);
      i--;
3) la scelta del tipo di prezzo da usare (close, open ecc.)

Codice:
double priceSwitch(int i)
{
   double price;
   switch(PriceType)
   {
      case PRICE_CLOSE:
         price = Close[i];
      case PRICE_OPEN:
         price = Open[i];
      case PRICE_HIGH:
         price = High[i];
      case PRICE_LOW:
         price = Low[i];
   }
   return(price);
}
Il resto del codice serve per plottare i livelli di riferimento.

Anche il DPO di PRT per quanto la sua formula non è in chiaro sono abbastanza sicuro che si basa su questa stessa metodica di calcolo!

Il fatto che PRT non plotti le ultime barre dell'indicatore non è un fatto casuale è proprio voluto! PRT non calcola effettivamente nessun tipo di MMC, ma trasla semplicemente in orizzontale una normale MA. Quindi tutti i valori "futuri" risultano inesistenti (si vede la media piatta ma è solo un effeto granfico). Il DPO di conseguenza ha lo stesso problema.

Come ovviare se proprio vogliamo a tali inconveniente????
Basta usare il bel codice che ci ha messo a disposizione meursault per la traslazione e per il calcolo delle mmc (rivedere i post 34 e 35 e anche i seguenti di questo 3d).


Per prima cosa per attenerci perfettamente alla formula del calcolo del DPO dobbiamo fare una piccola modifica al codice delle mmc


///////////////////////////////////////////
//////////MMC2////////////////////////
////////////////////////////////////////
if n mod 2 = 0 then
t = n/2
else
t = (n -1)/2
endif

t=t+1



trasl = CALL traslazione[t,numbarre]

ind = Average[n](trasl)

return ind

//////////////////////////////////////////////////

e con questo codice modificato e la tua bozza andiamo a creare il nostro Detrended Price Oscillator.

////////////////////////////////////////////////
//////////////////DPO/////////////////////////
///////////////////////////////////////////////
miammc=call mmc2[n,numbar]


detrended=close-miammc

min1=lowest[40](detrended)
min2=lowest[80](detrended)
min3=lowest[120](detrended)
mediamin=(min1+min2+min3)/3
iperv70=mediamin*55/100
iperv80=mediamin*70/100
iperv90=mediamin*85/100

max1=highest[40](detrended)
max2=highest[80](detrended)
max3=highest[120](detrended)
mediamax=(max1+max2+max3)/3
iperc70=mediamax*55/100
iperc80=mediamax*70/100
iperc90=mediamax*85/100

Return Detrended,0,iperv70 coloured(0,255,255),iperv80 coloured(0,255,0), iperv90 coloured(0,0,255),mediamin coloured(255,0,0), iperc70 coloured(0,255,255),iperc80 coloured(0,255,0), iperc90 coloured(0,0,255),mediamax coloured(255,0,0)


//////////////////////////////////////////////////////////


Nel tuo codice calcoli i livelli in modo differente dal codice per MT4 ho lasciato i tuoi perchè non sapevo se magari li avevi tirati fuori dalla lettura del testo di Di Napoli.


Per un immagine di paragone e confronto tra le due piatte devo aspettare e rimandarvi a domani.


Ciao
 

tetsuo

Guest
Ciao grande Meur :),
ti ringrazio ancora una volta x aver reso funzionante il Pentagramma in qualsiasi timeframe, pur non fregandotene nulla dell'argomento.
Approfitto ancora una volta della tua disponibilità e competenza per chiederti se sia possibile costruire un indicatore che, su barre a volume costante, mi indichi il tempo necessario x il completamento di ciascuna barra.


Se ci riuscisse sarebbe un mago .... :D


Intanto che lui prova a fare quello che gli hai chiesto io per sfizio mi sono divertito a provare a fare qulcosa di più semplice, umano e sopratutto "possibile".

In un grafico a volumi costanti si va a misurare la differenza di tempo tra una candela e la successiva e si calcola una media mobile da usare come semplice stima del provabile tempo necessario per formare la prossima candela.

Il calcolo viene eseguito in secondi

////////////////////////////////////////////////

secondi=(time mod 100)+(minute*60)+((hour-8)*60*60)
diffbarra=(secondi-secondi[1])
if IntradayBarIndex>n then
mediadiff=average[n](diffbarra)
endif
if day<>day[1] then
diffbarra=0
mediadiff=0
endif

return diffbarra, mediadiff
////////////////////FINE////////////////////////////

Adesso a boccie ferme funziona, si deve vedere lunedì come si comporta in RealTime
 

meursault

lo straniero
Se ci riuscisse sarebbe un mago .... :D
:lol::lol::lol:

Ciao Tetsuo :)
Ma infatti io ho inteso la richiesta di Fracicone come

costruire un indicatore che, su barre a volume costante, mi indichi il tempo che e' stato necessario x il completamento di ciascuna barra.

per vedere nel futuro mi sto ancora attrezzando :futuro:

Fracicone, anche io avrei scritto il codice come l'ha fatto Tetsuo (anzi, sicuramente peggio :D), nient'altro da aggiungere. Sono curioso di vedere come funziona in real time ... Anzi si', una cosa, a te e a tutti quelli che fanno richieste di codici ... diteci perlomeno a grandi linee qualcosa sul loro utilizzo, siamo in un forum per condividere no? ;)

Buon sabato sera a tutti :cin:
PS: Tet, ottimo lavoro sul DPO con la richiesta di QH, seguo con interesse gli sviluppi ...
 

Quarter Horse

Nuovo forumer
Grazie Tets.:up:
Capito tutto sul DPO. Per cui resto fedele al mio DPO artigianale che ho postato sopra. Questo perchè l'utilizzo che ne fa Di Napoli non è "ciclistico". Lo utilizza per visualizzare situazioni di eccesso del mercato dove consiglia di prendere profitto (... se uno fosse bravo come lui a essere già dentro quel trade :lol:) in corrispondenza anche di livelli di targets da lui spiegati; oppure per segnalare situazioni in cui il mercato può invertire la sua rotta (meglio se associato a una successiva divergenza DPO-prezzi in corrispondenza di livelli di supporto-resistenza corrispondenti ai suoi famosi FibNodes.
 

Quarter Horse

Nuovo forumer
Per assecondare giustamente quanto detto da Meu ;) sulla spiegazione degli indicatori che chiediamo illustro brevemente l'utilizzo della B-Line di Bressert.
1. TRADING CLASSICO:
Si prende un indicatore di trend (MACD, incrocio di 2 mm exp, altro a nostro piacimento). Si trada solo in direzione del trend. Quando la B-Line incrocia la sua media mobile semplice ci da una barra "segnale". Alla barra successiva o quelle dopo, si entra al superamento del max - min della barra segnale. Io uso tarature 10-3 oppure 5-2.
2. CICLI
La B-Line ha un range 0-100. Quando sta sopra 70/80 e inverte a ribasso e torna sotto tali valori, allora il max del ciclo in questione è fatto. Stesso ragionamento al contrario per la ripartenza del ciclo su valori 20/30.
Ad es con TF weekly e taratura 10-3 abbiamo l'intermedio. Poi con varie prove sui TF in funzione dello strumento che si usa si trovano i cicli piu piccoli ....

N.B.
Il sistema n. 1 è ottimo. Ma va rispettato alla lettera, senza fare i fenomeni a trare contro trend alla ricerca del max o del min storico per fare il colpo della vita, come è capitato spesso a un tizio che conosco e che si è morso il dito (quello che usa per il click sul mouse) parecchie volte ...:wall:
 

meursault

lo straniero
Per assecondare giustamente quanto detto da Meu ;) sulla spiegazione degli indicatori che chiediamo illustro brevemente l'utilizzo della B-Line di Bressert.
1. TRADING CLASSICO:
Si prende un indicatore di trend (MACD, incrocio di 2 mm exp, altro a nostro piacimento). Si trada solo in direzione del trend. Quando la B-Line incrocia la sua media mobile semplice ci da una barra "segnale". Alla barra successiva o quelle dopo, si entra al superamento del max - min della barra segnale. Io uso tarature 10-3 oppure 5-2.
2. CICLI
La B-Line ha un range 0-100. Quando sta sopra 70/80 e inverte a ribasso e torna sotto tali valori, allora il max del ciclo in questione è fatto. Stesso ragionamento al contrario per la ripartenza del ciclo su valori 20/30.
Ad es con TF weekly e taratura 10-3 abbiamo l'intermedio. Poi con varie prove sui TF in funzione dello strumento che si usa si trovano i cicli piu piccoli ....

N.B.
Il sistema n. 1 è ottimo. Ma va rispettato alla lettera, senza fare i fenomeni a trare contro trend alla ricerca del max o del min storico per fare il colpo della vita, come è capitato spesso a un tizio che conosco e che si è morso il dito (quello che usa per il click sul mouse) parecchie volte ...:wall:

Perfetto QH, e' proprio questo lo spirito che piace a me :up:
Anche io mi aggiungo a QH facendo richiesta ufficiale a Tetsuo di tradurre per PRT il codice per la B-line :violino: :)

Me ne vado a dormire :zzz:
 

fracicone

Nuovo forumer
Siete due maghi

Se ci riuscisse sarebbe un mago .... :D


Intanto che lui prova a fare quello che gli hai chiesto io per sfizio mi sono divertito a provare a fare qulcosa di più semplice, umano e sopratutto "possibile".

In un grafico a volumi costanti si va a misurare la differenza di tempo tra una candela e la successiva e si calcola una media mobile da usare come semplice stima del provabile tempo necessario per formare la prossima candela.

Il calcolo viene eseguito in secondi

////////////////////////////////////////////////

secondi=(time mod 100)+(minute*60)+((hour-8)*60*60)
diffbarra=(secondi-secondi[1])
if IntradayBarIndex>n then
mediadiff=average[n](diffbarra)
endif
if day<>day[1] then
diffbarra=0
mediadiff=0
endif

return diffbarra, mediadiff
////////////////////FINE////////////////////////////

Adesso a boccie ferme funziona, si deve vedere lunedì come si comporta in RealTime

:lol::lol::lol:

Ciao Tetsuo :)
Ma infatti io ho inteso la richiesta di Fracicone come



per vedere nel futuro mi sto ancora attrezzando :futuro:

Fracicone, anche io avrei scritto il codice come l'ha fatto Tetsuo (anzi, sicuramente peggio :D), nient'altro da aggiungere. Sono curioso di vedere come funziona in real time ... Anzi si', una cosa, a te e a tutti quelli che fanno richieste di codici ... diteci perlomeno a grandi linee qualcosa sul loro utilizzo, siamo in un forum per condividere no? ;)

Buon sabato sera a tutti :cin:
PS: Tet, ottimo lavoro sul DPO con la richiesta di QH, seguo con interesse gli sviluppi ...
Non intendevo chiedere un indicatore per il futuro, come erroneamente fatto,:wall: ma uno per il passato:).
Un indicatore che graficamente mi mostri il tempo che ha impiegato ciascuna barra a volume costante per completarsi.
Questo tipo di indicatore dovrebbe:) fornirmi infomazione sull'accelerazione dei volumi:minor tempo impiega la formazione della barra maggiori volumi passano sul mercato. Siccome il mercato tende a muoversi per ondate o flussi di spinta ( in quanto violente accelerazioni creano shock sul mercato che non sono utili nè ai venditori , nè ai compratori) dovrebbe:Dessere possibile individuare quando un grosso impulso ha finito la sua spinta rimaria. In che modo? Attraverso l'individuazione di divergenze tra il movimento dei prezzi e questo indicatore, ossia di situazioni in cui il mercato cerca di allungare nella direzione della spinta primari o iniziale ma i volumi che hanno accompagnato la spinta tendono ad affievolirsi.

Non finirò mai di ringraziarvi Grande TETSUO e Grande MEUR:)
 

Users who are viewing this thread

Alto