indicatore Mean Deviation Loop

Viewing 1 post (of 1 total)
  • Author
    Posts
  • #257453 quote
    brian gilbert
    Participant
    New

    Salve a tutti, ieri ho trovato un nuovo indicatore su tradingview basato sul momentum e sulle bande di bollinger che mi sembra molto interessante, e mi piacerebbe sapere se lo si può tradurre in linguaggio prorealtime per poterlo testare su alcuni grafici…. ecco il link:

    https://it.tradingview.com/script/cuOxHXe3-Mean-Deviation-Loop-Lyro-RS/

    Ed ecco il codice pine-script:


    //

    Importazione libreria TradingView/ta/9 come ta    

    import LyroRS/LMAs/1 come DynamicMA   



    // Gruppi di input

    indi_settings_g = “Gruppi di input”   

    bb_g = “Gruppi di input”   

    fl_g = “Gruppi di input”   

    combined_sig_g = “Gruppi di input 𝗦𝗜𝗚𝗡𝗔𝗟”   

    table_g = “𝗧𝗔𝗕𝗟𝗘”   

    colors_g = “𝗖𝗢𝗟𝗢𝗥𝗦”  




    // Ingressi


    // — Impostazioni indicatore

    source = input.source ( close , “Source” , tooltip = “Seleziona la sorgente del prezzo (ad esempio, chiusura, apertura, massimo,  minimo) utilizzata per i calcoli.” , group = indi_settings_g )      


    signal_mode = input.string ( “Bande di Bollinger” , “Modalità segnale” ,     tooltip = “Seleziona la logica utilizzata per generare i segnali: BB, Loop o Segnale combinato.” , group = indi_settings_g , options = [ “Bande di Bollinger” , “Ciclo For” , “Segnale combinato” ])



    // — BB

    ma_benchmark_type_bb = input.string ( “EMA” , “Seleziona media mobile BB” , options = [ “SMA” , “EMA” , “WMA” , “VWMA” , “DEMA” , “TEMA” , “RMA” , “HMA” , “LSMA” , “SMMA” , “ALMA” , “ZLSMA” , “FRAMA” , “KAMA” , “JMA” , “T3” ] , group = bb_g , tooltip = “Scegli un tipo di media mobile da applicare nei calcoli .” )                      

    mad_length_bb = input.int ( 25 , “Lunghezza media mobile BB” , tooltip = “Il periodo di lookback per il calcolo della deviazione media assoluta (MAD) attorno alla media mobile selezionata (per il calcolo in stile Bollinger Band).” , group = bb_g )      

    mad_multp = input.float ( 1.4 , “+ Moltiplicatore” , tooltip = “Un moltiplicatore applicato alla distanza MAD dalla  media per creare la banda MAD superiore.” , group = bb_g )      

    mad_multn = input.float ( 1 , “- Moltiplicatore” , tooltip = “Un moltiplicatore applicato alla distanza MAD dalla  media per creare la banda MAD inferiore.” , group = bb_g )     



    // — Ciclo For

    ma_benchmark_type_fl = input.string ( “ALMA” , “Seleziona media mobile BB” , options = [ “SMA” , “EMA” , “WMA” , “VWMA” , “DEMA” , “TEMA” , “RMA” , “HMA” , “LSMA” , “SMMA” , “ALMA” , “ZLSMA” , “FRAMA” , “KAMA” , “JMA” , “T3” ] , group = fl_g , tooltip = “Seleziona un tipo di media mobile utilizzato nei calcoli del ciclo For.” )                      

    mad_length_fl = input.int ( 10 , “Lunghezza del ciclo For” , tooltip = “Il periodo di lookback per il calcolo della deviazione assoluta media (MAD) attorno alla media mobile selezionata (calcolo in stile ciclo For).” , group = fl_g )     


    a_ = input.int ( 10 , “Da” , tooltip = “Imposta l’indice iniziale per l’iterazione del ciclo.” , group = fl_g )      

    b_ = input.int ( 60 , “A” , tooltip = “Imposta l’indice finale per l’iterazione del ciclo.” , group = fl_g )     


    Threshold_L_Fl = input.int ( 23 , “Soglia lunga” , step = 1 , tooltip = “Definisce il livello di soglia al di sopra del quale viene rilevato un trend rialzista.” , group = fl_g )       

    Threshold_S_Fl = input.int ( 3 , “Soglia corta” , step = 1 , tooltip = “Definisce il livello di soglia al di sotto del quale viene rilevato un trend ribassista.” , group = fl_g )      



    // — Soglia del segnale combinato_L_C

    = input.float ( 0 , ” Soglia lunga” , step = 0.01 ,      tooltip = “Il segnale combinato deve essere ≥ questo per attivare un  segnale lungo.” , group = combined_sig_g , maxval = 1 , minval = 0 )

      

       


    Threshold_S_C = input.float ( 0 , “Soglia breve” , step = 0.01 ,      tooltip = “Il segnale combinato deve essere < questo per attivare un  segnale breve.” , group = combined_sig_g , maxval = 0 , minval = -1 )



    // — Tabelle

    fo = input.bool ( false , ‘Forza sovrapposizione tabella’ , display = display.none , group = table_g , tooltip = ‘Consente di forzare la sovrapposizione della tabella sul grafico .’ )            

    enable_table = input.bool ( true , ” , display = display.none , group = table_g , inline = “T” )           

    pos_table = input.string ( ‘Centro destra’ , ‘Tabella modalità trend MAD ‘ , options = [ ‘In alto a sinistra’ , ‘Centro sinistra’ , ‘In basso a sinistra’ , ‘ In alto a destra’ , ‘Centro destra’ , ‘ In basso a destra’ , ‘Al centro in alto’ , “Centro centrale” , ‘Centro inferiore’ ] , group = table_g , display = display.none , inline = “T” )                       

    table_size_input = input.string ( “Normale” , ” , options = [ “Enorme” , “Grande” , “Normale” , “Piccolo” , “Minuscolo” ] , group = table_g , tooltip = “Impostazioni per la tabella Modalità di tendenza MAD.” , display = display.none , inline = “T” )                  





    // Input colore

    ColMode = input.string ( “Mystic” , “Custom Color Palette” , inline = “drop” , options = [ “Classic” , “Mystic” , “Accented” , “Royal” ] , display = display.none , group = colors_g , tooltip = “Scegli uno schema di colori predefinito per la visualizzazione degli indicatori.” )            


    cpyn = input.bool ( true , “Usa tavolozza personalizzata” , tooltip = “Abilita la selezione manuale di colori personalizzati per i segnali di tendenza.” , group = colors_g , display = display.none )        

    cp_UpC = input.color ( #00ff00 , “Personalizza su” , inline = “Tavolozza personalizzata” , tooltip = “Imposta un colore personalizzato per i segnali rialzisti.” , group = colors_g , display = display.none )          

    cp_DnC = input.color ( #ff0000 , “Personalizza giù” , inline = “Tavolozza personalizzata” , tooltip = “Imposta un colore personalizzato per i segnali ribassisti.” , group = colors_g , display = display.none )         




    // Colori

    colore UpC = na    

    colore DnC = na   


    cambia ColMode  “Classico” => UpC := #00E676 DnC := #880E4F “Mistico” => UpC := #30FDCF DnC := #E117B7 “Accentato” => UpC := #9618F7 DnC := #FF0078 “Reale” => UpC := #FFC107 DnC := #673AB7



    se cpyn  UpC := cp_UpC DnC := cp_DnC

     


    // Tavolo


    // — Definizione della dimensione della tabella

    var string table_size = na    



    // — Cambio dimensione tabella

    switch table_size_input  “Enorme” => table_size := size.huge “Grande” => table_size := size.large “Normale” => table_size := size.normal “Piccolo” => table_size := size.small “Minuscolo” => table_size := size.tiny

         

            


    // — Posizione di commutazione

    pot ( posizione ) =>  var pos = posizione interruttore ‘In alto a sinistra’ = > position.top_left ‘In centro a sinistra’ => position.middle_left ‘In basso a sinistra’ = > position.bottom_left ‘In alto a destra’ = > position.top_right ‘In centro a destra’ => position.middle_right ‘In basso a destra’ = > position.bottom_right ‘In alto al centro’ => position.top_center “In centro al centro” => position.middle_center ‘In basso al centro’ => position.bottom_center pos

            


    // Funzione di deviazione assoluta media

    mad ( src , benchmark , length ) =>    sum_abs_diff = 0.0 per i = 0 a length – 1 diff = math.abs ( src [ i ] -benchmark ) sum_abs_diff := sum_abs_diff + diff sum_abs_diff / length

          


    // Sistema    For Loop ( src , a , b ) => totale = 0,0 per i = da a a b di 1 totale += ( src > src [ i ] ? 1 : -1 ) totale totale

           


    // Cambio media mobile

    ma_switch ( src , lunghezza , tipo_media ) =>    media = switch tipo_media “SMA” => DynamicMA . SMA ( src , lunghezza ) “EMA” => DynamicMA . EMA ( src , lunghezza ) “WMA” => DynamicMA . WMA ( src , lunghezza ) “VWMA” => DynamicMA . VWMA ( src , volume , lunghezza ) “DEMA” => DynamicMA . DEMA ( src , lunghezza ) “TEMA” => DynamicMA . TEMA ( src , lunghezza ) “RMA” => DynamicMA . RMA ( src , lunghezza ) “HMA” => DynamicMA . HMA ( src , lunghezza ) “LSMA” => DynamicMA . LSMA ( src , lunghezza , 0 ) “SMMA” => DynamicMA . SMMA ( src , lunghezza ) “ALMA” => DynamicMA . ALMA ( src , lunghezza , 0 , 20 ) “ZLSMA” => DynamicMA . ZLSMA ( src , lunghezza ) “FRAMA” => DynamicMA . FRAMA ( src , lunghezza ) “KAMA” => DynamicMA . KAMA ( src , lunghezza ) “JMA” => DynamicMA . JMA ( src , lunghezza , 0.5 ) “T3” = > DynamicMA .T3 ( src ,

           


                  

                 lunghezza , 0,5 ) 



    // Elaborazione finale


    // — Definizione delle variabili

    avg_bb = ma_switch ( source , mad_length_bb , ma_benchmark_type_bb )     

    avg_fl = ma_switch ( source , mad_length_fl , ma_benchmark_type_fl )    


    mad_value = mad ( sorgente , avg_bb , mad_length_bb )     

    mad2 = mad ( sorgente , avg_fl , mad_length_fl )    



    // — BB 

    bb_positive_band = avg_bb + ( mad_value * mad_multp )       

    bb_negative_band = avg_bb – ( mad_value * mad_multn )      



    // Ciclo For

    mad_w_src = ma_switch ( source * mad2 , mad_length_fl , ma_benchmark_type_fl ) / ma_switch ( mad2 , mad_length_fl , ma_benchmark_type_fl ) // MAD combinato con la sorgente dell’indicatore           

    mad_fl = system ( mad_w_src , a_ , b_ )    



    // Variabile punteggio

    var int score = 0     

    var int bb_score = 0     

    var int fl_score = 0     

    var int combined_signal = 0    


    // Condizioni

    // — BB

    se ta.crossover ( sorgente , bb_positive_band )   bb_score := 1

          


    se ta.crossunder ( sorgente , bb_negative_band )   bb_score := -1

          




    se signal_mode == “Bande di Bollinger”    se ta.crossover ( sorgente , bb_positive_band ) punteggio := 1

          

              


        se ta.crossunder ( sorgente , bb_negative_band )   punteggio := -1

              



    // — FL

    se ta.crossover ( mad_fl , Threshold_L_Fl )   fl_score := 1

          


    se ta.crossunder ( mad_fl , Threshold_S_Fl )   fl_score := -1

          




    se signal_mode == “Ciclo For”    se ta.crossover ( mad_fl , Threshold_L_Fl ) punteggio := 1

          

              


        se ta.crossunder ( mad_fl , Threshold_S_Fl )   punteggio := -1

              




    // — Segnale combinato

    c_signal = math.avg ( bb_score , fl_score )   


    se ta.crossover ( c_signal , Threshold_L_C )   combined_signal := 1

          



    se ta.crossunder ( c_signal , Threshold_S_C )   combined_signal := -1

          




    se signal_mode == “Segnale combinato”    se ta.crossover ( c_signal , Threshold_L_C ) punteggio := 1

          

              


        se ta.crossunder ( c_signal , Threshold_S_C )   punteggio := -1

              





    // Colore del grafico

    pc = punteggio == 1 ? UpC : punteggio == -1 ? DnC : colore.grigio               

    pc_bb = punteggio_bb == 1 ? UpC : punteggio_bb == -1 ? DnC : colore.grigio               

    pc_fl = punteggio_fl == 1 ? UpC : punteggio_fl == -1 ? DnC : colore.grigio               

    pc_combined = segnale_combinato == 1 ? UpC : segnale_combinato == -1 ? DnC : colore.grigio              




    // Tabelle

    var table mode_stat_table = na    



    // — Forza le condizioni di sovrapposizione

    se fo // ‘fo’ è un input, ma utilizzato in un blocco if, non  direttamente in table.new   mode_stat_table := table.new ( pot ( pos_table ) , 100 , 100 , frame_width = 1 , frame_color = color.gray , force_overlay = true , border_color = color.gray , border_width = 1 )

                           


    altrimenti mode_stat_table := table.new ( pot ( pos_table ) , 100 , 100 , frame_width = 1 , frame_color = color.gray , force_overlay = false , border_color = color.gray , border_width = 1 )

                           




    // — Celle della tabella

    if enable_table  table.cell ( mode_stat_table , 0 , 0 , ‘Tabella delle modalità di tendenza MAD | 𝓛𝓎𝓇𝓸 𝓡𝓢’ , text_color = color.white , bgcolor = #000000 , text_size = table_size ) table.cell ( mode_stat_table , 1 , 0 , ” , text_color = color.white , bgcolor = #000000 , text_size = table_size )

                  

                  



        table.cell ( mode_stat_table , 0 , 1 , ‘Modalità:’ , text_color = color.white , bgcolor = #000000 , text_size = table_size )           table.cell ( mode_stat_table , 0 , 2 , ‘Bande di Bollinger’ , text_color = color.gray , bgcolor = #000000 , text_size = table_size ) table.cell ( mode_stat_table , 0 , 3 , ‘Ciclo For’ , text_color = color.gray , bgcolor = #000000 , text_size = table_size ) table.cell ( mode_stat_table , 0 , 4 , ‘Segnale combinato’ , text_color = color.gray , bgcolor = #000000 , text_size = table_size )

                  

                  

                  


        table.cell ( mode_stat_table , 1 , 1 , ‘Segnali:’ , text_color = color.white , bgcolor = #000000 , text_size = table_size )           table.cell ( mode_stat_table , 1 , 2 , bb_score == 1 ? “⬆️Lungo ⬆️” : bb_score == -1 ? “⬇️Breve ⬇️” : na , text_color = pc_bb , bgcolor = #000000 , text_size = table_size ) table.cell ( mode_stat_table , 1 , 3 , fl_score == 1 ? “📈Su 📈” : fl_score == -1 ? “📉Giù 📉” : na , text_color = pc_fl , bgcolor = #000000 , text_size = table_size ) table.cell ( mode_stat_table , 1 , 4 , combined_signal == 1 ? “🚀Trend rialzista 🚀” : combined_signal == -1 ? “🪂Trend ribassista 🪂” : na , text_color = pc_combined , bgcolor = #000000 , text_size = table_size )

                              

                              

                               


        tabella.unione_celle ( modalità_stat_tabella , 0 , 0 , 1 , 0 )    



    // Trame


    // — Grafico delle bande di Bollinger

    plot ( bb_positive_band , color = color.new ( UpC , 50 ) , title = “Banda positiva” , display = display.pane + display.price_scale , force_overlay = true )             

    plot ( bb_negative_band , color = color.new ( DnC , 50 ) , title = “Banda negativa” , display = display.pane + display.price_scale , force_overlay = true )             

    plot ( avg_bb , color = pc_bb , title = “Media mobile” , force_overlay = true )        

    plot ( avg_bb , color = color.new ( pc_bb , 85 ) , title = “Effetto bagliore bande di Bollinger 1” , linewidth = 10 , force_overlay = true , display = display.pane )              



    // — Grafico del ciclo For

    plot ( mad_fl , color = pc_fl , title = “Ciclo For MAD” )      

    plot ( mad_fl , color = color.new ( pc_fl , 75 ) , title = “Effetto bagliore del ciclo For” , linewidth = 10 , display = display.pane )           




    plot ( Threshold_L_Fl , color = UpC , title = “Soglia lunga” , display = display.pane )        

    plot ( Threshold_S_Fl , color = DnC , title = “Soglia corta” , display = display.pane )       



    plotshape ( ta.crossover ( score , 0 ) , title = “Segnale di acquisto” , location = location.belowbar ,    style = shape.labelup , text = “𝓛𝓸𝓷𝓰” , textcolor = #000000 , size = size.small , color = UpC , force_overlay = true , display = display.pane )

                  

                  


    plotshape ( ta.crossunder ( score , 0 ) , title = “Segnale di vendita” , location = location.abovebar ,    style = shape.labeldown , text = “𝓢𝓱𝓸𝓻𝓽” , textcolor = #000000 , size = size.small , color = DnC , force_overlay = true , display = display.pane )


    barcolor ( pc )

    plotcandle ( aperto , alto , basso , chiuso , colore = pc , colore stoppino = pc , colore bordo = pc , force_overlay = true , titolo = “Traccia candela” , display = display.pane )               



    // Avvisi

    alertcondition ( punteggio == 1 e punteggio [ 1 ] != 1 , “Tendenza deviazione assoluta media – Lunga” , “La tendenza della deviazione assoluta media è lunga {{exchange} }:{{ticker}}” )         

    alertcondition ( punteggio == -1 e punteggio [ 1 ] != -1 , “Tendenza deviazione assoluta media – Corta” , “La tendenza della deviazione assoluta media è corta {{exchange }}:{{ticker}}” )        

Viewing 1 post (of 1 total)
  • You must be logged in to reply to this topic.

indicatore Mean Deviation Loop


ProBuilder: Indicatori & Strumenti Personalizzati

New Reply
Author
Summary

This topic contains 1 voice and has 0 replies.

Topic Details
Forum: ProBuilder: Indicatori & Strumenti Personalizzati
Language: Italian
Started: 02/03/2026
Status: Active
Attachments: No files
Logo Logo
Loading...