PERIODO VARIABILE DINAMICO: vogliamo collaborare per crearcelo assieme ?

Collapse
X
 
  • Ora
  • Show
Clear All
new posts
  • maxmax68
    Senior Member

    • Sep 2013
    • 186

    #1

    PERIODO VARIABILE DINAMICO: vogliamo collaborare per crearcelo assieme ?

    Buongiorno a tutti,
    questo post è aperto alle idee di tutti gli utenti, programmatori e non !!!
    -
    Volete suggerire un\'idea solo a parole, ma non sapete programmarla.
    L\'importante è che riusciate a descriverla non in modo astratto, ma in modo concreto.
    Poi se ci riusciamo proveremo a tradurre in linee di codice la vostra idea
    (compatibilmente con il poco tempo libero a disposizione e le limitate capacità di programmazione !!!).
    -
    Il TS basato su breakout dinamico proposto da Thalos mi ha dato lo spunto per questa idea.
    Il sogno penso di ogni trader è l\'aver a disposizione degli indicatori in grado di adeguarsi alla volatilità
    del mercato, in modo da accelerare e quindi ridurre il ritardo quando il mercato è veloce,
    e al contrario di rallentare nelle fasi laterali per ridurre i falsi segnali.
    -
    Chiaramente sto scoprendo l\'acqua calda, infatti sono decenni che analisti e ricercatori con i controc...
    ci stanno lavorando fornendoci tutta quella lunga lista di indicatori che trovate in beeTrader.
    Volando molto più basso, senza pretendere di essere i Wilder della situazione,
    qui ognuno potrà esprimere la propria idea o apportare il proprio bagaglio tecnico,
    anche riportato da riviste o libri. Qui vale copiare ,modificare e migliorare.
    L\'importante è ottenere qualcosa potenzialmente utile per il nostro trading !!!
    E senza primi della classe !!!
    -
    Tanto per cominciare ho allegato una funzione, come detto, ispirata da Thalos e leggermente modificata.
    Questa permette di calcolare un periodo che varia tra un minimo ed un massimo, in base alla deviazione
    standard di close n-periodi. Ho invertito il segno (1-DeltaHistVol) per fare in modo che il periodo si accorciasse
    con il crescere della volatilità, e viceversa si allungasse nelle fasi più laterali.
    -
    Seguono il plot del periodo come indicatore tanto per visualizzare graficamente, ed un esempio di utilizzo in una EMA.
    Purtroppo fino alla prossima release non sarà funzionante, perché EMA non può ricevere come vettore un\'altra funzione.
    -
    Saluti
    Massimo

    Codice:
    # PERIODO_DINAMICO Funzione
    
    #
    
    # Ritorna un valore di periodo variabile compreso tra un valore minimo e massimo.
    
    # E\' calcolato in base alla deviazione standard Close n-periodi
    
    
    
    
    
    INPUTS: @MaxPeriodo(60), @MinPeriodo(5), @PeriodoVolatilita(30)
    
    
    
    SET HistVol = SDV(CLOSE , @PeriodoVolatilita , 1, SIMPLE)
    
    SET YestHistVol = REF(HistVol, 1)
    
    SET DeltaHistVol1 = (HistVol - REF(HistVol, 1)) / HistVol
    
    SET DeltaHistVol = MINOF(DeltaHistVol1, 0.1)
    
    SET vPeriodoDinamico = BARLOOP (20, 1, MULTIPLY, (1 - DeltaHistVol), @MinPeriodo, @MaxPeriodo)
    
    SET PERIODO_DINAMICO = FLOOR(vPeriodoDinamico)
    
    
    
    #
    
    # Indicatore che plotta il valore restituito dalla funzione PERIODO_DINAMICO
    
    #
    
    INPUTS: @MaxPeriodo(60), @MinPeriodo(20), @PeriodoVolatilita(30)
    
    #
    
    SET PLOT1 = PERIODO_DINAMICO(@MaxPeriodo, @MinPeriodo, @PeriodoVolatilita)
    
    
    
    
    
    
    
    #
    
    # Indicatore che in futuro potrà plottare una EMA con periodo variabile dinamico.
    
    # Fino alla prossima release non funzionante, perché EMA non può ricevere vettore A come parametro !!!
    
    INPUTS: @MaxPeriodo(60), @MinPeriodo(20), @PeriodoVolatilita(30)
    
    #
    
    SET A = PERIODO_DINAMICO(@MaxPeriodo, @MinPeriodo, @PeriodoVolatilita)
    
    SET B = EMA(CLOSE , A)
    
    PRINT (A)
    
    SET PLOT1 = B
    Last edited by maxmax68; 01-11-13, 12:07.
  • Thalos
    Senior Member
    • Apr 2010
    • 800

    #2
    Il BreakOut dinamico e\' la frontiera da superare a cui tutti vorremmo ambire, vorrebbe dire riuscire ad avere una percentuale altissima di Trade vincenti, perché sarebbe l\' unico vero filtro alle fasi laterali che danno al Trading la percentuale di perdita che purtroppo ad ora e\' inevitabile..
    L\' idea e\' quella di riuscire a chiudere in un Canale virtuale riconoscibile dal TS la fase laterale...

    Io ci ho tentato anche modulando insieme piu\' oscillatori, e per ora l\' unico che mi ha dato dei risultati appena appena convincenti e\' la combinazione di due Supertrend con diverso settaggio...


    Mi spiego meglio, il supertrend da solo e\' un indicatore Trend Follower, ma se ne mettiamo due sovrapposti con settaggi diversi creano un canale dove all\' interrno dovrebbero restare ed esserci i falsi segnali...

    La combinazione del BreakOut Dinamico con i due Supertrend potrebbe portare a una piacevole sorpresa...

    In settimana lo Studio meglio e provo a metterlo in esecuzione...

    Da provare..
    Last edited by Thalos; 02-11-13, 19:47.
    --- Trend my Friend ---

    Comment

    • Cagalli Tiziano
      Senior Member
      • Dec 2007
      • 11252

      #3
      Originariamente Scritto da maxmax68
      Buongiorno a tutti,
      questo post è aperto alle idee di tutti gli utenti, programmatori e non !!!
      -
      Volete suggerire un\'idea solo a parole, ma non sapete programmarla.
      L\'importante è che riusciate a descriverla non in modo astratto, ma in modo concreto.
      Poi se ci riusciamo proveremo a tradurre in linee di codice la vostra idea
      (compatibilmente con il poco tempo libero a disposizione e le limitate capacità di programmazione !!!).
      -
      Il TS basato su breakout dinamico proposto da Thalos mi ha dato lo spunto per questa idea.
      Il sogno penso di ogni trader è l\'aver a disposizione degli indicatori in grado di adeguarsi alla volatilità
      del mercato, in modo da accelerare e quindi ridurre il ritardo quando il mercato è veloce,
      e al contrario di rallentare nelle fasi laterali per ridurre i falsi segnali.
      -
      Chiaramente sto scoprendo l\'acqua calda, infatti sono decenni che analisti e ricercatori con i controc...
      ci stanno lavorando fornendoci tutta quella lunga lista di indicatori che trovate in beeTrader.
      Volando molto più basso, senza pretendere di essere i Wilder della situazione,
      qui ognuno potrà esprimere la propria idea o apportare il proprio bagaglio tecnico,
      anche riportato da riviste o libri. Qui vale copiare ,modificare e migliorare.
      L\'importante è ottenere qualcosa potenzialmente utile per il nostro trading !!!
      E senza primi della classe !!!
      -
      Tanto per cominciare ho allegato una funzione, come detto, ispirata da Thalos e leggermente modificata.
      Questa permette di calcolare un periodo che varia tra un minimo ed un massimo, in base alla deviazione
      standard di close n-periodi. Ho invertito il segno (1-DeltaHistVol) per fare in modo che il periodo si accorciasse
      con il crescere della volatilità, e viceversa si allungasse nelle fasi più laterali.
      -
      Seguono il plot del periodo come indicatore tanto per visualizzare graficamente, ed un esempio di utilizzo in una EMA.
      Purtroppo fino alla prossima release non sarà funzionante, perché EMA non può ricevere come vettore un\'altra funzione.
      -
      Saluti
      Massimo

      Codice:
      # PERIODO_DINAMICO Funzione
      
      #
      
      # Ritorna un valore di periodo variabile compreso tra un valore minimo e massimo.
      
      # E\' calcolato in base alla deviazione standard Close n-periodi
      
      
      
      
      
      INPUTS: @MaxPeriodo(60), @MinPeriodo(5), @PeriodoVolatilita(30)
      
      
      
      SET HistVol = SDV(CLOSE , @PeriodoVolatilita , 1, SIMPLE)
      
      SET YestHistVol = REF(HistVol, 1)
      
      SET DeltaHistVol1 = (HistVol - REF(HistVol, 1)) / HistVol
      
      SET DeltaHistVol = MINOF(DeltaHistVol1, 0.1)
      
      SET vPeriodoDinamico = BARLOOP (20, 1, MULTIPLY, (1 - DeltaHistVol), @MinPeriodo, @MaxPeriodo)
      
      SET PERIODO_DINAMICO = FLOOR(vPeriodoDinamico)
      
      
      
      #
      
      # Indicatore che plotta il valore restituito dalla funzione PERIODO_DINAMICO
      
      #
      
      INPUTS: @MaxPeriodo(60), @MinPeriodo(20), @PeriodoVolatilita(30)
      
      #
      
      SET PLOT1 = PERIODO_DINAMICO(@MaxPeriodo, @MinPeriodo, @PeriodoVolatilita)
      
      
      
      
      
      
      
      #
      
      # Indicatore che in futuro potrà plottare una EMA con periodo variabile dinamico.
      
      # Fino alla prossima release non funzionante, perché EMA non può ricevere vettore A come parametro !!!
      
      INPUTS: @MaxPeriodo(60), @MinPeriodo(20), @PeriodoVolatilita(30)
      
      #
      
      SET A = PERIODO_DINAMICO(@MaxPeriodo, @MinPeriodo, @PeriodoVolatilita)
      
      SET B = EMA(CLOSE , A)
      
      PRINT (A)
      
      SET PLOT1 = B
      Ottimo intervento max, ti ringrazio.
      ..se corri dietro a due lepri, non ne prendi nemmeno una.

      Comment

      • maxmax68
        Senior Member

        • Sep 2013
        • 186

        #4
        Originariamente Scritto da Thalos
        Il BreakOut dinamico e\' la frontiera da superare a cui tutti vorremmo ambire, vorrebbe dire riuscire ad avere una percentuale altissima di Trade vincenti, perché sarebbe l\' unico vero filtro alle fasi laterali che danno al Trading la percentuale di perdita che purtroppo ad ora e\' inevitabile..
        L\' idea e\' quella di riuscire a chiudere in un Canale virtuale riconoscibile dal TS la fase laterale...

        Io ci ho tentato anche modulando insieme piu\' oscillatori, e per ora l\' unico che mi ha dato dei risultati appena appena convincenti e\' la combinazione di due Supertrend con diverso settaggio...


        Mi spiego meglio, il supertrend da solo e\' un indicatore Trend Follower, ma se ne mettiamo due sovrapposti con settaggi diversi creano un canale dove all\' interrno dovrebbero restare ed esserci i falsi segnali...

        La combinazione del BreakOut Dinamico con i due Supertrend potrebbe portare a una piacevole sorpresa...

        In settimana lo Studio meglio e provo a metterlo in esecuzione...

        Da provare..
        Ciao Thalos,
        quella dei supertrend è un\'idea interessante.
        Forse sarebbe ancora più interessante riuscire in qualche modo a
        personalizzare l\'indicatore supertrend in modo da renderlo dinamico.
        Non è che qualcuno potrebbe postare il codice dell\'indicatore supertrend,
        in modo da riscrivercelo a modo nostro ???
        Saluti
        Massimo

        PS Grazie a te Tiziano.

        Comment

        • Apocalips
          Senior Member

          • May 2011
          • 2630

          #5
          Originariamente Scritto da maxmax68
          Ciao Thalos,
          Non è che qualcuno potrebbe postare il codice dell\'indicatore supertrend,
          in modo da riscrivercelo a modo nostro ???
          Saluti
          Massimo
          Codice:
          codice supertrend in easylanguage:
          
          inputs:
          ATRLength(NumericSimple), ATRMult(NumericSimple), Strength(NumericSimple), STrend(NumericRef);
          
          vars:
          ATR(0),
          avg(0),
          dn(0),
          up(0),
          trend(1),
          flag(0),
          flagh(0),
          ST(0),
          hl(0);
          
          
          hl = Highest(High, ATRLength) - Lowest(Low, ATRLength);
          ATR = XAverage(hl, ATRLength);
          avg = (XAverage(high, Strength) + XAverage(low, Strength))/2;
          up = avg + ATR;
          dn = avg - ATR;
          
          if c > up[1] and c > Highest(High, Strength)[1] then
          trend = 1
          else if c < dn[1] and c < Lowest(Low, Strength)[1] then
          trend = -1;
          
          
          if trend < 0 and trend[1] > 0 then flag=1 else flag=0;
          if trend > 0 and trend[1] < 0 then flagh = 1 else flagh = 0;
          
          if trend > 0 and dn < dn[1] then dn=dn[1];
          if trend < 0 and up > up[1] then up=up[1];
          
          if flag = 1 then up = avg + ATR;
          if flagh = 1 then dn = avg - ATR;
          
          if trend = 1 then ST = dn else ST = up;
          SuperTrend = ST;
          STrend = trend;
          ....non si desidera ciò che è facile ottenere (Ovidio)....

          Comment

          • maxmax68
            Senior Member

            • Sep 2013
            • 186

            #6
            Grazie Apo,
            provo a tradurlo in EasyScript, se ci riesco.
            Saluti
            Massimo

            Comment

            • maxmax68
              Senior Member

              • Sep 2013
              • 186

              #7
              Originariamente Scritto da Apocalips
              Codice:
              codice supertrend in easylanguage:
              
              inputs:
              ATRLength(NumericSimple), ATRMult(NumericSimple), Strength(NumericSimple), STrend(NumericRef);
              
              vars:
              ATR(0),
              avg(0),
              dn(0),
              up(0),
              trend(1),
              flag(0),
              flagh(0),
              ST(0),
              hl(0);
              
              
              hl = Highest(High, ATRLength) - Lowest(Low, ATRLength);
              ATR = XAverage(hl, ATRLength);
              avg = (XAverage(high, Strength) + XAverage(low, Strength))/2;
              up = avg + ATR;
              dn = avg - ATR;
              
              if c > up[1] and c > Highest(High, Strength)[1] then
              trend = 1
              else if c < dn[1] and c < Lowest(Low, Strength)[1] then
              trend = -1;
              
              
              if trend < 0 and trend[1] > 0 then flag=1 else flag=0;
              if trend > 0 and trend[1] < 0 then flagh = 1 else flagh = 0;
              
              if trend > 0 and dn < dn[1] then dn=dn[1];
              if trend < 0 and up > up[1] then up=up[1];
              
              if flag = 1 then up = avg + ATR;
              if flagh = 1 then dn = avg - ATR;
              
              if trend = 1 then ST = dn else ST = up;
              SuperTrend = ST;
              STrend = trend;
              Poche semplici righe di EasyLanguage e EasyScript finisce al tappeto.
              -
              Per il momento non sono ancora riuscito a completare la traduzione del codice,
              e credo che dovremo aspettare che vengano aggiunte le nuove funzionalità di BARLOOP.
              Infatti quello che manca è la possibilità di scrivere:
              vUP = MINOF(vUP , REF(vUP ,1)) e
              vDN = MAXOF(vDN , REF(vDN ,1))
              per ottenere la parte orizzontale del SuperTrend.
              -
              Ho comunque cominciato a tradurre parzialmente il codice, e come pensavo,
              anche qui abbiamo a che fare con dei parametri che potrebbero essere ottimizzati in modo dinamico.
              In particolar modo vATRmult che è il numero di ATR che viene sommato o sottratto alla nostra media
              vAVG, determinando la distanza dell\'indicatore SuperTrend dai prezzi,
              ma anche vStrength, che è il periodo della media vAVG.
              -
              Segue indicatore che li plotta per visualizzare graficamente.
              Saluti
              Massimo
              Codice:
              # 
              # Parte iniziale del codice SuperTrend,
              # in attesa delle nuove funzioni BARLOOP di EasyScript
              #
              #
              INPUTS: @ATRlenght(14), @ATRmult(1.5), @Strength(10)
              #
              SET H = MAX(HIGH, @ATRlenght)
              SET L = MIN(LOW, @ATRlenght)
              SET HL = H - L
              SET vATR = EMA(HL , @ATRlenght)
              SET vAVG = (EMA(HIGH, @Strength) + EMA(LOW, @Strength))/2
              SET vUP = vAVG + (@ATRmult * vATR)
              SET vDN = vAVG - (@ATRmult * vATR)
              #
              SET PLOT1 = vUP
              SET PLOT2 = vDN
              SET PLOT3 = vAVG

              Comment

              • BMM
                Senior Member

                • Jan 2011
                • 1306

                #8
                Originariamente Scritto da maxmax68
                Poche semplici righe di EasyLanguage e EasyScript finisce al tappeto.
                non conosco easylanguage, quando si scrive

                if trend < 0 and trend[1] > 0 then flag=1 else flag=0;

                si intende che si cicla per ogni barra riferendosi al valore della barra precedente identicata con [1] ?

                Detta in un altro modo: supertrend si calcola in modo vettoriale o no?

                Comment

                • maxmax68
                  Senior Member

                  • Sep 2013
                  • 186

                  #9
                  Originariamente Scritto da BMM
                  non conosco easylanguage, quando si scrive

                  if trend < 0 and trend[1] > 0 then flag=1 else flag=0;

                  si intende che si cicla per ogni barra riferendosi al valore della barra precedente identicata con [1] ?

                  Detta in un altro modo: supertrend si calcola in modo vettoriale o no?
                  Ciao BMM,
                  trend[1] = REF(trend,1).
                  Il valore del Supertrend di questa barra viene calcolato tenendo conto del valore del
                  Supertrend della barra precedente, e della sua posizione rispetto al close.
                  Saluti
                  Massimo

                  Comment

                  • BMM
                    Senior Member

                    • Jan 2011
                    • 1306

                    #10
                    Originariamente Scritto da maxmax68
                    Ciao BMM,
                    trend[1] = REF(trend,1).
                    Il valore del Supertrend di questa barra viene calcolato tenendo conto del valore del
                    Supertrend della barra precedente, e della sua posizione rispetto al close.
                    Saluti
                    Massimo
                    immaginavo, bravi, buon caso di studio per far implementare nuove funzioni. Credo che con il barloop attuale non se ne possa uscire, sono curioso di vedere se riuscite a scriverlo senza IF-THEN-ELSE

                    Io ho due codici del supertrend ma nessuno dei due è scritto in maniera elegante tale da essere istruttivo o di aiuto per uscire dalla difficoltà del momento

                    Ottima scelta
                    Last edited by BMM; 03-11-13, 13:39.

                    Comment

                    • Cagalli Tiziano
                      Senior Member
                      • Dec 2007
                      • 11252

                      #11
                      Mi è venuto un dubbio, lo sapete che esiste la funzione SuperTrend già fatta, io scrivo il copia incolla dell\'indicatore:

                      Codice:
                      INPUTS: @periods(9), @strength(5)
                      
                      SET PLOT1 = SuperTrend(@periods, @strength)
                      SET PLOTCOLOR1 = IF(PLOT1 > CLOSE, COLOR_LIGHT_RED, COLOR_LIGHT_GREEN)
                      ..se corri dietro a due lepri, non ne prendi nemmeno una.

                      Comment

                      • Cagalli Tiziano
                        Senior Member
                        • Dec 2007
                        • 11252

                        #12
                        Indicatore SuperTrend:
                        Click image for larger version

Name:	1.jpg
Views:	1
Size:	101.3 KB
ID:	149099
                        ..se corri dietro a due lepri, non ne prendi nemmeno una.

                        Comment

                        • Sig.Bollinger
                          Senior Member

                          • Dec 2012
                          • 186

                          #13
                          Tiziano,

                          ma quindi vuoi dirmi che in easyscript, per avere il supertrend invece di scrivere tutto questo codice qui

                          Codice:
                          codice supertrend in easylanguage:
                          
                          inputs:
                          ATRLength(NumericSimple), ATRMult(NumericSimple), Strength(NumericSimple), STrend(NumericRef);
                          
                          vars:
                          ATR(0),
                          avg(0),
                          dn(0),
                          up(0),
                          trend(1),
                          flag(0),
                          flagh(0),
                          ST(0),
                          hl(0);
                          
                          
                          hl = Highest(High, ATRLength) - Lowest(Low, ATRLength);
                          ATR = XAverage(hl, ATRLength);
                          avg = (XAverage(high, Strength) + XAverage(low, Strength))/2;
                          up = avg + ATR;
                          dn = avg - ATR;
                          
                          if c > up[1] and c > Highest(High, Strength)[1] then
                          trend = 1
                          else if c < dn[1] and c < Lowest(Low, Strength)[1] then
                          trend = -1;
                          
                          
                          if trend < 0 and trend[1] > 0 then flag=1 else flag=0;
                          if trend > 0 and trend[1] < 0 then flagh = 1 else flagh = 0;
                          
                          if trend > 0 and dn < dn[1] then dn=dn[1];
                          if trend < 0 and up > up[1] then up=up[1];
                          
                          if flag = 1 then up = avg + ATR;
                          if flagh = 1 then dn = avg - ATR;
                          
                          if trend = 1 then ST = dn else ST = up;
                          SuperTrend = ST;
                          STrend = trend;
                          devi semplicemente scrivere

                          Codice:
                          SuperTrend(@periods, @strength)
                          Troppo forte!

                          Comment

                          • maxmax68
                            Senior Member

                            • Sep 2013
                            • 186

                            #14
                            Originariamente Scritto da Cagalli Tiziano
                            Mi è venuto un dubbio, lo sapete che esiste la funzione SuperTrend già fatta, io scrivo il copia incolla dell\'indicatore:

                            Codice:
                            INPUTS: @periods(9), @strength(5)
                            
                            SET PLOT1 = SuperTrend(@periods, @strength)
                            SET PLOTCOLOR1 = IF(PLOT1 > CLOSE, COLOR_LIGHT_RED, COLOR_LIGHT_GREEN)
                            Tiziano.... birichino, non fare finta di non capire !!!
                            -
                            Purtroppo anche la funzione SuperTrend già pronta non è utile al nostro caso,
                            perché al momento non può ricevere come vettore di @periods o @strength
                            un vettore dinamico variabile.
                            Aspettiamo le migliorie delle prossime releases.
                            Saluti
                            Massimo

                            Comment

                            • stefano p
                              Senior Member
                              • Jun 2010
                              • 117

                              #15
                              Originariamente Scritto da maxmax68
                              Tiziano.... birichino, non fare finta di non capire !!!
                              -
                              Purtroppo anche la funzione SuperTrend già pronta non è utile al nostro caso,
                              perché al momento non può ricevere come vettore di @periods o @strength
                              un vettore dinamico variabile.
                              Aspettiamo le migliorie delle prossime releases.
                              Saluti
                              Massimo
                              Massimo il birichino sei tu.
                              Sei molto bravo, lo hai già dimostrato.
                              Non siamo in competizione tra noi. Il nostro obiettivo è guadagnare dal trading
                              Dai il tempo allo staff di fare le correzioni che chiedi.
                              Tutto ciò lo dico senza il minimo spirito polemico o per piaggeria nei confronti di Tiziano.
                              Stefano
                              All'uomo irrazionale interessa solamente avere ragione. All'uomo razionale interessa imparare.

                              Comment

                              Working...