Signal con funzione di strategy, dove sbaglio ??

Collapse
X
 
  • Ora
  • Show
Clear All
new posts
  • alduran
    Member

    • Apr 2013
    • 32

    #1

    Signal con funzione di strategy, dove sbaglio ??

    Salve a tutti,
    Ho seguito i consigli per creare uno script che fermasse la strategy, ma lo sto provando in parallelo con lo stesso signal senza la mia funzione in real time e non funziona : lo stesso signal senza la funzione parte,.
    questo no. Copio lo script della mia function e lo script del segnale. Sareste così gentili da dirmi dove sbaglio ?


    # FUNCTION
    set MONEY = (TotalNetProfit()> 110 or TotalNetProfit()< -150)

    # SIGNAL

    plot1 > TD and plot1 > ref(close,@di) and time > 931 and time < 2129 and SD > ref (SD,@stdvdel)

    and StandardDeviations(close,21, 2, simple) > @lst and (not MONEY())
  • Smash
    Senior Member

    • Feb 2012
    • 351

    #2
    Originariamente Scritto da alduran
    Salve a tutti,
    Ho seguito i consigli per creare uno script che fermasse la strategy, ma lo sto provando in parallelo con lo stesso signal senza la mia funzione in real time e non funziona : lo stesso signal senza la funzione parte,.
    questo no. Copio lo script della mia function e lo script del segnale. Sareste così gentili da dirmi dove sbaglio ?


    # FUNCTION
    set MONEY = (TotalNetProfit()> 110 or TotalNetProfit()< -150)

    # SIGNAL

    plot1 > TD and plot1 > ref(close,@di) and time > 931 and time < 2129 and SD > ref (SD,@stdvdel)

    and StandardDeviations(close,21, 2, simple) > @lst and (not MONEY())

    Ciao,
    scusa ma non ho capito bene:
    ce ne sono uno che funziona ed uno che non funziona?
    In tal caso, potresti postarli entrambi?

    Comment

    • alduran
      Member

      • Apr 2013
      • 32

      #3
      Originariamente Scritto da Smash
      Ciao,
      scusa ma non ho capito bene:
      ce ne sono uno che funziona ed uno che non funziona?
      In tal caso, potresti postarli entrambi?
      Ciao Smash,
      Il signal che ho trascritto funziona senza problemi senza l\' aggiunta della function " MONEY" , che ho trascritto sopra.
      Il mio intento, con l\'aggiunta di quella function, sarebbe quello di fermare la strategy al raggiungimento dei limiti descritti dalla function "MONEY", negando ulteriori segnali. Gli importi dei totalnetprofit sono gli stessi del take profit e dello stop loss, al verificarsi dei quali, la funzione MONEY diventa true e nega ulteriori segnali, fermando la strategia.
      Purtroppo, non funziona....Sto provando assieme le 2 versioni, quella senza "MONEY" fa partire segnali regolarmente, l\' altra no, non si muove. Spero tu mi possa aiutare...

      Comment

      • Smash
        Senior Member

        • Feb 2012
        • 351

        #4
        Originariamente Scritto da alduran
        Ciao Smash,
        Il signal che ho trascritto funziona senza problemi senza l\' aggiunta della function " MONEY" , che ho trascritto sopra.
        Il mio intento, con l\'aggiunta di quella function, sarebbe quello di fermare la strategy al raggiungimento dei limiti descritti dalla function "MONEY", negando ulteriori segnali. Gli importi dei totalnetprofit sono gli stessi del take profit e dello stop loss, al verificarsi dei quali, la funzione MONEY diventa true e nega ulteriori segnali, fermando la strategia.
        Purtroppo, non funziona....Sto provando assieme le 2 versioni, quella senza "MONEY" fa partire segnali regolarmente, l\' altra no, non si muove. Spero tu mi possa aiutare...
        Ciao alduran,
        certo ne veniamo a capo di sicuro!

        Per function "MONEY" intendi dire che hai creato una funzione personalizzata salvandola come file "MONEY.func" ?

        Inoltre, posteresti per intero il codice del Signal che hai fatto girare?

        Comment

        • alduran
          Member

          • Apr 2013
          • 32

          #5
          Originariamente Scritto da Smash
          Ciao alduran,
          certo ne veniamo a capo di sicuro!

          Per function "MONEY" intendi dire che hai creato una funzione personalizzata salvandola come file "MONEY.func" ?

          Inoltre, posteresti per intero il codice del Signal che hai fatto girare?
          Grazie Smash,
          - sì MONEY.func l\'ho fatta io : set MONEY = (TotalNetProfit()> 110 or TotalNetProfit()< -150)

          - ecco il signal per entry long:

          inputs: @pd(3),@m(8)

          set TRAILING_STOP = 130
          set TRAILING_PERCENT = 20
          set STOP_LOSS = 160


          set EMY = ema(close,17)
          set alfa = StandardDeviations(EMY, 9, 2, simple)/StandardDeviations(close, 9, 2, simple)
          set beta = 1 - alfa
          set delta = close * alfa
          set plot1 = (ema(close,17) * beta) + delta

          set CHA = ChaikinVolatility(10,10,simple)
          set TD = ref (plot1,@pd)
          plot1 > TD and time > 931 and time < 2129 and DIP(@m)> DIN(@m) and CHA > 0 and (not Money())

          Comment

          • Francario Massimiliano
            Administrator
            • Jul 2008
            • 1033

            #6
            Salve,
            Originariamente Scritto da alduran
            Grazie Smash,
            - sì MONEY.func l\'ho fatta io : set MONEY = (TotalNetProfit()> 110 or TotalNetProfit()< -150)

            - ecco il signal per entry long:

            inputs: @pd(3),@m(8)

            set TRAILING_STOP = 130
            set TRAILING_PERCENT = 20
            set STOP_LOSS = 160


            set EMY = ema(close,17)
            set alfa = StandardDeviations(EMY, 9, 2, simple)/StandardDeviations(close, 9, 2, simple)
            set beta = 1 - alfa
            set delta = close * alfa
            set plot1 = (ema(close,17) * beta) + delta

            set CHA = ChaikinVolatility(10,10,simple)
            set TD = ref (plot1,@pd)
            plot1 > TD and time > 931 and time < 2129 and DIP(@m)> DIN(@m) and CHA > 0 and (not Money())
            nell\'attuale versione beta le funzioni relative allo stato della strategia sono disponibili esclusivamente all\'interno degli script di tipo Signal. Per tutti gli altri tipi di script queste funzioni ritornano sempre e comunque il valore zero.
            Nella prossima beta sarà possibile utilizzare le funzioni relative allo stato della strategia anche all\'interno delle User Defined Function richiamate dagli script di tipo Signal. Il codice postato è formalmente corretto, ma sarà funzionante solo con la prossima beta.

            Max Francario
            Manuale di beeTrader
            Manuale di Fiuto Beta

            Comment

            • alduran
              Member

              • Apr 2013
              • 32

              #7
              Originariamente Scritto da Francario Massimiliano
              Salve,


              nell\'attuale versione beta le funzioni relative allo stato della strategia sono disponibili esclusivamente all\'interno degli script di tipo Signal. Per tutti gli altri tipi di script queste funzioni ritornano sempre e comunque il valore zero.
              Nella prossima beta sarà possibile utilizzare le funzioni relative allo stato della strategia anche all\'interno delle User Defined Function richiamate dagli script di tipo Signal. Il codice postato è formalmente corretto, ma sarà funzionante solo con la prossima beta.

              Max Francario
              Buongiorno Max,

              quindi se scrivessi così :
              set TRAILING_STOP = 130
              set TRAILING_PERCENT = 20
              set STOP_LOSS = 160


              set EMY = ema(close,17)
              set alfa = StandardDeviations(EMY, 9, 2, simple)/StandardDeviations(close, 9, 2, simple)
              set beta = 1 - alfa
              set delta = close * alfa
              set plot1 = (ema(close,17) * beta) + delta
              set CHA = ChaikinVolatility(10,10,simple)
              set TD = ref (plot1,@pd)
              plot1 > TD and time > 931 and time < 2129 and DIP(@m)> DIN(@m) and CHA > 0 and TotalNetProfit() < 130 and TotalNetProfit() > -160
              Dovrebbe funzionare ? Ho già provato, ma non va.
              Last edited by alduran; 01-04-14, 04:09.

              Comment

              • Francario Massimiliano
                Administrator
                • Jul 2008
                • 1033

                #8
                Salve,

                Originariamente Scritto da alduran
                Buongiorno Max,

                quindi se scrivessi così :
                set TRAILING_STOP = 130
                set TRAILING_PERCENT = 20
                set STOP_LOSS = 160


                set EMY = ema(close,17)
                set alfa = StandardDeviations(EMY, 9, 2, simple)/StandardDeviations(close, 9, 2, simple)
                set beta = 1 - alfa
                set delta = close * alfa
                set plot1 = (ema(close,17) * beta) + delta
                set CHA = ChaikinVolatility(10,10,simple)
                set TD = ref (plot1,@pd)
                plot1 > TD and time > 931 and time < 2129 and DIP(@m)> DIN(@m) and CHA > 0 and TotalNetProfit() < 130 and TotalNetProfit() > -160
                Dovrebbe funzionare ? Ho già provato, ma non va.
                è vero, abbiamo individuato un errore nell\'engine che interpreta gli script che è già stato corretto.
                Per il momento, un modo semplice per aggirare il problema è modificare lo script in questo modo (modifiche in rosso):


                INPUTS: @pd(1), @m(14)

                set TRAILING_STOP = 130
                set TRAILING_PERCENT = 20
                set STOP_LOSS = 160

                set EMY = ema(close,17)
                set alfa = StandardDeviations(EMY, 9, 2, simple)/StandardDeviations(close, 9, 2, simple)
                set beta = 1 - alfa
                set delta = close * alfa
                set plot1 = (ema(close,17) * beta) + delta
                set CHA = ChaikinVolatility(10,10,simple)
                set TD = ref (plot1,@pd)
                set tnp = TotalNetProfit()

                plot1 > TD and time > 931 and time < 2129 and DIP(@m)> DIN(@m) and CHA > 0 and tnp < 130 and tnp > -160


                In sostanza, basta non utilizzare le funzioni di stato della strategia direttamente nella condizione finale dello script, ma assegnarle ad una variabile ed usare la variabile nella condizione.


                Max Francario
                Manuale di beeTrader
                Manuale di Fiuto Beta

                Comment

                • alduran
                  Member

                  • Apr 2013
                  • 32

                  #9
                  Originariamente Scritto da Francario Massimiliano
                  Salve,



                  è vero, abbiamo individuato un errore nell\'engine che interpreta gli script che è già stato corretto.
                  Per il momento, un modo semplice per aggirare il problema è modificare lo script in questo modo (modifiche in rosso):


                  INPUTS: @pd(1), @m(14)

                  set TRAILING_STOP = 130
                  set TRAILING_PERCENT = 20
                  set STOP_LOSS = 160

                  set EMY = ema(close,17)
                  set alfa = StandardDeviations(EMY, 9, 2, simple)/StandardDeviations(close, 9, 2, simple)
                  set beta = 1 - alfa
                  set delta = close * alfa
                  set plot1 = (ema(close,17) * beta) + delta
                  set CHA = ChaikinVolatility(10,10,simple)
                  set TD = ref (plot1,@pd)
                  set tnp = TotalNetProfit()

                  plot1 > TD and time > 931 and time < 2129 and DIP(@m)> DIN(@m) and CHA > 0 and tnp < 130 and tnp > -160


                  In sostanza, basta non utilizzare le funzioni di stato della strategia direttamente nella condizione finale dello script, ma assegnarle ad una variabile ed usare la variabile nella condizione.


                  Max Francario
                  Avevo già provato anche questa alternativa, ma non cambia nulla, la condizione viene ignorata. Spero che nella prossima release sarà funzionante...Ritengo sia indispensabile poter gestire la posizione in un trading automatizzato.

                  Saluti

                  Comment

                  • Andrea Cagalli
                    Senior Member
                    • Oct 2010
                    • 3995

                    #10
                    Originariamente Scritto da alduran
                    Avevo già provato anche questa alternativa, ma non cambia nulla, la condizione viene ignorata. Spero che nella prossima release sarà funzionante...Ritengo sia indispensabile poter gestire la posizione in un trading automatizzato.

                    Saluti
                    Ciao caro,
                    tieni presente che stai utilizzando una versione Beta, nella versione definitiva ovviamente sarà funzionante

                    Ciao Ciao
                    Manuale beeTrader

                    Comment

                    • armando
                      Member

                      • Apr 2012
                      • 43

                      #11
                      TotalNetProfit

                      Aiuto, io la funzione TotalNetProfit non riesco proprio a farla funzionare. Riportando quanto descritto nel manuale: "La funzione può essere utilizzata per impostare preventivamente delle soglie di uscite monetarie riferite all\'intera Strategy"). L\'intenzione sarebbe quella di chiudere la strategia quando il profitto giornaliero é > di una cifra (p.es. 700) ed altrettanto quando la perdita < - 500. Tali valori (secondo la mia interpretazione) sono certamente differenti dai Set di gestione M.M. Trailing_Stop, _Percent e Stop_Loss che riguardano il singolo trade).
                      Es.:

                      SET TRAILING_STOP = @trailAmount
                      SET TRAILING_PERCENT = @trailPercent
                      SET STOP_LOSS = @stopLoss

                      SET TnP= TotalNetProfit()

                      FOLLOWME()> 0

                      TnP > 700 (linea X)

                      AND ATR(@periods, @matype)> 35

                      AND TIME <1730


                      Modifiche su Linea X: senza tale linea di comando ottengo 540 trade, con TnP< da 300 sino a 5000 ottengo sempre 848 trade (ma in altri script , forse perché senza il Followme, con TnP< da 300 sino a 10000 i trade sono filtrati da 20 al massimo ottenibile senza la linea di comando X)
                      con TnP> da 300 a 5000 ottengo zero trade.
                      In pratica non ci capisco nulla.
                      Essendo una strategy position, non dovrebbe comportarsi come Money Management (M.M.) giornaliero? E\' sbagliato fare il backtest con barre equivalenti a più giorni, e che detti settaggi sono validi in strategy? Potete confermare?
                      Se sbaglio, dove sbaglio??
                      Potreste aiutarmi, grazie.
                      Armando
                      Last edited by armando; 04-08-14, 06:57.

                      Comment

                      • Jackal
                        Senior Member

                        • Mar 2011
                        • 117

                        #12
                        Originariamente Scritto da armando
                        Aiuto, io la funzione TotalNetProfit non riesco proprio a farla funzionare. Riportando quanto descritto nel manuale: "La funzione può essere utilizzata per impostare preventivamente delle soglie di uscite monetarie riferite all\'intera Strategy"). Essendo una strategy position, non dovrebbe comportarsi come Money Management (M.M.)? L\'intenzione sarebbe quella di chiudere la strategia quando il profitto giornaliero > di una cifra (p.es. 700) ed altrettanto quando la perdita < - 500. Tali valori (secondo la mia interpretazione) sono certamente differenti dai Set di gestione M.M., come nello script sottostante,che riguardano il singolo trade).
                        Ho provato in diversi modi, p. es. , come descritto nella discussione precedente:

                        SET TRAILING_STOP = 100
                        SET TRAILING_PERCENT = 10
                        SET STOP_LOSS = 400

                        SET tnp= TotalNetProfit()
                        SET a = MovingAverage(@price, 8, @matype)
                        SET b = MovingAverage(@price, 14, @matype)
                        SET c = MovingAverage(@price, 20, @matype)
                        SET d = MovingAverage(@price, 30, @matype)
                        SET e = LinearRegressionForecast(@price, 8)

                        a> b AND
                        b> c AND
                        c> d AND
                        ((a+b+c)/3) - d> 15
                        AND TIME <1730
                        and tnp > 700 and tnp < -500

                        Ma in backtest mi azzera tutti i trade. Dove sbaglio?



                        Potreste aiutarmi, grazie. (non sono un informatico)
                        Armando
                        Ciao Armando non mi sono chiare alcune cose, non ho capito questa riga
                        Codice:
                         ((a+b+c)/3) - d> 15
                        essendo medie mobili "15" deve essere riferito a un particolare sottostante giusto?

                        ultima cosa... con la funzione total net profit tu vuoi che raggiunto un certo guadagno o una certa perdita il sistema si arresti?

                        Saluti
                        Fabio
                        Last edited by Jackal; 03-08-14, 13:46.
                        "Amat Victoria Curam"
                        "Il Successo di un uomo stà nella sua perseveranza" (Bruce Lee)

                        Comment

                        • chrisbasetta
                          Senior Member
                          • Aug 2008
                          • 693

                          #13
                          Originariamente Scritto da armando
                          Aiuto, io la funzione TotalNetProfit non riesco proprio a farla funzionare. Riportando quanto descritto nel manuale: "La funzione può essere utilizzata per impostare preventivamente delle soglie di uscite monetarie riferite all\'intera Strategy"). Essendo una strategy position, non dovrebbe comportarsi come Money Management (M.M.)? L\'intenzione sarebbe quella di chiudere la strategia quando il profitto giornaliero > di una cifra (p.es. 700) ed altrettanto quando la perdita < - 500. Tali valori (secondo la mia interpretazione) sono certamente differenti dai Set di gestione M.M., come nello script sottostante,che riguardano il singolo trade).
                          Ho provato in diversi modi, p. es. , come descritto nella discussione precedente:

                          SET TRAILING_STOP = 100
                          SET TRAILING_PERCENT = 10
                          SET STOP_LOSS = 400

                          SET tnp= TotalNetProfit()
                          SET a = MovingAverage(@price, 8, @matype)
                          SET b = MovingAverage(@price, 14, @matype)
                          SET c = MovingAverage(@price, 20, @matype)
                          SET d = MovingAverage(@price, 30, @matype)
                          SET e = LinearRegressionForecast(@price, 8)

                          a> b AND
                          b> c AND
                          c> d AND
                          ((a+b+c)/3) - d> 15
                          AND TIME <1730
                          and tnp > 700 and tnp < -500

                          Ma in backtest mi azzera tutti i trade. Dove sbaglio?



                          Potreste aiutarmi, grazie. (non sono un informatico)
                          Armando
                          Ciao,
                          nella seguente istruzione:

                          and tnp > 700 and tnp < -500

                          gli stai dicendo che sia il guadagno che la perdita devono essere veri, ed è di fatto impossibile...
                          dovresti usare l\'istruzione OR al posto di AND:

                          AND tnp > 700 OR tnp < -500

                          Comment

                          • armando
                            Member

                            • Apr 2012
                            • 43

                            #14
                            Grazie JacKal x avermi risposto e farò come da Te suggerito.
                            In effetti ho tolto la richiesta di massima perdita per cercare di capire se la funzione TotalNetProfit corrisponde alle mie aspettative.
                            Last edited by armando; 04-08-14, 08:53.

                            Comment

                            • armando
                              Member

                              • Apr 2012
                              • 43

                              #15
                              Ciao Fabio, quella linea ((a+b+c)/3) -d >15 corrisponde alla zona di indecisione, dove le MM si avvicinano, che hai sempre ogni volta che un trend cambia direzione (a volte lo riconferma). Chiaramente x il sell sarà l\'inverso. Il valore 15 é la distanza tra loro e lo si può modificare. All\'ultima domanda ti rispondo di sì, ma non ci siesco, perlo meno in backtest.
                              Armando

                              Comment

                              Working...