-
29-11-13, 00:19 #1
- Data Registrazione
- Dec 2009
- Messaggi
- 813
Indicatori metodo Pidi (Trend e Fasce Pidi)
Ciao a tutti, come da titolo vorrei il vostro supporto nella costruzione dell'indicatore di trend basato sulle regole che Pidi ha illustrato nel suo bellissimo post Il sottostante e le sue opzioni
Riporto qui sotto le regole che lui utilizza per individuare il trend
Con beetrader sono arrivato a questo punto
Questo il codice
Spero di aver interpretato correttamente le indicazioni di Pidi soprattutto in merito alla Deviazione Standard perchè vedo che questo parametro influenza molto la reattività dell'indicatore...123456789101112131415161718192021#Media dei prezzi a 20 periodi
SET
SMA20 =
SMA
(
CLOSE
,
20
)
#Media dei prezzi a 3 periodi
SET
SMA3 =
SMA
(
CLOSE
,
3
)
#Detraggo dalla più veloce la più lenta
SET
Differenza = SMA3 - SMA20
#Calcolo la deviazione standard dei prezzi da inizio giornata
SET
DevStd =
StandardDeviations
(
CLOSE
,
20
,
1
,
SIMPLE
)
#Divido la differenza per la deviazione standard ottenendo una percentuale
SET
Percentuale = Differenza / DevStd
SET
PLOT1
= Percentuale
SET
PLOT2
=
1
SET
PLOT3
=
2
SET
PLOT4
= -
1
SET
PLOT5
= -
2
p.s. ovviamente dopo di questo lavoreremo sulle fascie Pidi che sono un attimo piu' complicate da tradurre!!!(Almeno per le mie ridotte capacità programmatorie!)Ultima modifica di CIVT; 03-12-13 alle 14:01
-
29-11-13, 09:20 #2
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
-
29-11-13, 11:07 #3
- Data Registrazione
- Dec 2009
- Messaggi
- 813
Ciao Max e grazie del contributo! Mi pareva strano che fosse così semplice, se modifico il codice contando il numero di barre da inizio giornata otterrei il risultato desiderato? Effettuerei questa modifica però non capisco se così conta le barre giornaliere oppure quelle relative al time frame utilizzato cosa che dovrei invece fare da quanto ho capito!
12345678910# Individuazione del cambiamento di data
SET
ConditionDateChange = DATE >
REF
(DATE,
1
)
SET
DateChange =
IF
(ConditionDateChange,
1
,
0
)
# Individuazione numerica delle barre intraday giornaliere
SET
BarsOfDay =
LASTIF
(ConditionDateChange)
SET
Bars = BarsOfDay +
1
#Calcolo la deviazione standard dei prezzi da inizio giornata
SET
DevStd =
StandardDeviations
(
CLOSE
, Bars,
2
,
SIMPLE
)
Ultima modifica di CIVT; 29-11-13 alle 11:26
-
29-11-13, 12:18 #4
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
Ciao CIVT,
così calcola le barre intraday indipendentemente dal time frame utilizzato: se ad esempio metti il time frame giornaliero conta sempre 1.
Io per il momento ho partorito questo:
123456789101112131415161718192021222324252627282930313233#Media dei prezzi a 20 periodi
SET
SMA20 =
SMA
(
CLOSE
,
20
)
#Media dei prezzi a 3 periodi
SET
SMA3 =
SMA
(
CLOSE
,
3
)
#Detraggo dalla più veloce la più lenta
SET
Differenza = SMA3 - SMA20
#Calcolo la deviazione standard dei prezzi da inizio giornata (a periodo variabile)
SET
ConditionDateChange = DATE >
REF
(DATE,
1
)
SET
BarsOfDay =
LASTIF
(ConditionDateChange)
SET
Periods = BarsOfDay +
1
#Inibisco il calcolo della deviazione standard dei prezzi per le prime 4 barre di giornata
SET
DevStd =
IF
(Periods <
5
,
0
,
StandardDeviations
(
CLOSE
, Periods,
1
,
SIMPLE
) )
#Modifica per evitare la divisione per zero
SET
DevStdModif =
IF
(DevStd =
0
,
0.000001
, DevStd)
#Divido la differenza per la deviazione standard ottenendo una percentuale
#imponendo valore zero per le prime 4 barre di giornata (E' UNA SCELTA ARBITRARIA !!!)
SET
Percentuale =
IF
(Periods <
5
,
0
, Differenza / DevStdModif )
SET
PLOT1
= Percentuale
SET
PLOT2
=
2
SET
PLOT3
=
1
SET
PLOT4
= -
1
SET
PLOT5
= -
2
SET
PLOTCOLOR1
=
COLOR_YELLOW
SET
PLOTCOLOR2
=
COLOR_LIGHT_GREEN
SET
PLOTCOLOR3
=
COLOR_LIGHT_GREEN
SET
PLOTCOLOR4
=
COLOR_LIGHT_RED
SET
PLOTCOLOR5
=
COLOR_LIGHT_RED
Ci sono dentro un paio di artifizi mirati semplicemente ad evitare la generazione di errori nel calcolo (inibizione delle prime 4 barre di giornata e modifica artificiosa della deviazione standard quando vale zero).
Inoltre ho l'impressione che questo indicatore appesantisca un tantino beeTrader!Ultima modifica di Smash; 29-11-13 alle 12:23
-
29-11-13, 12:30 #5
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
A quanto ho intuito, credo che Pidi utilizzi il grafico con time frame a 1 minuto.
-
29-11-13, 15:40 #6
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
Ecco anche un primo contributo per la realizzazione delle fasce Pidi.
1234567891011121314151617181920212223242526272829# Calcolo dei Pivot Points
SET
AP = (YESTERDAYHIGH() + YESTERDAYLOW() + YESTERDAYCLOSE()) /
3
SET
Sup1 =
2
* AP - YESTERDAYHIGH()
SET
Res1 =
2
* AP - YESTERDAYLOW()
SET
Sup2 = AP - (Res1 - Sup1)
SET
Res2 = (AP - Sup1) + Res1
SET
Res3 = Res2 + (YESTERDAYHIGH() - YESTERDAYLOW())
SET
Sup3 = Sup2 - (YESTERDAYHIGH() - YESTERDAYLOW())
# Calcolo dei 2 livelli di Strike Up
SET
StrikeUp1 = DIV(TODAYOPEN() *
100
,
50
) /
2
+
0.5
SET
StrikeUp2 = StrikeUp1 +
0.5
# Calcolo dei 2 livelli di Strike Down
SET
CondDown =
MOD
(TODAYOPEN() *
100
,
50
) =
0
SET
StrikeDown1 =
IF
(CondDown, DIV(TODAYOPEN() *
100
,
50
) /
2
-
0.5
, DIV(TODAYOPEN() *
100
,
50
) /
2
)
SET
StrikeDown2 = StrikeDown1 -
0.5
SET
PLOT1
= TODAYOPEN()
SET
PLOT2
= StrikeUp1
SET
PLOT3
= StrikeDown1
SET
PLOT4
= StrikeUp2
SET
PLOT5
= StrikeDown2
SET
PLOTCOLOR1
=
COLOR_SILVER
SET
PLOTCOLOR2
=
COLOR_GREEN
SET
PLOTCOLOR3
=
COLOR_RED
SET
PLOTCOLOR4
=
COLOR_GREEN
SET
PLOTCOLOR5
=
COLOR_RED
Questo indicatore calcola i 2 livelli di Strike Price del Bund al di sopra e al di sotto dell'apertura di giornata, e li disegna insieme al livello dell'apertura di giornata; calcola inoltre anche i Pivot Points (anche se non li disegna).
A questo punto per determinare le fasce rimarrebbero da fare i controlli incrociati dei vari livelli (apertura, Strike Price e Pivot Points) per poi aggiungere e togliere il numero di tick fissi determinati da Pidi.Ultima modifica di Smash; 29-11-13 alle 15:46
-
01-12-13, 15:17 #7
- Data Registrazione
- Dec 2009
- Messaggi
- 813
Grazie per il contributo Smash, rilleggendo la discussione ho trovato altri spunti/chiarimenti che dovrebbero essere integrati, questo è il primo:
Calcolo Frontiera della Direzione
Originariamente Scritto da pidi10
Questa è la spiegazione per il calcolo delle Fasce PIDI123#Calcolo la frontierza di direzione +/- 22 tick dall'OPEN
SET
FrontieraUP = TODAYOPEN() +
0.22
SET
FrontieraDOWN = TODAYOPEN() -
0.22
Qui sono un pò in difficoltà perchè l'indivduazione della R2 deve essere il prezzo più vicino tra lo strike e il pivot, quindi bisogna inserire una condizione di verifica tra i due ed aggiungere 12 e 22 tick su R2
Allego lo snapshort di Pidi per chiarire meglio il concetto
Questo invece è il codice che ha programmato BMM con un altro software, lo riprongo qui perchè credo possa essere utile
Al momento il Pidi-workspace si presenta così!
Ultima modifica di CIVT; 01-12-13 alle 15:21
-
02-12-13, 20:07 #8
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Ciao a tutti,
più tardi proverò a cimentarmi nella traduzione del codice di BMM.
Volevo però prima capire un paio di cosette.
Innanzitutto come si calcola lo strike price ad esempio su Unicredit,
tanto per fare un esempio su un titolo che conosco meglio dei future.
Come si arriva a calcolare la Fascia Pidi.
Saluti
Massimo
-
02-12-13, 23:31 #9
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Ecco una prima conversione approssimativa del codice fornito da BMM.
Per quanto riguarda il calcolo degli strike, non funzionando le funzioni CEIL e FLOOR, ho utilizzato il metodo di
calcolo fornito da Smash nel suo codice.
Per quanto riguarda il calcolo di SogliaPidiUp e SogliaPidiDown ho tradotto pari pari le condizioni di BMM,
e non avendoci capito molto, lascio a voi verificare la loro correttezza.
Fate sapere se è necessario correggere qualcosa.
Saluti
Massimo
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758# Ampiezza Strike
INPUTS
:
@AmpStrike(0.5)
# Ampiezza Fascia Pidi
INPUTS
:
@AmpPidi(0.22)
# Ampiezza Frontiera della direzione
INPUTS
:
@AmpFdD(0.22)
# Calcolo dei Pivot Points
SET
AP = (YESTERDAYHIGH() + YESTERDAYLOW() + YESTERDAYCLOSE()) /
3
SET
Sup1 = (AP *
2
) - YESTERDAYHIGH()
SET
Res1 = (AP *
2
) - YESTERDAYLOW()
SET
Sup2 = AP - (Res1 - Sup1)
SET
Res2 = (AP - Sup1) + Res1
#SET Res3 = Res2 + (YESTERDAYHIGH() - YESTERDAYLOW())
#SET Sup3 = Sup2 - (YESTERDAYHIGH() - YESTERDAYLOW())
# Calcolo Frontiere della direzione
SET
FdDUp = TODAYOPEN() +
@AmpFdD
SET
FdDDown = TODAYOPEN() -
@AmpFdD
# Calcolo dei 2 livelli di Strike Up
SET
StrikeUp1 = DIV(TODAYOPEN() *
100
,
50
) /
2
+
@AmpStrike
SET
StrikeUp2 = StrikeUp1 +
@AmpStrike
# Calcolo dei 2 livelli di Strike Down
SET
CondDown =
MOD
(TODAYOPEN() *
100
,
50
) =
0
SET
StrikeDown1 =
IF
(CondDown, DIV(TODAYOPEN() *
100
,
50
) /
2
-
@AmpStrike, DIV(TODAYOPEN() * 100, 50) / 2)
SET
StrikeDown2 = StrikeDown1 -
@AmpStrike
# Calcola SogliaPidiUp
SET
c1 =
IF
(StrikeUp1 < Res2, StrikeUp1, Res2 )
SET
c2 =
IF
(StrikeUp1 < Res1, Res1, c1)
SET
c3 =
IF
(StrikeUp1 < Res1, StrikeUp1, Res1 )
SET
c4 =
IF
(StrikeUp1 < AP, AP, c3)
SET
SogliaPidiUp =
IF
(TODAYOPEN() > AP, c2 , c4)
# Calcola SogliaPidiDown
SET
c5 =
IF
(StrikeDown1 > Sup2, StrikeDown1, Sup2 )
SET
c6 =
IF
(StrikeDown1 > Sup1, Sup1, c5)
SET
c7 =
IF
(StrikeDown1 > Sup1, StrikeDown1, Sup1 )
SET
c8 =
IF
(StrikeDown1 > AP, AP, c7)
SET
SogliaPidiDown =
IF
(TODAYOPEN() < AP, c6 , c8)
# Calcola Punti di non ritorno
SET
PNRUp = SogliaPidiUp +
@AmpPidi
SET
PNRDown = SogliaPidiDown -
@AmpPidi
SET
PLOT1
= TODAYOPEN()
SET
PLOT2
= FdDUp
SET
PLOT3
= FdDDown
SET
PLOT4
= PNRUp
SET
PLOT5
= PNRDown
SET
PLOT6
= SogliaPidiUp
SET
PLOT7
= SogliaPidiDown
SET
PLOTCOLOR1
=
COLOR_SILVER
SET
PLOTCOLOR2
=
COLOR_GREEN
SET
PLOTCOLOR3
=
COLOR_RED
SET
PLOTCOLOR4
=
COLOR_GREEN
SET
PLOTCOLOR5
=
COLOR_RED
SET
PLOTCOLOR6
=
COLOR_YELLOW
SET
PLOTCOLOR7
=
COLOR_YELLOW
-
02-12-13, 23:51 #10
- Data Registrazione
- Dec 2009
- Messaggi
- 813
Ciao Max, come avrai letto all'inizio del 3d tutto è nato dalla visione del mercato che PIDI (Pietro) ha maturato in anni di trading sul BUND e che ha deciso di trasmetterci nel post Il sottostante e le sue opzioni venendo alle tue domande, gli strike Smash è riuscito a calcolarli (io non ci sarei mai arrivato da solo) utilizzando la divisione di numeri interi aggiungendo poi la distanza strike che sul bund è 0,5 mentre per unicredit ad esempio è 0,1
La formula è questaipotizzando un open a 141,68 lo strike piu' vicino sarà 141+0,5 ovvero 141,5 lo stesso discorso puoi farlo con Unicredito ovviamente cambiando il passo strike.1DIV(TODAYOPEN() *
100
,
50
) /
2
+
0.5
Per quanto riguarda invece il calcolo delle fascie PIDI riporto qui sotto quello che intende PIDI per le fascie PIDI
Le Fasce PIDI
.......
Come si individuano queste fasce.
Si parte dall’OPEN che è il primo prezzo battuto nella giornata, il punto di partenza della prima candela.
Poi si individua la seconda resistenza, intesa per Strike o Pivot Point, al di sopra di essa.
Quello è il livello di prezzo in cui inizia la fascia di attenzione superiore. Poi si individua un numero di tick proporzionali alla volatilità del titolo, che costituiscono la “profondità” della fascia e si contano procedendo oltre.
Il livello trovato è il termine della fascia e si chiama Punto di Non ritorno superiore.
La difficoltà sta nell’individuare per ogni singolo sottostante il valore della profondità della fascia. Io in questi mesi sul Bund ho fissato la profondità in 22 tick per i trend followers ed in 12 tick per i contrarian.
La differenza tra le due valutazioni sta nel fatto che questa area è un’altra delle aree in cui il sottostante procede in lateralità e quindi ai Trend followers occorre un dato con alta probabilità che il prezzo non torni indietro, mentre per i contrarian che lavorano entrando contrari sui massimi e sui minimi relativi occorre un punto di allert da cui essere pronti ad entrare al minimo accenno di inversione.
Per ricavare queste profondità su altri sottostanti è sufficiente fissare il livello di inizio di ogni fascia e poi con l’osservazione in più giorni posizionare quello di fine fascia nel punto più opportuno in base al comportamento del sottostante stesso e alle proprie esigenze.
ESEMPIO: L'open è stato a 139.70
Prima resistenza è un pivot a 139.88
Seconda resistenza è uno strike a 140
140 + 0.22 = Punto di non ritorno 140.22
Fino a che sta nella fascia la probabilità maggiore è che ritracci.
Passata la fascia ogni tick aumenta la probabilità che vada in un trend temporaneo