Discussione: Indicatore Bobao per Watchlist
-
27-11-13, 16:24 #1
- Data Registrazione
- May 2011
- Località
- Bologna
- Messaggi
- 3,017
Indicatore Bobao per Watchlist
ho provato ad adeguare l'indicatore nativo per poterlo usare sulla wathclist ed avere un "Filtro" da applicare su una lista di titoli.
Fino ad un certo punto è tutto facile ma per rendere la cosa più sensata vorrei che il segnale "Crossover" rimanesse in Watchlist per X barre e, ammesso che il segnale sia arrivato 2/3 barre prima, capire se la linea di Regressione è nel trend o ha invertito. Cerco di essere più chiaro: 2 colonne per segnalare short o long (meglio se su una sola ma non saprei come fare), 2 colonne che mi dicano da quante X barre è arrivato il segnale (anche qui sarebbe meglio una), 2 (o una) colonne che mi dicano come si sta muovendo la regressione rispetto al segnale precedentemente dato.
Sono 2 gg che mi sbatto ma non ne esco vivo.
Spero di essermi spiegato.
Allego script fatto per ora e l'idea della Watchlist.
Grazie
-
28-11-13, 00:51 #2
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
-
28-11-13, 10:52 #3
- Data Registrazione
- May 2011
- Località
- Bologna
- Messaggi
- 3,017
Ciao Massimo,
vorrei vedere sulle colonne della Watchlist quando la linea di regressione taglia la bigtop/bigbottom (1 rosso/ 1 verde) e quindi dà il segnale short/long, da quante barre è scattato il segnale (entro un numero di barre dato ... ) e, ammesso che siano passate 2/3 barre dal segnale, vedere se la regressione continua il percorso dato dal segnale o se ha invertito. Vedi allegato.
Claudio
-
28-11-13, 22:06 #4
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
Ciao Claudio,
per il momento vedi se ti potrebbe piacere questo:
INPUTS: @price(CLOSE), @BandPeriods(20), @BigDev(1.6), @SmalDev(0.83), @SLperiods(7), @matype(SIMPLE) # Definiamo le variabili SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype) SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype) SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype) SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype) SET SignalLine = LR(@price, @SLperiods) # Calcoliamo i segnali SET SignalSHORT = CROSSOVER(BigTop, SignalLine) SET SignalLONG = CROSSOVER(SignalLine, BigBottom) SET Signal = SignalLONG - SignalSHORT SET LastSignal = CHANGEIF(Signal <> 0, Signal) SET BarsSince = LASTIF(Signal <> 0) # Settiamo i PLOT con i relativi colori SET PLOT1 = LastSignal SET ColorInit = IF(LastSignal > 0, COLOR_LIGHT_GREEN, COLOR_GRAY) SET ColorFin = IF(LastSignal < 0, COLOR_LIGHT_RED, ColorInit) SET PLOTCOLOR1 = ColorFin SET PLOT2 = BarsSince SET PLOTCOLOR2 = ColorFin
In pratica:
- in un'unica colonna (PLOT1) segnala se Long o Short (+1 oppure -1 ; verde se +1 e rosso se -1)
- in un'unica colonna (PLOT2) indica da quante barre si è verificato il segnale (verde se riferito a segnale Long e rosso se riferito a segnale Short) e quì bisognerebbe decidere se si deve sommare o no 1 al numero che restituisce lo script.
Purtroppo così come è ha il difetto che non segnala se dopo un primo attraversamento della BigTop o BigBottom, da intendersi come segnale, si verifica un riattraversamento in direzione contraria che annullerebbe il segnale!
Invece per la parte sulla regressione lineare .... magari prova a descrivere che tipo di formule vorresti esattamente inserire nello script.Ultima modifica di Smash; 28-11-13 alle 22:22
-
29-11-13, 00:57 #5
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Ciao,
scusate il ritardo ma ho faticato un po' a trovare la soluzione, sempre sperando che funzioni !!!
Claudio per cortesia domani provala in realtime e fammi sapere se ci sono errori.
Per le spiegazioni leggi i commenti nel codice.
Saluti
Massimo
P.S. In inglese Grigio è GREY e non GRAY. Per cortesia correggere !!!
INPUTS: @price(CLOSE), @BandPeriods(20), @BigDev(1.6), @SmalDev(0.83), @SLperiods(7), @matype(SIMPLE),@x(4) # @x è il nunero di barre di validità del segnale !!! # Definiamo le variabili SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype) SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype) SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype) SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype) SET SignalLine = LR(@price, @SLperiods) # Definiamo le condizioni di crossover per long e short SET goLong = CROSSOVER(SignalLine, BigTop) SET goShort = CROSSOVER(BigBottom, SignalLine) # Contiamo da quante barre si è verificata la condizione di crossover # e superato il valore di @x azzeriamo i contatori SET countH = LASTIF(goLong) SET countH1 = IF(countH <= @x ,countH, 0) SET countL = LASTIF(goShort) SET countL1 = IF(countL <= @x ,countL, 0) # Assegniamo al nostro signal un valore di countH1 se crossover long # di countL1 se crossover short, e zero se niente crossover SET condL = (countH1 = 0 AND countL1 > 0) OR (countH1 > 0 AND countL1 > 0 AND countL1 < countH1) SET condH = (countL1 = 0 AND countH1 > 0) OR (countH1 > 0 AND countL1 > 0 AND countH1 < countL1) SET signal = IF(condH, countH1, IF(condL, (-1 * countL1), 0)) # Assegnamo a signal2 valore di 1 se SignalLine conferma il crossover, # valore di -1 se la SignalLine ha ritracciato, negando il crossover, 0 quando no segnale SET condTrue = (signal > 0 AND SignalLine > BigTop) OR (signal < 0 AND SignalLine < BigBottom) SET condFalse = (signal > 0 AND SignalLine < BigTop) OR (signal < 0 AND SignalLine > BigBottom) SET signal2 = IF(condTrue, 1, IF(condFalse, -1, 0)) # Settiamo i PLOT # Per signal in verde long ed il numero di barre dal crossover long, # in rosso per short ed in negativo il numero di barre dal crossover short, # in grigio 0 quando siamo oltre @x barre dal crossover SET PLOT1 = signal SET PLOTCOLOR1 = IF(signal < 0, COLOR_RED, IF(signal > 0, COLOR_GREEN, COLOR_GRAY)) # Per signal2 verde con 1 se LR conferma il crossover long o short # in rosso -1 se in invece LR ha ritracciato negando il crossover # 0 grigio se nessun segnale SET PLOT2 = signal2 SET PLOTCOLOR2 = IF(signal2 < 0, COLOR_RED, IF(signal2 > 0, COLOR_GREEN, COLOR_GRAY))
-
29-11-13, 01:12 #6
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Allego anche una versione che calcola sulla barra precedente,
forse più adatta per l'utilizzo in realtime, non essendo influenzata da ogni singolo tick in arrivo !!!
Da testare in realtime.
Saluti
Massimo
INPUTS: @price(CLOSE), @BandPeriods(20), @BigDev(1.6), @SmalDev(0.83), @SLperiods(7), @matype(SIMPLE),@x(4) # @x è il nunero di barre di validità del segnale !!! # Definiamo le variabili SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype) SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype) SET BigTop1 = REF(BigTop, 1) SET BigBottom1 = REF(BigBottom, 1) SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype) SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype) SET SignalLine = LR(@price, @SLperiods) SET SignalLine1 = REF(SignalLine,1) # Definiamo le condizioni di crossover per long e short SET goLong = CROSSOVER(SignalLine1, BigTop1) SET goShort = CROSSOVER(BigBottom1, SignalLine1) # Contiamo da quante barre si è verificata la condizione di crossover # e superato il valore di @x azzeriamo i contatori SET countH = LASTIF(goLong) SET countH1 = IF(countH <= @x ,countH, 0) SET countL = LASTIF(goShort) SET countL1 = IF(countL <= @x ,countL, 0) # Assegniamo al nostro signal un valore di countH1 se crossover long # di countL1 se crossover short, e zero se niente crossover SET condL = (countH1 = 0 AND countL1 > 0) OR (countH1 > 0 AND countL1 > 0 AND countL1 < countH1) SET condH = (countL1 = 0 AND countH1 > 0) OR (countH1 > 0 AND countL1 > 0 AND countH1 < countL1) SET signal = IF(condH, countH1, IF(condL, (-1 * countL1), 0)) # Assegnamo a signal2 valore di 1 se SignalLine conferma il crossover, # valore di -1 se la SignalLine ha ritracciato, negando il crossover, 0 quando no segnale SET condTrue = (signal > 0 AND SignalLine1 > BigTop1) OR (signal < 0 AND SignalLine1 < BigBottom1) SET condFalse = (signal > 0 AND SignalLine1 < BigTop1) OR (signal < 0 AND SignalLine1 > BigBottom1) SET signal2 = IF(condTrue, 1, IF(condFalse, -1, 0)) # Settiamo i PLOT # Per signal in verde long ed il numero di barre dal crossover long, # in rosso per short ed in negativo il numero di barre dal crossover short, # in grigio 0 quando siamo oltre @x barre dal crossover SET PLOT1 = signal SET PLOTCOLOR1 = IF(signal < 0, COLOR_RED, IF(signal > 0, COLOR_GREEN, COLOR_GRAY)) # Per signal2 verde con 1 se LR conferma il crossover long o short # in rosso -1 se in invece LR ha ritracciato negando il crossover # 0 grigio se nessun segnale SET PLOT2 = signal2 SET PLOTCOLOR2 = IF(signal2 < 0, COLOR_RED, IF(signal2 > 0, COLOR_GREEN, COLOR_GRAY))
-
29-11-13, 09:21 #7
- Data Registrazione
- May 2011
- Località
- Bologna
- Messaggi
- 3,017
....azz .. quanta roba.
Grazie Smash, grazie Massimo .... oggi metto alla prova e vi so dire.
Grazie ancora.
-
29-11-13, 10:22 #8
-
29-11-13, 10:34 #9
- Data Registrazione
- May 2011
- Località
- Bologna
- Messaggi
- 3,017
SMASH il tuo sembra corretto nei segnali ma si dovrebbe prestabilire un numero limitato di barre da tenere in considerazione dopo il segnale. Dopo 2/3/4 il segnale è andato. Poi mancherebbe il movimento della regressione.
Massimo ... il tuo ha i segnali invertiti ... sembra più completo ma con i segnali invertiti è difficile essere sicuri del resto.
Allego lo screen.
Ragazzi ..... un altro sforzo e ci siamo .... grazie ancora. Sta venendo proprio come volevo.
Per il Gra(e)y ho chiesto mia moglie che l'inglese lo insegna ed ha parenti USA. Mi ha detto che si scrive in entrambi modi a seconda se inglese o inglese americano. E' tipico delle differenze USA/England. La parola "mamma" si scrive con 3 vocali diverse ed è riconosciuto ugualmente.
-
29-11-13, 13:32 #10
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Ciao Claudio,
ho guardato il tuo allegato e mi sembra che sia tutto corretto.
L'indicatore ti segnala rosso -4 per dirti che quattro barre fa c'è stato un crossover segnale short.
E un -1 rosso per dirti che il segnale di short è stato negato dal nuovo crossover della regressione
lineare sulla BigBottom.
Saluti
Massimo
P.S. GREY = English UK ovvero l'inglese scolastico. Ho imparato che esiste anche GRAY. Non si finisce mai
di imparare !!!
Max avete risolto il mio problema con WeBank, perché Andrea non mi ha fatto sapere più nulla. Attendo notizie.
Saluti
Massimo