Buongiorno, vorrei realizzare uno screener per individuare il pattern oops di Williams. Per fare un po’ di analisi sul passato, meglio se il individua anche pattern già trascorsi e non solo quelli in atto. Avete suggerimenti? Grazie
c1 = close > close[1]
c2 = close[1] < open[1]
c3 = close[2] < open[2]
c4 = close[3] < open[3]
c5 = close[4] < open[4]
c6 = open < low[1]
cx = c1 and c2 and c3 and c4 and c5 and c6
if cx then
SCREENER (close as "chiuso")
endif
Vorrei eseguire questo codice in modo che controlli non solo le ultimissime barre ma ad esempio partendo 50 barre indietro e avanzando fino ad oggi. Come posso integrarlo? grazie
//c1 = close > close[1]
c2 = close[1] < open[1]
c3 = close[2] < open[2]
c4 = close[3] < open[3]
//c5 = close[4] < open[4]
c6 = open < low[1]*0.95
c7 = high > low[1]
//cx = c1 and c2 and c3 and c4 and c5 and c6
cx = c2 and c3 and c4 and c6 and c7
if cx then
DRAWARROWUP(barindex,low)COLOURED(255, 0, 0)
endif
RETURN
Questo è l’indicatore, ora dovrei riuscire a fare fare uno screener con queste regole ma che analizzi anche il passato (per vedere di fare qualche statistica….)
Al primo post togli le righe 11 e 13 e sostituisci la 12 con:
SCREENER[cx](close as "chiuso")
Ok, grazie
Non riesco comunque a fare uno screen sui dati storici….
Lo screener non lavora sullo storico, per quello devi trasformare lo screener in indicatore con:
RETURN cx
al posto di SCREENER.
Ok, però poi posso richiamare l’indicatore nello screener in modo da filtrare le azioni in cui compare il pattern? Giusto? Grazie ancora
Perché lo devi richiamare, dal momento che è già incorporato nello screener?
Li lanci entrambi, uno ti da i segnali sul grafico, l’altro ti evidenzia gli strumenti/titoli trovati.
Ho risolto in manierra brutale….
INDICATORE
//c1 = close[i] > close[i+1]
c2 = close[i+1] < open[i+1]
c3 = close[i+2] < open[i+2]
c4 = close[i+3] < open[i+3]
//c5 = close[i+4] < open[i+4]
c6 = open[i] < low[i+1]//*0.98
c7 = high[i] > low[i+1]
c8 = close[i] > open[i]
//cx = c1 and c2 and c3 and c4 and c5 and c6
cx = c2 and c3 and c4 and c6 and c7 and c8
if cx then
DRAWARROWUP(barindex,low)COLOURED(255, 0, 0)
endif
RETURN 1
SCREENER
for i=0 to 100 do
myValue = CALL "OopsIndicator"[i]
SCREENER[myValue] (close as "chiuso")
next
1. Non vedo a cosa ti possa servire questo codice, non capisco la logica. Arriva sempre a 100 e ti restituisce sempre il risultato di 100 barre prima, mentre uno screener serve per i dati live.
2. Non capisco a che ti serva la CALL, specie in un ciclo, se non per rallentare il codice, dal momento che lo screener aveva già il codice al proprio interno.
3. nell’indicatore restituisci sempre 1 con RETURN, per cui il risultato risulta semnpre vero anche quando non dovrebbe esserlo.