Buongiorno, è possibile tracciare una linea con queste condizioni :
esempio in un TF 30 quando il prezzo supera il massimo o il minimo del giorno precedente traccia una linea che parte dall’open odierno al massimo o minimo in quel dato momento, se poi il prezzo rintraccia la linea termina come da file allegato.
Grazie
Penso di aver compreso correttamente la tua domanda, in modo che ogni volta che l'attuale massimo giornaliero o minimo giornaliero supera i valori del giorno precedente, le linee vengono tracciate e adattate all'attuale massimo/minimo giornaliero. Ecco il codice che ho creato:
defparam drawonlastbaronly=true
if intradaybarindex=0 then
startbar=barindex
endif
if islastbarupdate then
if dhigh(0)>dhigh(1) then
drawray(startbar,dhigh(0),barindex,dhigh(0)) coloured("blue")
endif
if dlow(0)<dlow(1) then
drawray(startbar,dlow(0),barindex,dlow(0)) coloured("red")
endif
endif
return
Grazie ma non è quello che cerco.
Avrei bisogno che l’indicatore tracci una linea obliqua come nel grafico allegato con le seguenti condizioni:
1) in un TF intraday la linea (obliqua) viene tracciata/generata solo se si viene superato il massimo/minimo del giorno precedente
2) la linea ha origne (in caso di future) dall’open quindi dalle ore 0,00
3) la linea termina sul attuale massimo/minimo intraday (vedi esempio nel grafico allegato, il prezzo raggiunge il minimo attuale intraday quindi quando il prezzo ritraccia la linea termina)
Ti ringrazio
Ciao
Quindi tu vuoi considerare il giorno dalle 00:00 alle 24:00?
Eccolo:
DEFPARAM DrawOnLastBarOnly = True
ONCE HH = 0
ONCE LL = 0
ONCE HHprec = 0
ONCE LLprec = 0
ONCE Rottura = 0
ONCE Fine = 0
ONCE HHtemp = 0
ONCE LLtemp = 0
IF (OpenTime = 000000) OR (OpenTime < OpenTime[1]) THEN
HHprec = HH
LLprec = LL
HH = high
LL = low
Barra = BarIndex
Rottura = 0
Fine = 0
HHtemp = 0
LLtemp = 0
ENDIF
HH = max(HH,high)
LL = min(LL,low)
DrawSegment(Barra,HHprec,BarIndex,HHprec) coloured(0,128,0,155) style(Line,2) //Verde
DrawSegment(Barra,LLprec,BarIndex,LLprec) coloured(0,0,255,255) style(Line,2) //Blù
IF (HH CROSSES OVER HHprec) OR (HH CROSSES OVER HHtemp) THEN
Rottura = 1
Fine = BarIndex
HHtemp = HH
ENDIF
IF (LL CROSSES UNDER LLprec) OR (LL CROSSES UNDER LLtemp) THEN
Rottura = 1
Fine = BarIndex
LLtemp = LL
ENDIF
IF Rottura THEN
DrawSegment(Barra,HHprec,Fine,LLprec) coloured(255,0,0,255) style(Line,2) //Rosso
ENDIF
RETURN
Scusami ma non è quello che cerco, ti allego una foto di come dovrebbe essere.
Grazie
in un TF 30 di un future USA dopo l’apertura ore 00,00 quando il prezzo nell’arco della giornata supera il massimo o il minimo del giorno precedente traccia una linea che parte dall’open della candela 00,00 odierno al massimo o minimo intraday in quel dato momento, se poi il prezzo rintraccia la linea termina.
ricapitolando le condizioni sono:
1) in un TF intraday la linea (obliqua) viene tracciata/generata solo se si viene superato il massimo/minimo del giorno precedente
2) la linea ha origne (in caso di future) dall’open della prima candela quindi dalle ore 00.00
3) la linea termina sul attuale massimo/minimo intraday (vedi esempio nel grafico allegato, il prezzo raggiunge il minimo attuale intraday quindi quando il prezzo ritraccia la linea termina)
Eccolo modificato:
DEFPARAM DrawOnLastBarOnly = True
ONCE HH = 0
ONCE LL = 0
ONCE HHprec = 0
ONCE LLprec = 0
ONCE Rottura = 0
//IF BarIndex <= 999999 THEN
IF (OpenTime = 000000) OR (OpenTime < OpenTime[1]) THEN
HHprec = HH
LLprec = LL
HH = high
LL = low
Barra = BarIndex
Rottura = 0
Apertura = open
IF HH > HHprec THEN
Rottura = 1
Prezzo = high
Fine = BarIndex
ENDIF
IF LL < LLprec THEN
Rottura = 2
Prezzo = high
Fine = BarIndex
ENDIF
ENDIF
HH = max(HH,high)
LL = min(LL,low)
IF (HH CROSSES OVER HHprec) AND (Rottura <> 1) THEN
Rottura = 1
Prezzo = high
Fine = BarIndex
ELSIF (LL CROSSES UNDER LLprec) AND (Rottura <> 2) THEN
Rottura = 2
Prezzo = low
Fine = BarIndex
ENDIF
IF Rottura = 1 THEN
IF high > Prezzo THEN
Prezzo = high
Fine = BarIndex
ENDIF
ELSIF Rottura = 2 THEN
IF low < Prezzo THEN
Prezzo = low
Fine = BarIndex
ENDIF
ENDIF
//ENDIF
DrawSegment(Barra,HHprec,BarIndex,HHprec) coloured(0,128,0,155) style(Line,2) //Verde
DrawSegment(Barra,LLprec,BarIndex,LLprec) coloured(0,0,255,255) style(Line,2) //Blù
IF Rottura THEN
DrawSegment(Barra,Apertura,Fine,Prezzo) coloured(255,0,0,255) style(Line,2) //Rosso
ENDIF
RETURN
Le linee 7 e 49 le ho commentate, ma le ho lasciate per il debugging, in modo da fermarsi ad una barra specifica e poi mandarlo avanti volta per volta.
Quando capita che la prima candela della giornata faccia anche un nuovo Minimo o Massimo rispetto al giorno precedente, verrà stampata una barra sopra/sotto alla barra stessa.
Grazie mille, se possibile avrei necessità di aggiungere una nuova linea che si genera solo quando il prezzo supera il massimo/minimo intraday con origine dove è terminata la prima linea, ad esempio la prima linea si è generata quando il prezzo ha superato il minimo daily di ieri, succesivamente nell’arco della giornata il prezzo supera il massimo intraday quindi viene generata la seconda linea. Allego file con esempio.
Grazie grazie.
Quindi se non è stata attivata la prima linea, la seconda NON deve essere stampata, anche se il Massimo/Minimom intraday viene superato?
Esatto, la seconda linea si attiva, se ci sonono le condizioni, solo dopo la prima
Eccolo (la linea è celeste):
DEFPARAM DrawOnLastBarOnly = True
ONCE HH = 0
ONCE LL = 0
ONCE HHprec = 0
ONCE LLprec = 0
ONCE Rottura = 0
ONCE Rottura2= 0
IF BarIndex <= 585000 THEN
IF (OpenTime = 000000) OR (OpenTime < OpenTime[1]) THEN
HHprec = HH
LLprec = LL
HH = high
LL = low
Barra = BarIndex
Rottura = 0
Rottura2 = 0
Apertura = open
IF HH > HHprec THEN
Rottura = 1
Prezzo = high
Fine = BarIndex
ENDIF
IF LL < LLprec THEN
Rottura = 2
Prezzo = high
Fine = BarIndex
ENDIF
ENDIF
//
IF (Rottura > 0) AND (Rottura2 = 0) THEN
IF close > HH THEN
Rottura2 = 1
ELSIF close < LL THEN
Rottura2 = 2
ENDIF
ENDIF
//
HH = max(HH,high)
LL = min(LL,low)
IF (HH CROSSES OVER HHprec) AND (Rottura <> 1) THEN
Rottura = 1
Prezzo = high
Fine = BarIndex
ELSIF (LL CROSSES UNDER LLprec) AND (Rottura <> 2) THEN
Rottura = 2
Prezzo = low
Fine = BarIndex
ENDIF
IF Rottura = 1 THEN
IF high > Prezzo THEN
Prezzo = high
Fine = BarIndex
ENDIF
ELSIF Rottura = 2 THEN
IF low < Prezzo THEN
Prezzo = low
Fine = BarIndex
ENDIF
ENDIF
ENDIF
DrawSegment(Barra,HHprec,BarIndex,HHprec) coloured(0,128,0,155) style(Line,2) //Verde
DrawSegment(Barra,LLprec,BarIndex,LLprec) coloured(0,0,255,255) style(Line,2) //Blù
IF Rottura > 0 THEN
DrawSegment(Barra,Apertura,Fine,Prezzo) coloured(255,0,0,255) style(Line,2) //Rosso
IF Rottura2 = 1 THEN
DrawSegment(Fine,Prezzo,BarIndex,HH) coloured(135,206,255,255) style(Line,2) //Celeste
ELSIF Rottura2 = 2 THEN
DrawSegment(Fine,Prezzo,BarIndex,LL) coloured(135,206,255,255) style(Line,2) //Celeste
ENDIF
ENDIF
RETURN
Grazie Roberto, è corretto alla linea 25 Prezzo = high ??
Provando il codice mi sono accorto di un errore, allego immagine, la retta disegnata non è corretta prima doveva disegnare la retta 1 (in quanto ha preso prima il massimo) e poi la retta 2 perché ha preso anche il minimo ma successivamente.