verifica di un cross
Forums › ProRealTime forum Italiano › Supporto ProBuilder › verifica di un cross
- This topic has 12 replies, 3 voices, and was last updated 3 months ago by
robertogozzi.
-
-
09/14/2025 at 5:37 PM #250810
vorrei scrivere un indicatore che mi indicasse dopo che ho avuto un cross della close sopra una media mobile a 20 giorni tramite un for mi indicasse dove nelle nove barre antecedenti questo cross della close sopra la media a 20 giorni c ‘è stato un cross al ribasso sella close sulla stessa media
grazie
09/14/2025 at 7:23 PM #250813La freccia verde verso l’alto indica il “crossover” della Chiusura in base alla media, il numero rosso sotto la freccia verde indica il numero di barre che hanno avuto luogo nel precedente “crossunder”…
BarsSince CrossUnder1234567891011121314//DefParam DrawOnLastBarOnly=TrueMA20=Average[20](Close)ATR=AverageTrueRange[14](Close) //Only for drawing purposesIf Close crosses over MA20 thenDrawArrowUp(BarIndex,High+ATR/4)Coloured("Green")Bars=BarsSince(Close crosses under MA20)If Bars<10 thenDrawText("#Bars#",BarIndex,High+ATR/8)Coloured("Red")EndIfEndIfReturn MA202 users thanked author for this post.
09/14/2025 at 7:43 PM #250815in realta a grafico vedo solo la freccia verde ma il numero non si legge
09/14/2025 at 7:47 PM #25081609/15/2025 at 9:55 AM #250831adesso devo dire che è tutto ok e torna tutto ,probabilmente si era impallato il computer,
ma perche se scrivo questo codice che allego l indicatore non mi ritorna un cross della close sotto una media mobile a 20 giorni nelle nove barre precedenti il cross della close sopra la media a 20 giorni ma mi ritorna semplicemente quando la close crossa sopra la m20
MA20=Average[20](Close)
crossdown=0
if close crosses over ma20 thenfor i=1 to 9 DO
if close[i]crosses under MA20 THEN
crossdown=1
BREAK
ENDIF
NEXT
endif
return crossdown09/15/2025 at 11:35 AM #250839Manca [i] con la media:
1if close[i]crosses under MA20[i] THENaltrimenti verifica i prezzi passati con la media corrente.
09/15/2025 at 12:34 PM #250847avevo gia verificato questa ipotesi ma il risultato è identico, a me il codice sembra scritto corretto ma evidentemente c e qualcosa di sbagliato in come è scritto
09/15/2025 at 12:42 PM #250848in pratica mi ritorna il momento in cui la close crossa sopra la media mobile ritornandomelo sia come cross al rialzo della close sulla media e sia come cross al ribasso della close sulla media
MA20=Average[20](Close)
crossdown=0
crossup=0
if close crosses over ma20 then
crossup=1for i=1 to 9 DO
if close[i]crosses under MA20[i] THEN
crossdown=1ENDIF
NEXT
endif
return crossdown as “cd”,crossup as “cu”09/15/2025 at 4:10 PM #250869Va usato 1 e -1 per vedere entrambi:
12345678910111213MA20=Average[20](Close)crossdown=0crossup=0if close crosses over ma20 thencrossup=1for i=1 to 9 DOif close[i]crosses under MA20[i] THENcrossdown=-1breakENDIFNEXTendifreturn crossdown as "cd",crossup as "cu"09/15/2025 at 5:58 PM #250883per quello che mi ero prefisso io l indicatore non funziona ti allego quello che fa l indicatore come lo hai proposto tu nel file “A1” come vedi quello che fa è indicare sia “cu” e sia “cd” nel momento in cui ho un cross al rialzo e precedentemente ho avuto un cross al ribasso entro le 9 barre fa , allora in questo caso lui segnala contemporaneamente cu e cd nella stessa barra (con lo spike che ho cerchiato di verde) pero’ se invece ho un cross al rialzo ma non ho nelle 9 barre precedenti un cross al ribasso allora lui segnala solo cu (con lo spike cerchiato di rosso in figura A1 )
mentre invece quello che vorrei ottenere io è quello descritto infigura “A2″cioe un unico spike quando ho il cross al rialzo (spike verde) e un unico spike quando ho avuto entro le 9 barre antecedenti un cross al ribasso (spike rosso)
09/16/2025 at 11:36 AM #250927Ah… deve restituirti semplicemente ogni incrocio ribassista e rialzista?
09/16/2025 at 4:20 PM #250943esattamente
09/16/2025 at 9:18 PM #250965Eccolo:
12345678910111213141516171819MA20 = Average[20,0](Close)crossdown = 0crossup = 0if close crosses over ma20 thenfor i=1 to 9 DOif close[i]crosses under MA20[i] THENcrossdown=1BREAKENDIFNEXTelsif close crosses under ma20 thenfor i=1 to 9 DOif close[i]crosses over MA20[i] THENcrossup=1BREAKENDIFNEXTendifreturn crossdown AS "Cross UYnder",crossup AS "Cross Over"1 user thanked author for this post.
-
AuthorPosts
