Ci sara’ qualcosa che non va nelle condizioni, perche’ ad alcuni swing non mi appare il prezzo
Scusami Roberto, ma al rigo 41 e al rigo 43 usi il termine close, ma la close nell’indicatore e’ ininfluente al fine del verificarsi dello swing. L’indicatore prende in considerazione solo low e high. Mi spieghi meglio questa cosa per favore?
Mi serve solo per vedere se il prezzo è sopra o sotto l’indicatore, per stampare il prezzo. E’ sempre close che determina se una candela è al rialzo o al ribasso.
Se c’è qualche punto che ti sembra errato devi dirmi:
- su quale strumento
- su quale TF
- l’orario della candela.
Solo così posso fare la verifica.
FIB scadenza giugno 2020, time frame 10m, candela delle 12,30 di oggi. Li’ ci dovrebbe essere cambio di swing con relativo prezzo di 17125.
Ancora………FIB giugno 2020, data oggi, time frame 10m, candela delle 16,00. Li’ ci dovrebbe ssere un punto di swing al massimo di 17105.
È possibile farlo girare non ad ogni barra di inversione ma dopo due o più barre
Grazie
Salve Roberto. Ho controllato il discorso del prezzo sull’indicatore. Il problema nasce quando ci sono candele insider. Quando accade questo l’indicatore resta allo stesso livello di prezzo precedente. Quindi quando poi si crea lo swing il prezzo che deve apparire e’ quello riferito al rv precedente, cioe’ il max o min della candela piu alta rispetto alla insider. Ma non riesco a scrivere una formula che mi prevede questo caso della candela insider. Mi puoi aiutare per favore ?
Perché ci sia un swing occorre che si formi una freccia, verso l’alto o verso il basso, quindi nel swing high RV deve essere < RV[1] e RV[1] > RV[2], oppure l’opposto nel swing low, quindi per sapere se c’è stato un swing occorre sempre attendere la candela successiva, infatti viene disegnato il prezzo sopra/sotto la candela precedente.
E’ un indicatore cosiddetto repainting, nel senso che torna indietro per visualizzare il segnale. NON può essere utilizzato, come lo ZIgZag o il DPO o altri, nel trading automatico.
La riga 41 effettivamente va scritta così:
SwingChange = (rv < rv[1] AND rv[1] > rv[2]) OR (rv > rv[1] AND rv[1] < rv[2])
ma non cambia molto nella sostanza.
Grazie Roberto, ora mi e’ tutto piu’ chiaro. Volevo chiederti un’altra cosa. E’ possibile unire direttamente i punti di swing con delle linee dritte che collegano direttamente uno swing di massimo con uno swing di minimo ? Ho provato ad utilizzare l’istruzione drawsegment ma non riesco a unire lo SwingMax con il successivo SwingMin. Evidentemente non riesco a dare le condizioni giuste.
Eccolo (i colori, se vuoi cambiarli, li trovi qui http://cloford.com/resources/colours/500col.htm):
// Swing di GANN
// dedicato a Katia
// creato da Luca De Florio per ProRealTime
defparam calculateonlastbars=1000
offset = 40*pipsize
if barindex=0 then
lasthigh=high
lastlow=low
oldrv=high
endif
// calcola le barre che hanno massimo e minimo piu' alto della precedente
if (high > lasthigh) AND (low > lastlow) then
rv = High[0]
lasthigh=rv
lastlow=low
lastrv=1
// Poi calcola le barre che hanno massimo e minimo piu' basso della precedente
elsif (high < lasthigh) AND (low < lastlow) then
rv = low[0]
lastlow=rv
lasthigh=high
lastrv=2
else
// nel caso di inside o outside, controlla la barra precedente,
// se era High prende il valore high, se era Low prende il valore Low
if lastrv=1 and high>lasthigh then
rv=high
lasthigh=high
lastlow= low
elsif lastrv=2 and low<lastlow then
rv=low
lasthigh=high
lastlow= low
else
rv=oldrv
endif
endif
// Solo nel caso della prima barra, si parte dall'High del giorno
oldrv=rv
SwingChange = (close < rv AND close[1] > rv[1]) OR (close > rv AND close[1] < rv[1])
IF SwingChange THEN
IF close < rv THEN
Prezzo = low[1]
DRAWTEXT("#Prezzo#",barindex-1,low[1] - Offset) coloured(0,128,0,255)
PreviousBar = CurrentBar
PreviousPrice = CurrentPrice
CurrentBar = BarIndex -1
CurrentPrice = rv[1] //Prezzo
ELSE
Prezzo = high[1]
DRAWTEXT("#Prezzo#",barindex-1,high[1] + Offset) coloured(0,128,0,255)
PreviousBar = CurrentBar
PreviousPrice = CurrentPrice
CurrentBar = BarIndex -1
CurrentPrice = rv[1] //Prezzo
ENDIF
DRAWSEGMENT(PreviousBar,PreviousPrice,CurrentBar,CurrentPrice) coloured(0,205,0,255)
ENDIF
return rv as "Swing"
Grazie tante Roberto……gentilissimo.