Niente da fare…ho provato in tutti i modi possibili mettendo puntaprec=0 provando su ogni riga, ma
i risultati sono sempre che o il nuovo indicatore “rialzo” mi da come risultato 1 ogni volta che l’indicatore vpunta ha un valore>0 oppure non mi da alcun risultato oppure mi da 1 all’inizio del grafico e poi per tutto il resto rimane sempre a zero anche quando una punta supera la precedente.
Prova a spiegarmi meglio cosa vuoi che faccia.
Roberto buongiorno!
Secondo me la cosa più semplice (e dovevo già capirlo dall’inizio) è darti direttamente il codice vpunta (valore punta)
E’ l’indicatore che sono riuscito a costruire e che restituisce il prezzo di mercato di ogni nuova punta. Credo che debba anche darti il primo indicatore (quello che segnala ogni nuova punta e restituisce semplicemente 1 o 0 quando ne identifica una nuova. Questi 2 mi servono per costruire quello di cui abbiamo discusso in questi gg…in effetti ciascuno prende il codice del precedente e ne aggiunge una parte.
Il primo indicatore segna la punta con 1 o 0 una volta formata, il secondo ne segna il valore e deriva dal primo e il terzo dovrebbe appunto segnalarmi con 1 o 0 ogni qualvolta una punta mi supera la precedente.
Parto dal primo che individua le punte:
DEFPARAM CALCULATEONLASTBARS=50000
PUNTASU = 0
IF CLOSE[1]>CLOSE AND CLOSE[2]<CLOSE[1]THEN
PUNTASU=1
ENDIF
RETURN PUNTASU
ok, ora il secondo che utilizza il primo e che restituisce il valore di mercato della punta:
DEFPARAM CALCULATEONLASTBARS=50000
VPUNTA=0
IND=CALL PUNTASU
IF IND=1 THEN
VPUNTA=CLOSE[1]
ENDIF
RETURN VPUNTA
ecco…ora il terzo che volevo chiamare rialzo che segna con 1 ogni qualvolta l’ultima “vpunta” che si crea (ma anche quelle in passato devono essere segnalate) e con zero quindi nulla se quella che si crea è inferiore alla precedente (e così anche nel passato).
Forse così sono riuscito meglio a farti capire tutto il concetto; sicuramente ci sarà anche un modo per arrivare a questo punto utilizzando un codice solo, ma sono già contento di essere arrivato fin qui per le poche conoscenze che ho di programmazione.
Buona domenica e grazie per la tua sempre presente disponibilità.
Perfatto, adesso è chiaro cosa vuoi fare:
Once INDprec = 0
IND=CALL VPUNTA
RIALZO=0
IF IND>INDprec THEN
RIALZO=1
ENDIF
INDprec = IND
RETURN RIALZO
Buongiorno Roberto! grazie per il codice che ho testato stamattina…purtroppo non funziona ancora correttamente.
In pratica segna 1 ogni volta che vpunta punta segna una punta…ma non prende in considerazione il prezzo. Sembra non fare confronti tra le punte.
Le segna tutte… scusami…ti sto tirando matto…
Roberto buongiorno, non c’è dunque una soluzione fattibile?
Non ho guardato, mi puoi fare un grafico per farmi capire cosa intendi ottenere?
Se fai partire l’indicatore vpunta e lo metti a barre visualizzato sotto al prezzo, vedrai che visualizzerà delle barre di altezza diverse intervallate tra di loro da spazi (buchi bianchi) quando non viene rilevata la punta quindi come valore ridà ovviamente zero. Bene, il nuovo indicatore, deve semplicemente dirmi con 1 quando l’ultima barra che si crea con l’ind vpunta, è superiore a quella precedente. E zero invece quando non la supera. Quando la barra precedente supera in altezza (che poi non è altro che il valore del prezzo) l’ultima che viene a crearsi, non deve dar alcun risultato. Deve rimanere a zero…
Mi serve per visualizzare immediatamente quando l’ultima punta che si crea supera come prezzo quella precedente, quindi mi conferma il rialzo del prezzo….
Non saprei come fartelo capire con un grafico…
P.s. per visualizzare correttamente sotto al grafico l’indicatore vpunta, avrai bisogno anche dell’altro indicatore che ti ho scritto in precedenza.
Ti ringrazio
Tutti e tre fanno la stessa cosa, in quanto ognuno chiama l’altro con CALL, quindi sono perfettamente identici!
Il primo trova la punta, il secondo semplicemente restituisce il valore del primo.
Quello che ho fatto io richiama il secondo, per cui si ottiene sempre lo stesso dato.
Perché i primi due sono identici, cosa dovrebbe fare il secondo di diverso dal primo?
I primi 2 non sono identici…sembrano…hihih
Il primo da come risultato 1 o 0 il secondo da come risultato il prezzo effettivo della punta e non 1 o 0.
Il terzo dovrebbe confrontare appunto questi vari prezzi (ottenuti dal secondo) e dirmi quando l’ultimo generato è più alto del precedente per visualizzarmi il rialzo. Se ciò avviene dovrebbe risultsrmi 1, se non avviene….zero
Ok, il terzo deve essere così:
Once PrezzoPrec = 0
Prezzo=CALL VPUNTA
RIALZO=0
IF Prezzo > 0 THEN
IF Prezzo>PrezzoPrec THEN
RIALZO=1
ENDIF
PrezzoPrec = Prezzo
ENDIF
RETURN RIALZO
Esattamente così!
Ti ringrazio Roberto per il tuo fondamentale aiuto!
Buona giornata=)