R05Participant
Veteran
Non riesco ad allegare il file su gbp/usd
R05Participant
Veteran
Per il dax occorre aspettare la chiusura di lunedì se superiore a quella del 19 ottobre (dato che la chiusura del 20 è superiore a quella del 19) per poter unire il minimo del 19 stesso che ho individuato al 26 settembre come da immagine.
Hai postato varie correzioni della logica, col rischio di non farci capire più niente. In particolare nel tuo post #50217 affermi cose contraddittorie, da un lato dici che il massimo deve essere superiore ai due perecedenti e successivi, ma anche alle chiusure (immagino sempre precedenti e successive), mentre con riferimento all’immagine dici che il massimo è tale perché la chiusura è superiore alle due chiusure successive e non fai riferimento a quelle precedenti, per cui sembrerebbe che le due chiusure precedenti siano ininfluenti e che sia sufficiente che solo i loro due massimi debbano essere inferiori. Ovviamente viceversa per i minimi.
Riepilogando (per i massimi, viceversa per i minimi):
- il massimo DEVE essere superiore sia ai due massimi precedenti che a quelli successivi (sinistra e destra)
- la chiusura della candela dove c’è il massimo DEVE essere superiore alla chiusura delle due candele successive (a destra), oppure anche a quelle precedenti (a sinistra)?
- la chiusura delle altre è ininfluente?
Purtroppo in programmazione la precisione è essenziale, “la casa” e “la casa” sono due frasi DIVERSE perché in una c’è un solo spazio, nell’altra due. Il cervello umano riesce a capire che sono la stessa cosa, un computer no, infatti è chiamato “lo stupido più veloce del mondo”. Certo, i programmatori possono in qualche modo fare sembrare i computer “intelligenti” creando del software particolarmente abile nell’analisi del testo (vedi i motori di ricerca). Ma, allo stato attuale, è solo apparenza.
Se la tua risposta sarà chiara ed inequivocabile proverò a realizzare qualcosa.
R05Participant
Veteran
Si Roberto hai ragione. Mi sono reso conto anche io che avevo fatto solo confusione. In definitiva ti dico questo riprendendo le tue domande:
- il massimo DEVE essere superiore sia ai due massimi precedenti che a quelli successivi (sinistra e destra)
- la chiusura della candela dove c’è il massimo DEVE essere superiore alla chiusura delle due candele successive (a destra) e basta
- la chiusura delle altre è ininfluente
Viceversa per il minimo.
Spero di essere stato più chiaro e mi scuso per la confusione creata in precedenza.
So che tu vuoi un indicatore che tracci la trendline tra i due punti, ma intanto, per mia facilità, ho creato uno screener che ti segnala dove c’è il pattern corrente e ti segnala la camdela dov’è avvenuto quello precedente, entro le ultime 50.
Se a livello di logica funziona come tu vuoi allora cercherò di trasformarlo in un indicatore che tracci anche la trendline.
ONCE MaxBars = 50
// Massimo
x1 = high[2] > high[3] and high[2] > high[4] and high[2] > high[1] and high[2] > high[0]
x2 = close[2] > close[1] and close[2] > close[0]
x = x1 and x2
// Minimo
y1 = low[2] < low[3] and low[2] < low[4] and low[2] < low[1] and low[2] < low[0]
y2 = close[2] < close[1] and close[2] < close[0]
y = y1 and y2
//
// MAXBARS indietro
FOR i = 5 TO MaxBars
// Massimo
a1 = high[2+i] > high[3+i] and high[2+i] > high[4+i] and high[2+i] > high[1+i] and high[2+i] > high[0+i]
a2 = close[2+i] > close[1+i] and close[2+i] > close[0+i]
a = a1 and a2
// Minimo
b1 = low[2+i] < low[3+i] and low[2+i] < low[4+i] and low[2+i] < low[1+i] and low[2+i] < low[0+i]
b2 = close[2+i] < close[1+i] and close[2+i] < close[0+i]
b = b1 and b2
//
IF a OR b THEN
break
ENDIF
NEXT
//
screener [(x and a) or (y and b)](i as "Candle")
R05Participant
Veteran
Gent.mo Roberto ti ringrazio del codice che hai postato su. Lo sto provando, o per lo meno sto cercando di provarlo, ma dato che lo screener non lo so usare tanto bene e dato che non vorrei fare ulteriore confusione mi potresti, gentilmente, confermare quanto segue?
Ho lanciato, come da immagine, lo screener giornaliero e mi dà i vari risultati. Ho preso eur/gbp, io lo interpreto così:
7 candele fa si è verificato il segnale, in questo caso un massimo, in corrispondenza della prima freccia rossa a partire da destra corrispondente al 12 ottobre. Poi io vado indietro e mi vado a trovare l’altro punto da unire come ho fatto con la seconda freccia rossa corrispondente al massimo più alto del 29 agosto. E’ corretta la mia interpretazione?
Non è così, lo screener verifica le condizioni sulla barra corrente, cioè se ti segnala, ad esempio, Eur/Usd, significa che sul quel TF si sta creando quel pattern, quindi la candela corrente è la più a destra, cioè la più bassa o la più alta sulla destra, quella che ha il massimo dovrebbe essere la seconda precedente, quindi se tu guardi le ultime 5 candele quella centrale è quella Maggiore/Minore.
Una volta verificata questa condizione va indietro di n candele partendo dalla quinta precedente finché non trova un pattern identico e ti dice su quale candela precedente è (devi contarle manualmente).
Comunque adesso vedo di farti un indicatore, solo che impiegherò un pò perché non ho molta familiarità col tracciamento di linee e segmenti.
Resterà poi da vedere ancora un tua richiesta, se non ricordo male, cioè che il massimo precedente, in caso di massimi, sia maggiore o minore di quello attuale. Ma per questo possiamo aspettare.
R05Participant
Veteran
Ok grande grazie gentilissimo.
Prova questo indicatore, mettendolo sul prezzo mediante la CHIAVE INGLESE che si trova in alto a sinistra del grafico, dove c’è scritto prezzo.
Per le ultime 50 barre, che puoi cambiare a piacimento, ti stampa sul grafico una freccia verde per i pattern long e rossa per quelli short.
Verifica che vada bene intanto questa parte.
DEFPARAM CalculateOnLastBars = 50
MaxBars = 50
Offset = 2 //distanza, in Pips, per stampare la freccia
// --- Prima verifica
FOR i = 0 TO MaxBars
// Massimo
x1 = high[2+i] > high[3+i] and high[2+i] > high[4+i] and high[2+i] > high[1+i] and high[2+i] > high[0+i]
x2 = close[2+i] > close[1+i] and close[2+i] > close[0+i]
x = x1 and x2
IF x THEN
DRAWARROWUP(barindex[2+i],low[2+i]-(Offset * pipsize))coloured(10,255,10)
break
ENDIF
// Minimo
y1 = low[2+i] < low[3+i] and low[2+i] < low[4+i] and low[2+i] < low[1+i] and low[2+i] < low[0+i]
y2 = close[2+i] < close[1+i] and close[2+i] < close[0+i]
y = y1 and y2
IF y THEN
DRAWARROWDOWN(barindex[2+i],high[2+i]+(Offset * pipsize))coloured(255,0,10)
break
ENDIF
NEXT
RETURN
R05Participant
Veteran
Grande è perfetto. Mi individua i punti correttamente. Grazie gentilissimo, eccezionale.