Salve. Per chi può essere interessato, condivido questo semplice codice per analizzare in modo grafico la distribuzione dei valori di qualche variabile di interesse, cosa che trovo utile quando si ricerca parametri di settings per indicatori o trading systems.
Non sono un matematico, ma cercavo qualcosa di equivalente alla MODA che potesse aiutare a fare statistiche in modo veloce, dando immediatamente idea della frequenza con cui si presentano determinati valori. Può servire solo per valori NORMALIZZATI e poco per valori assoluti (valori positivi>0)
Ho escluso dal calcolo la candela 0 in quanto ancora in formazione. Per andare oltre le 500 candele modificare CalculateOnLastBars.
Inserire la variabile di interesse come VIA nel timeframe desiderato (per es, la distribuzione della differenza fra close e la sua media a 50 periodi, il valore dello stocastico, ecc)
Esempio #1: distribuzione range barra giornaliera in % rispetto all’ATR14 daily, nelle ultime 200 candele, nel range 0-200%, diviso a step del 25%
Esempio #2: distribuzione range barra giornaliera in % rispetto all’ATR14 daily, nelle ultime 400 candele, nel range 0-200%, diviso a step del 5%
Esempio #3: distrubuzione del valore di RSI14 su barre 15M, nelle ultime 300 candele, nel range 0-100, diviso a step di 10
PS: Ho provato a pubblicare l’indicatore in libreria, ma non funzionano i pulsanti per aggiungere il file itf e gli screenshot
//T.F. 27-03-2023 - MODA Indicator
//Sharing on ProRealCode
DEFPARAM CalculateOnLastBars = 500
DEFPARAM DRAWONLASTBARONLY = true
//Parameters:
//CDB=200 //Candle Back
//NOB=20 //Number Of Bands
//BW=10 //Band Width
//VZOOM=5 //Vertical Zoom - for graphics only
//Variable in Analysis - 1
rangeD=range
AtrD=AverageTrueRange[14](close)
rangeP=rangeD/atrD*100
//Variable in Analysis - 2
myrsi=RSI[14](close)[1]
//MODA
VIA=Rangep //Variable in analysis - 1
rem VIA=myrsi //Variable in analysis - 2
offset=Highest[30](high)+200*pipsize //for graphics only
MaxCOVINB=0 //for graphics only
if dayofweek=currentdayofweek then //to reduce calculation time
for i=1 to NOB do
COVINB=0 //Count Of Values in Band
for z=1 to CDB do
if VIA[z]>=(BW*(i-1)) and VIA[z]<(BW*i) then
COVINB=COVINB+1
endif
next
bwx=BW*i //for graphics only
drawpoint(barindex-i,COVINB*pipsize*VZOOM+offset,2) coloured(0,0,200) //Y point
drawtext("#COVINB#",barindex-i,COVINB*pipsize*VZOOM+30*pipsize+offset) //Y value
drawtext("#BWx#>",barindex-i,offset-30*pipsize) //X scale
If COVINB>MaxCOVINB THEN //for graphics only
MaxCOVINB=COVINB
ENDIF
next
drawrectangle (barindex,offset,barindex-NOB-1,MaxCOVINB*pipsize*VZOOM+50*pipsize+offset) coloured(0,0,200)
drawtext ("MODA - #NOB#Bands - #BW#Bandwidth - On last #CDB#Candles", barindex-round(NOB/2)-1,MaxCOVINB*pipsize*VZOOM+70*pipsize+offset)
//Value Table for OCR - Optional
for i=1 to CDB do
xx=round(via[i],1)
drawtext ("C#i#= #xx#", barindex,low-i*20*pipsize-10*pipsize)
next
endif
return