verifica di un cross

Viewing 13 posts - 1 through 13 (of 13 total)
  • Author
    Posts
  • #250810 quote
    Antonio Garbinesi
    Participant
    Average

    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

    #250813 quote
    JS
    Participant
    Senior

    La 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”…

    //DefParam DrawOnLastBarOnly=True
    
    MA20=Average[20](Close)
    ATR=AverageTrueRange[14](Close) //Only for drawing purposes
    
    If Close crosses over MA20 then
    DrawArrowUp(BarIndex,High+ATR/4)Coloured("Green")
    Bars=BarsSince(Close crosses under MA20)
    If Bars<10 then
    DrawText("#Bars#",BarIndex,High+ATR/8)Coloured("Red")
    EndIf
    EndIf
    
    Return MA20
    Iván González and robertogozzi thanked this post
    #250815 quote
    Antonio Garbinesi
    Participant
    Average

    in realta a grafico vedo solo la freccia verde ma il numero non si legge

    #250816 quote
    JS
    Participant
    Senior

    Puoi mostrare il grafico con le impostazioni…?

    #250831 quote
    Antonio Garbinesi
    Participant
    Average

    adesso 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 then

    for i=1 to 9 DO
    if close[i]crosses under MA20 THEN
    crossdown=1
    BREAK
    ENDIF
    NEXT
    endif
    return crossdown

    #250839 quote
    robertogozzi
    Moderator
    Master

    Manca [i] con la media:

    if close[i]crosses under MA20[i] THEN

    altrimenti verifica i prezzi passati con la media corrente.

    #250847 quote
    Antonio Garbinesi
    Participant
    Average

    avevo 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

    #250848 quote
    Antonio Garbinesi
    Participant
    Average

    in 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=1

    for i=1 to 9 DO
    if close[i]crosses under MA20[i] THEN
    crossdown=1

    ENDIF

    NEXT
    endif
    return crossdown as “cd”,crossup as “cu”

    #250869 quote
    robertogozzi
    Moderator
    Master

    Va usato 1 e -1 per vedere entrambi:

    MA20=Average[20](Close)
    crossdown=0
    crossup=0
    if close crosses over ma20 then
       crossup=1
       for i=1 to 9 DO
          if close[i]crosses under MA20[i] THEN
             crossdown=-1
             break
          ENDIF
       NEXT
    endif
    return crossdown as "cd",crossup as "cu"
    #250883 quote
    Antonio Garbinesi
    Participant
    Average

    per 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)

    #250927 quote
    robertogozzi
    Moderator
    Master

    Ah… deve restituirti semplicemente ogni incrocio ribassista e rialzista?

    #250943 quote
    Antonio Garbinesi
    Participant
    Average

    esattamente

    #250965 quote
    robertogozzi
    Moderator
    Master

    Eccolo:

    MA20 = Average[20,0](Close)
    crossdown = 0
    crossup   = 0
    if close crosses over ma20 then
       for i=1 to 9 DO
          if close[i]crosses under MA20[i] THEN
             crossdown=1
             BREAK
          ENDIF
       NEXT
    elsif close crosses under ma20 then
       for i=1 to 9 DO
          if close[i]crosses over MA20[i] THEN
             crossup=1
             BREAK
          ENDIF
       NEXT
    endif
    return crossdown AS "Cross UYnder",crossup AS "Cross Over"
    Iván González thanked this post
Viewing 13 posts - 1 through 13 (of 13 total)
  • You must be logged in to reply to this topic.

verifica di un cross


ProBuilder: Indicatori & Strumenti Personalizzati

New Reply
Summary

This topic contains 12 replies,
has 3 voices, and was last updated by robertogozzi
4 months, 2 weeks ago.

Topic Details
Forum: ProBuilder: Indicatori & Strumenti Personalizzati
Language: Italian
Started: 09/14/2025
Status: Active
Attachments: 6 files
Logo Logo
Loading...