Strategia su beeTrader

Collapse
X
 
  • Ora
  • Show
Clear All
new posts
  • Denis Moretto
    Administrator
    • Dec 2007
    • 3568

    #1

    Strategia su beeTrader

    Ciao ragazzi,
    ieri un nuovo utente di beeTrader mi ha inviato una sua strategia operativa che vorrebbe tradurre in EasyScript.
    Siccome è un buon esempio didattico, in accordo con Mirco (nome dell\'utente), pubblico qui sul forum i dettagli, e chiedo gentilmente a chi usa già beeTrader e EasyScript se ci aiuta nella codifica.
    Chiaramente per i passaggi più complicati/difficili c\'è sempre il supporto del nostro buon Max.

    A tutti coloro che collaboreranno alla codifica della strategia offriamo 1 mese gratis di beeTrader per il tempo che dedicherà.
    File Allegati
  • civvic
    Senior Member

    • May 2012
    • 593

    #2
    Ok, bello complicatello , stasera ci provo!
    Io non vendo tasti ! - Tiziano Cagalli ...quindi se c'è un tasto (su Fiuto) vuol dire che serve !!

    Comment

    • Apocalips
      Senior Member

      • May 2011
      • 2630

      #3
      Caspita, bel esercizio !!!

      Dai Vittorio facci sognare


      Domani ci provo anch\'io


      Qualcun altro che vuole cimentarsi ?


      ps: Smash mi raccomando non ci sparare subito il codice, dacci un po di vantaggio

      Notte
      Last edited by Apocalips; 22-10-15, 02:10.
      ....non si desidera ciò che è facile ottenere (Ovidio)....

      Comment

      • Claudio61
        Senior Member

        • May 2011
        • 3017

        #4
        Originariamente Scritto da Apocalips
        Caspita, bel esercizio !!!

        Dai Vittorio facci sognare


        Domani ci provo anch\'io


        Qualcun altro che vuole cimentarsi ?


        ps: Smash mi raccomando non ci sparare subito il codice, dacci un po di vantaggio

        Notte
        No Smash è fuori concorso !!!

        Comment

        • Smash
          Senior Member

          • Feb 2012
          • 351

          #5
          Ciao ragazzi,
          l\'ho visto adesso ....

          Ditemi un po\':
          quanto vantaggio volete?

          Comment

          • civvic
            Senior Member

            • May 2012
            • 593

            #6
            L\'istruzione

            SET maxdacond = MAX(CLOSE, 10)
            cerca il massimo delle ultime 10 barre

            la
            SET cond = LAST > maxdacond
            valutata a runtime in strategy tickbytick, è vera se il sottostante ora sta superando il vecchio massimo?
            Oppure non è mai vera perchè come il last supera il vecchio massimo , diventa lui il massimo ?
            In backtest sicuramente non è mai vera !
            Io non vendo tasti ! - Tiziano Cagalli ...quindi se c'è un tasto (su Fiuto) vuol dire che serve !!

            Comment

            • Apocalips
              Senior Member

              • May 2011
              • 2630

              #7
              Originariamente Scritto da Smash
              l\'ho visto adesso ....

              Ditemi un po\':
              quanto vantaggio volete?



              parecchio !!

              Last edited by Apocalips; 22-10-15, 13:28.
              ....non si desidera ciò che è facile ottenere (Ovidio)....

              Comment

              • civvic
                Senior Member

                • May 2012
                • 593

                #8
                Intanto una prima versione che implementa la prima parte (per intenderci fino a prima di \'Se i prezzi mi generano 2 FALSI segnali...\')

                buy:
                INPUTS: @price(CLOSE), @period1(5), @period2(20), @riskAmount(500), @riskPercent(100)

                SET TRAILING_STOP = @riskAmount
                SET TRAILING_PERCENT = @riskPercent

                SET mm1 = EMA(@price, @period1)
                SET mm2 = EMA(@price, @period2)

                SET cond1 = CROSSOVER(mm1, mm2)
                SET cond2 = CROSSUNDER(mm1, mm2)

                SET nbarcrossover = LASTIF(cond1)
                SET nbarcrossunder = LASTIF(cond2)

                SET cond3 = nbarcrossover < nbarcrossunder

                SET maxdacond3 = MAX(CLOSE, nbarcrossover)

                SET cond4 = CLOSE >= maxdacond3

                cond1 OR cond4



                sell:
                SET mm1 = EMA(@price, @period1)
                SET mm2 = EMA(@price, @period2)

                SET cond1 = CROSSOVER(mm1, mm2)
                SET cond2 = CROSSUNDER(mm1, mm2)

                SET nbarcrossover = LASTIF(cond1)
                SET nbarcrossunder = LASTIF(cond2)

                SET cond3 = nbarcrossover > nbarcrossunder

                SET mindacond3 = MIN(CLOSE, nbarcrossunder)

                SET cond4 = CLOSE <= mindacond3

                cond2 OR cond4



                to be continued ...

                scusate ho corretto riskAmount ... si presuppone che la cifra investita sia 100.000 euro
                Last edited by civvic; 22-10-15, 13:32.
                Io non vendo tasti ! - Tiziano Cagalli ...quindi se c'è un tasto (su Fiuto) vuol dire che serve !!

                Comment

                • Apocalips
                  Senior Member

                  • May 2011
                  • 2630

                  #9
                  Ecco cio che sono riuscito ad elaborare fino allo stesso punto in cui è arrivato Vittorio ovvero fino a prima della parte che spiega la casistica dei 2 falsi segnali:

                  Il Ts lavora tick by tick
                  espongo solo la parte long per comodità


                  BUY SCRIPT
                  Codice:
                  SET Mlenta = EMA(CLOSE,20)
                  SET Mveloce = EMA(CLOSE,5)
                  
                  
                   #incrocio al rialzo medie mobili
                  SET cond1 = REF(CROSSOVER(Mveloce, Mlenta),1)  
                  
                  
                  #condizione di attivazione soglia dello stop in pareggio dopo un gain dello 0.5%
                   SET S= (CLOSE>= LastEntryPrice()*1.005) AND LastEntryPrice()>0
                  
                  
                   #Livello soglia dello stop in pareggio
                  SET S1= IF(S=TRUE,LastEntryPrice(),0)
                  
                  
                  #contatore barre dopo incrocio medie mobili:
                  SET barre= LASTIF(Mveloce< Mlenta)
                  SET conta= IF(barre<1,1,barre)
                  
                  
                  # massimo a periodo variabile dopo incrocio medie:
                  SET Massimo= HighestHighValue(conta)
                  
                  
                  # condizione di rientro long al breakout del max dello swing dopo primo StopLoss
                  SET cond2= REF(Crossover(close, Massimo),1) AND S1=0 
                  
                  cond1 or cond2
                  EXIT LONG SCRIPT
                  Codice:
                  SET Mlenta = EMA(CLOSE,20)
                  SET Mveloce = EMA(CLOSE,5)
                  
                  
                   #condizione di attivazione soglia dello stop in pareggio dopo un gain dello 0.5%
                   SET S= (CLOSE>= LastEntryPrice()*1.005) AND LastEntryPrice()>0
                  
                  
                   #Livello soglia dello stop in pareggio
                  SET S1= IF(S=TRUE,LastEntryPrice(),0)
                  
                  
                  
                  
                  
                  LAST<= S1 OR REF(CROSSUNDER(Mveloce, Mlenta),1)
                  Last edited by Apocalips; 22-10-15, 16:23.
                  ....non si desidera ciò che è facile ottenere (Ovidio)....

                  Comment

                  • Apocalips
                    Senior Member

                    • May 2011
                    • 2630

                    #10
                    Il debug di questa prima parte dello script ha dato risultati negativi

                    passiamo alle correzioni


                    Apo
                    ....non si desidera ciò che è facile ottenere (Ovidio)....

                    Comment

                    • civvic
                      Senior Member

                      • May 2012
                      • 593

                      #11
                      Si, è chiaro che dobbiamo gestire la congestione per farlo diventare profittevole (indipendentemente dal segnale d\'ingresso, perchè 2 medie mobili non sono il massimo!).
                      Qui però il problema è grosso ... perchè BT non permette di tenere traccia di un evento che sia avvenuto nel passato ma non si sa quanto nel passato.
                      Last edited by civvic; 23-10-15, 12:59.
                      Io non vendo tasti ! - Tiziano Cagalli ...quindi se c'è un tasto (su Fiuto) vuol dire che serve !!

                      Comment

                      • civvic
                        Senior Member

                        • May 2012
                        • 593

                        #12
                        Mi spiego meglio, questo è il segnale buy aggiornato:

                        INPUTS: @price(CLOSE), @period1(5), @period2(20), @riskAmount(500), @riskPercent(100)

                        SET TRAILING_STOP = @riskAmount
                        SET TRAILING_PERCENT = @riskPercent

                        SET mm1 = EMA(@price, @period1)
                        SET mm2 = EMA(@price, @period2)

                        SET cond1 = CROSSOVER(mm1, mm2)
                        SET cond2 = CROSSUNDER(mm1, mm2)

                        SET nbarcrossover = LASTIF(cond1)
                        SET nbarcrossunder = LASTIF(cond2)

                        SET cond3 = nbarcrossover < nbarcrossunder

                        SET maxdacond3 = MAX(CLOSE, nbarcrossover)

                        SET cond4 = CLOSE >= maxdacond3

                        SET intervallo = nbarcrossover - nbarcrossunder
                        SET maxold = REF(MAX(CLOSE, intervallo), nbarcrossunder)
                        SET cond5 = (maxold - REF(CLOSE, nbarcrossover)) >= @riskAmount

                        SET minold = MIN(CLOSE, nbarcrossunder)
                        SET cond6 = REF(CLOSE, nbarcrossunder) - minold >= @riskAmount

                        (cond1 AND (cond5 OR cond6)) OR cond4


                        ma qui guardo solo i precedenti 2 incroci!
                        Fino a quanti incroci nel passato devo andare a vedere?
                        Da quanto sta durando questa congestione?
                        Se un umano vede il grafico lo capisce subito ma BT vede da adesso verso indietro nel tempo ... fino a quando deve vedere nel passato?

                        Ok magari c\'è un modo e per ora non l\'ho trovato!
                        Maurizio aiuto!! hai elaborato qualcosa?
                        Io non vendo tasti ! - Tiziano Cagalli ...quindi se c'è un tasto (su Fiuto) vuol dire che serve !!

                        Comment

                        • civvic
                          Senior Member

                          • May 2012
                          • 593

                          #13
                          Ah un altro dubbio:
                          funziona in genere il nesting tipo :
                          SET maxold = REF(MAX(CLOSE, intervallo), nbarcrossunder)
                          ?

                          fino a quanti livelli ?
                          Last edited by civvic; 23-10-15, 12:58.
                          Io non vendo tasti ! - Tiziano Cagalli ...quindi se c'è un tasto (su Fiuto) vuol dire che serve !!

                          Comment

                          • Francario Massimiliano
                            Administrator
                            • Jul 2008
                            • 1033

                            #14
                            Salve,

                            Originariamente Scritto da civvic
                            Ah un altro dubbio:
                            funziona in genere il nesting tipo :
                            SET maxold = REF(MAX(CLOSE, intervallo), nbarcrossunder)
                            ?

                            fino a quanti livelli ?
                            Il nesting è supportato, il numero di livelli è teoricamente illimitato.

                            Max Francario
                            Manuale di beeTrader
                            Manuale di Fiuto Beta

                            Comment

                            • Marco Bosco
                              Senior Member

                              • Sep 2012
                              • 419

                              #15
                              Originariamente Scritto da civvic
                              Ah un altro dubbio:
                              funziona in genere il nesting tipo :
                              SET maxold = REF(MAX(CLOSE, intervallo), nbarcrossunder)
                              ?

                              fino a quanti livelli ?

                              ciao civvic,
                              visto che gli script di un TS sono relativamente corti per aumentare la comprensione è meglio non esagerare.
                              Il limite è comunque ben oltre la capacità umana di gestire una riga di codice.
                              Tieni anche conto che se non tronchi le istruzioni e annidi tutto senza creare qualche variabile intermedia ti precludi la possibilità di fare debug.

                              ciao
                              I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)

                              Comment

                              Working...