Discussione: Indicatore Pivot Points giornaliero
-
18-10-13, 11:01 #1
- Data Registrazione
- Dec 2009
- Messaggi
- 813
Indicatore Pivot Points giornaliero
Buongiorno, qualcuno è così gentile da aiutarmi a costruire l'indicatore in oggetto?
Questo è il codice su cui lavorare e come potete immaginare sono molto distante dalla perfezione!
SET AP = (HIGH + LOW + CLOSE) / 3 SET S1 = (2 * AP) - HIGH SET R1 = (2 * AP) - LOW SET S2 = AP - (R1 - S1) SET R2 = (AP - S1) + R1 SET R3 = R2 + (HIGH - LOW) SET S3 = S2 - (HIGH - LOW) SET PLOT1 = AP SET PLOT2 = S1 SET PLOT3 = R1 SET PLOT4 = S2 SET PLOT5 = R2 SET PLOT6 = R3 SET PLOT7 = S3
Questo è il mio risultato
Questo invece è il risultato che vorrei ottenere
-
18-10-13, 11:26 #2
- Data Registrazione
- Jan 2011
- Località
- Genova
- Messaggi
- 1,306
come ti dicevo devi calcolare i pivot nel timeframe daily ed espanderli nell'intraday
con un altro linguaggio si fa così, devi trasferirlo in easyscript
TimeFrameSet( inDaily ); P = ( H + L + C ) / 3; R1 = ( P * 2 ) - L; S1 = ( P * 2 ) - H; R2 = P + ( R1 - S1 ); S2 = P - ( R1 - S1 ); R3 = R2 + (H - L); S3 = S2 - (H - L) ; TimeFrameRestore(); P = TimeFrameExpand( P, inDaily ); R1 = TimeFrameExpand( R1, inDaily ); S1 = TimeFrameExpand( S1, inDaily ); R2 = TimeFrameExpand( R2, inDaily ); S2 = TimeFrameExpand( S2, inDaily ); R3 = TimeFrameExpand( R3, inDaily ); S3 = TimeFrameExpand( S3, inDaily ); Plot( R2, "R2", colorGrey50, styleDashed ); Plot( R1, "R1", colorGrey50, styleDashed ); Plot( P, "P", colorGrey50, styleDashed ); Plot( S1, "S1", colorGrey50, styleDashed ); Plot( S2, "S2", colorGrey50, styleDashed ); Plot( R3, "R3", colorGrey50, styleDashed ); Plot( S3, "S3", colorGrey50, styleDashed );
-
18-10-13, 12:25 #3
- Data Registrazione
- Dec 2009
- Messaggi
- 813
Ciao BMM grazie per la dritta, quindi ipotizzando di lavorare su TF orario potrei rifere i calcoli alle 24 ore precedenti però manca ancora qualcosa
INPUTS: @HOURS(24) SET LOW1 = REF(LOW, @HOURS) SET HIGH1 = REF(HIGH,@HOURS) SET CLOSE1 = REF(CLOSE,@HOURS) SET AP = ((HIGH1) + (LOW1) + (CLOSE1)) / 3 SET S1 = (2 * AP) - (HIGH1) SET R1 = (2 * AP) - (LOW1) SET S2 = AP - (R1 - S1) SET R2 = (AP - S1) + R1 SET R3 = R2 + ((HIGH1) - (LOW1)) SET S3 = S2 - ((HIGH1) - (LOW1)) SET PLOT1 = S1 SET PLOT2 = R1 SET PLOT3 = S2 SET PLOT4 = R2 SET PLOT5 = R3 SET PLOT6 = S3
Altri suggerimenti?
-
18-10-13, 12:46 #4
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
Ciao CIVT,
per disegnare i Pivot ti servono la chiusura del giorno prima, e poi il massimo ed il minimo del giorno prima.
Per la chiusura del giorno prima puoi usare questo indicatore:
SET ConditionDateChange = DATE > REF(DATE, 1) SET myDateChange = IF(ConditionDateChange, 1, 0) SET myPivotClose = CHANGEIF(myDateChange = 1, REF(CLOSE, 1)) SET PLOT1 = myPivotClose
Invece per il massimo e il minimo del giorno prima, a quanto ho capito, bisogna attendere la prossima release 0.8.10.15 di beeTrader, quando sarà possibile passare ad alcune funzioni di EasyScript qualsiasi espressione anzichè un semplice valore numerico come adesso.
(sempre che non sia già possibile ora trovare una soluzione alternativa: ma per adesso io non ci sto riuscendo).Ultima modifica di Smash; 18-10-13 alle 13:08
-
18-10-13, 14:59 #5
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Salve ragazzi provate con questo codice:
# # PIVOT Pidi # SET A=DATE SET B=REF(DATE,1) SET COND1 = (A != B) SET COND2 = (A = B) AND (HIGH > REF(HIGH, 1)) SET COND3 = (A = B) AND (LOW < REF(LOW, 1)) # Close del giorno precedente SET PrevDayClose = CHANGEIF(COND1, REF(CLOSE,1)) # Massimo del giorno SET H1= CHANGEIF(COND2, HIGH) # Minimo del giorno SET L1= CHANGEIF(COND3, LOW) # High del giorno precedente SET PrevDayHigh = CHANGEIF(COND1, H1) # Low del giorno precedente SET PrevDayLow = CHANGEIF(COND1, L1) # Pivot points SET AP = (PrevDayHigh + PrevDayLow + PrevDayClose) / 3 SET SS1 = (2 * AP) - PrevDayHigh SET RR1 = (2 * AP) - PrevDayLow SET SS2 = AP - (RR1 - SS1) SET RR2 = (AP - SS1) + RR1 SET RR3 = RR2 + (PrevDayHigh - PrevDayLow) SET SS3 = SS2 - (PrevDayHigh - PrevDayLow) SET PLOT1 = AP SET PLOT2 = SS1 SET PLOT3 = RR1 SET PLOT4 = SS2 SET PLOT5 = RR2 SET PLOT6 = SS3 SET PLOT7 = RR3 #
Fatemi sapere.
Saluti
Massimo
-
18-10-13, 15:05 #6
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Scusate dimenticavo:
R2 non va bene perché è una parola riservata !!!
Le condizioni iniziali le ho messe separate e non direttamente
nel CHANGEIF perché l'editor mi va spesso in errore
nel riconoscimento delle condizioni e del REF !!!
Saluti
Massimo
-
18-10-13, 15:06 #7
- Data Registrazione
- Dec 2009
- Messaggi
- 813
Grazie del prezioso contributo Smash, se ho inteso correttamente il codice credo che dovrebbe essere sufficiente aggiungere le due variabili HIGH e LOW del giorno precedente per ottenere il risultato aspettato eppure come giustamente fai notare non vengono calcolate....a questo punto aspettiamo Andrea o Max che sono sicuro avranno l'asso nella manica!
Posto il codice aggiornato..
SET ConditionDateChange = DATE > REF(DATE, 1) SET myDateChange = IF(ConditionDateChange, 1, 0) SET CLOSE1 = CHANGEIF(myDateChange = 1, REF(CLOSE, 1)) SET HIGH1 = CHANGEIF(myDateChange = 1, REF(HIGH, 1)) SET LOW1 = CHANGEIF(myDateChange = 1, REF(LOW, 1)) SET AP = ((HIGH1) + (LOW1) + (CLOSE1)) / 3 SET S1 = (2 * AP) - (HIGH1) SET R1 = (2 * AP) - (LOW1) SET S2 = AP - (R1 - S1) SET R2 = (AP - S1) + R1 SET R3 = R2 + (HIGH1) - (LOW1) SET S3 = S2 - (HIGH1) - (LOW1) SET PLOT1 = S1 SET PLOT2 = R1 SET PLOT3 = S2 SET PLOT4 = R2 SET PLOT5 = R3 SET PLOT6 = S3
Ed il risultato purtroppo ancora "parziale"...
-
18-10-13, 15:14 #8
- Data Registrazione
- Dec 2009
- Messaggi
- 813
-
18-10-13, 15:24 #9
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
Ciao Massimo,
il codice che hai postato purtroppo non calcola il Max ed il Min assoluto del giorno prima, mentre calcola l'ultimo Max relativo e l'ultimo Min relativo del giorno prima.
Provare per credere:
fagli plottare i Max ed i Min dei giorni precedenti prima ancora di usarli per calcolare i livelli dei Pivot:
# # PIVOT Pidi # SET A=DATE SET B=REF(DATE,1) SET COND1 = (A != B) SET COND2 = (A = B) AND (HIGH > REF(HIGH, 1)) SET COND3 = (A = B) AND (LOW < REF(LOW, 1)) # Close del giorno precedente SET PrevDayClose = CHANGEIF(COND1, REF(CLOSE,1)) # Massimo del giorno SET H1= CHANGEIF(COND2, HIGH) # Minimo del giorno SET L1= CHANGEIF(COND3, LOW) # High del giorno precedente SET PrevDayHigh = CHANGEIF(COND1, H1) # Low del giorno precedente SET PrevDayLow = CHANGEIF(COND1, L1) SET PLOT1 = PrevDayHigh SET PLOT2 = PrevDayLow #
-
18-10-13, 16:59 #10
- Data Registrazione
- Dec 2009
- Messaggi
- 813