Divergenze tra Strategy in Real e Backtest su TS

Collapse
X
 
  • Ora
  • Show
Clear All
new posts
  • TFiutoT384
    Senior Member
    • Oct 2009
    • 566

    #31
    Originariamente Scritto da Thalos
    Le prove che sto\' testando questa settimana sono sul Bobao con Time Frame a 15 Minuti e senza il Trailing stop sono piuttosto deludenti...
    Per rendere il Bobao performante ho dovuto per forza aggiungere il Trailing stop, il Percent e lo Stop Loss..

    Il problema e\' che i risultati dal BackTest allo Strategy sono troppo diversi per poter essere affidabili..
    In questo modo testare un TS e metterlo sul Mercato Reale mi sembra molto azzardato, almeno per ora..

    La cosa strana e\' che ho portato un TS semplice semplice con due Medie mobili su Visual Trader e lo stesso lo Messo su Beep, uguale uguale, facendoli girare per tutto il giorno in contemporanea...

    Risultato e\' che Visual Trader fa in Real esattamente quello che fa in Test, mentre Beep non c\'e\' una sola corrispondenza, cio\' mi sembra alquanto strano, e a mio avviso merita un\' attenta riflessione..
    Per curiosità, i test che hai fatto su VT hanno dato un buon risultato? lo chiedo perché se si tratta solo di un problema temporaneo di BT, risolvendolo poi le cose si sistemano. Ciao

    Comment

    • Thalos
      Senior Member
      • Apr 2010
      • 800

      #32
      I risultati sono completamente e stranamente diversi...

      La stessa Strategia su Beep dava dopo l\' ottimizzazione un guadagno netto e una Equity accettabile.... (Ovviamente essendo solo due medie mobili che si intersecano non si puo\' pretendere molto), ma il risultato era soddisfacente..

      In Visual Trader invece lo stesso incrocio, con le stesse modalita\' ha dato dei risultati quasi disastrosi...

      Quindi i risultati sono completamente diversi anche se gli Incroci graficamente sono identici...

      Ricordo per onore di cronaca che Visual Trader ha parecchi anni dietro le spalle e decine di Patch, all\' inizio era anche lui impreciso, poi piano piano sta\' diventando molto affidabile...

      Per Beep dalle mie prove fatte c\'e da lavorarci ancora e patcharlo per bene... i sitstemi prima di metterli in Real io li spremo parecchio..

      Attendo fiducioso.... e spero che queste mie valutazioni di prove reali, serva ai programmatori di Playoptions di capire i problemi di questo nuovo programma..
      Last edited by Thalos; 12-10-13, 00:17.
      --- Trend my Friend ---

      Comment

      • Apocalips
        Senior Member

        • May 2011
        • 2630

        #33
        Originariamente Scritto da Thalos
        Le prove che sto\' testando questa settimana sono sul Bobao con Time Frame a 15 Minuti e senza il

        La cosa strana e\' che ho portato un TS semplice semplice con due Medie mobili su Visual Trader e lo stesso lo Messo su Beep, uguale uguale, facendoli girare per tutto il giorno in contemporanea...

        Risultato e\' che Visual Trader fa in Real esattamente quello che fa in Test, mentre Beep non c\'e\' una sola corrispondenza, cio\' mi sembra alquanto strano, e a mio avviso merita un\' attenta riflessione..
        Thalos, rifletti un attimo
        Se usi il REF traslando tutto di una barra avrai gli stessi risultati che vedi nel backtest perchè tu forzi il trading system ad entrare all\'open della barra corrente che equivale circa alla chiusura della barra precedente sulla quale viene verificata la condizione

        Il passaggio cruciale che ti sta sfuggendo è che la verifica con il back test non la devi fare sullo stesso sistema che hai usato per il front test perchè altrimenti continuerai a vedere sempre 2 cose diverse.

        In sintesi il paragone lo devi fare in questo modo:

        per il back test ------> utilizzi il TS originale
        per il front test-------> utilizzi il TS modificato con il REF

        a questo punto confronti i risultati e avrai gli stessi livelli di ingresso e uscita salvo piccoli gap del cambio barra.

        Apo
        Last edited by Apocalips; 12-10-13, 00:38.
        ....non si desidera ciò che è facile ottenere (Ovidio)....

        Comment

        • Thalos
          Senior Member
          • Apr 2010
          • 800

          #34
          Ok, perfetto, divido i Trading System in due uno per il BackTest senza il Ref (Originale), e l\' altro da mettere sullo Strategy Real con il Ref ...
          Spero che diano i risultati uguali o molto simili....
          --- Trend my Friend ---

          Comment

          • TFiutoT384
            Senior Member
            • Oct 2009
            • 566

            #35
            Quindi Apo, per il seguente script dunque il codice è:
            per il backtest (evidenzio inverde sottolineato le 4 righe che sono differenti tra lo script per il backtets e il real time, cioè quelle dove devo applicare il REF)

            Buy scripts

            # Definiamo le variabili
            INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7)

            SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
            SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
            SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
            SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
            SET SignalLine = LR(@price, @SLperiods)

            # Primo Buy
            CROSSOVER(SignalLine, BigBottom)

            Sell Scripts
            # Definiamo le variabili
            SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
            SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
            SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
            SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
            SET SignalLine = LR(@price, @SLperiods)

            # Primo Sell
            CROSSOVER(BigTop,SignalLine)

            Exit long script
            # Definiamo le variabili
            SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
            SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
            SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
            SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
            SET SignalLine = LR(@price, @SLperiods)

            # Primo ExitLong
            CROSSOVER(SmallBottom,SignalLine)

            Exit short script
            # Definiamo le variabili
            SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
            SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
            SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
            SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
            SET SignalLine = LR(@price, @SLperiods)

            # Primo ExitShort
            CROSSOVER(SmallTop,SignalLine)

            Per la strategia in real time, aggiungo il REF sostituendo alla riga: CROSSOVER(SmallTop,SignalLine),
            la
            riga seguente: CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1)), ovvero (in tutto sono 4 sostituzioni che evidenzio perché le riporto in verde sottolineato):



            Buy scripts

            # Definiamo le variabili
            INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7)

            SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
            SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
            SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
            SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
            SET SignalLine = LR(@price, @SLperiods)

            # Primo Buy
            CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))

            Sell Scripts
            # Definiamo le variabili
            SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
            SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
            SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
            SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
            SET SignalLine = LR(@price, @SLperiods)

            # Primo Sell
            CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))

            Exit long script
            # Definiamo le variabili
            SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
            SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
            SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
            SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
            SET SignalLine = LR(@price, @SLperiods)

            # Primo ExitLong
            CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))

            Exit short script
            # Definiamo le variabili
            SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
            SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
            SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
            SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
            SET SignalLine = LR(@price, @SLperiods)

            # Primo ExitShort
            CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))



            E I DUE SCRIPTS DEVONO ESSERE APPLICATI APPUNTO SEPARATAMENTE: IL PRIMO LO USO SOLO PER IL BACKTEST MENTRE IL SECONDO LO USO SOLO PER IL REAL TIME.
            Ok Apo , attendo conferme, se naturalmente ti è possibile.
            Intanto grazie per i tuoi suggerimenti dato che stò provando la stessa frustrazione di Thalos dovuto alla differenza tra il backtest e il real time.
            Last edited by TFiutoT384; 12-10-13, 01:17.

            Comment

            • BMM
              Senior Member

              • Jan 2011
              • 1306

              #36
              non trovate scomodo dover dichiarare le stesse variabili per 4 volte in ogni script come si usava nel vecchio Metastock?

              oltre a doverle scrivere 4 volte bisogna poi ricordarsi di replicare per 4 anche eventuali modifiche sui 4 script, così giusto per dire

              Comment

              • Apocalips
                Senior Member

                • May 2011
                • 2630

                #37
                Originariamente Scritto da TFiutoT384
                Quindi Apo, per il seguente script dunque il codice è:
                per il backtest (evidenzio inverde sottolineato le 4 righe che sono differenti tra lo script per il backtets e il real time, cioè quelle dove devo applicare il REF)

                Buy scripts

                # Definiamo le variabili
                INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7)

                SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
                SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
                SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
                SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
                SET SignalLine = LR(@price, @SLperiods)

                # Primo Buy
                CROSSOVER(SignalLine, BigBottom)

                Sell Scripts
                # Definiamo le variabili
                SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
                SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
                SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
                SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
                SET SignalLine = LR(@price, @SLperiods)

                # Primo Sell
                CROSSOVER(BigTop,SignalLine)

                Exit long script
                # Definiamo le variabili
                SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
                SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
                SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
                SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
                SET SignalLine = LR(@price, @SLperiods)

                # Primo ExitLong
                CROSSOVER(SmallBottom,SignalLine)

                Exit short script
                # Definiamo le variabili
                SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
                SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
                SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
                SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
                SET SignalLine = LR(@price, @SLperiods)

                # Primo ExitShort
                CROSSOVER(SmallTop,SignalLine)

                Per la strategia in real time, aggiungo il REF sostituendo alla riga: CROSSOVER(SmallTop,SignalLine),
                la
                riga seguente: CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1)), ovvero (in tutto sono 4 sostituzioni che evidenzio perché le riporto in verde sottolineato):



                Buy scripts

                # Definiamo le variabili
                INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7)

                SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
                SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
                SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
                SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
                SET SignalLine = LR(@price, @SLperiods)

                # Primo Buy
                CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))

                Sell Scripts
                # Definiamo le variabili
                SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
                SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
                SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
                SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
                SET SignalLine = LR(@price, @SLperiods)

                # Primo Sell
                CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))

                Exit long script
                # Definiamo le variabili
                SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
                SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
                SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
                SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
                SET SignalLine = LR(@price, @SLperiods)

                # Primo ExitLong
                CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))

                Exit short script
                # Definiamo le variabili
                SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
                SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
                SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
                SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
                SET SignalLine = LR(@price, @SLperiods)

                # Primo ExitShort
                CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))



                E I DUE SCRIPTS DEVONO ESSERE APPLICATI APPUNTO SEPARATAMENTE: IL PRIMO LO USO SOLO PER IL BACKTEST MENTRE IL SECONDO LO USO SOLO PER IL REAL TIME.
                Ok Apo , attendo conferme, se naturalmente ti è possibile.
                Intanto grazie per i tuoi suggerimenti dato che stò provando la stessa frustrazione di Thalos dovuto alla differenza tra il backtest e il real time.
                L\'utilizzo di ref va bene ma non vanno bene gli argomenti del CROSSOVER in cui hai confuso i segnali del Bobao.

                Se Tiziano mi autorizza pubblico il codice del Bobao completo ovvero quello che prevede tutte le regole di entrata e di uscita sulle varie bande.

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

                Comment

                • TFiutoT384
                  Senior Member
                  • Oct 2009
                  • 566

                  #38
                  Grazie Apo e sicuramente il corretto listato del BOBAO servirà più avanti perché credo che funzioni bene se ben ottimizzato ma per ora mi fermo: usare due script diversisui vari listati a seconda che si operi in backtest o in real time ha creato confusione.
                  Qui servirebbe davverò un video di spiegazione come quelli fatti per Fiuto pro.
                  Inoltre non posso importare uno storico, per cui un TS a 5 o 15 minuti testato su pochi giorni non mi da alcun TS realmente applicabile rischiando di lavorare a dei TS che poi su storici di maggiore durata rischiano di saltare e attualmente non vedo una data di rilascio di questa funzione per cui potrebbero passare mesi prima di operare su storici affidabili. Quindi mi metto in stand-by e attendo di vedere quando almeno ci sarà lo storico importabile.
                  A proposito, complimenti per il tuo TS supertrend+ema: funziona discretamente anche su altri sottostanti anche se l\'ho usato solo con lo sop loss senza trailing stop o percent (sempre a 5 minuti e con solo due giorni di storico per cui la prudenza è d\'obbligo). Penso che in reale dovrò utilizzare anche ref per replicare il backtest.
                  Last edited by TFiutoT384; 12-10-13, 13:27.

                  Comment

                  • Cagalli Tiziano
                    Senior Member
                    • Dec 2007
                    • 11252

                    #39
                    Originariamente Scritto da Apocalips
                    L\'utilizzo di ref va bene ma non vanno bene gli argomenti del CROSSOVER in cui hai confuso i segnali del Bobao.

                    Se Tiziano mi autorizza pubblico il codice del Bobao completo ovvero quello che prevede tutte le regole di entrata e di uscita sulle varie bande.

                    ciao
                    Certo che sì!
                    Grazie
                    ..se corri dietro a due lepri, non ne prendi nemmeno una.

                    Comment

                    • Cagalli Tiziano
                      Senior Member
                      • Dec 2007
                      • 11252

                      #40
                      Originariamente Scritto da BMM
                      non trovate scomodo dover dichiarare le stesse variabili per 4 volte in ogni script come si usava nel vecchio Metastock?

                      oltre a doverle scrivere 4 volte bisogna poi ricordarsi di replicare per 4 anche eventuali modifiche sui 4 script, così giusto per dire
                      Tu che lo sai, fagli un esempio così ci diamo una mano.
                      Tu pensi che tutti ti abbiano capito ma credimi che non è così, meglio se hai voglia di fare un esempio.
                      Grazie sai,
                      ..se corri dietro a due lepri, non ne prendi nemmeno una.

                      Comment

                      • BMM
                        Senior Member

                        • Jan 2011
                        • 1306

                        #41
                        Originariamente Scritto da Cagalli Tiziano
                        Tu che lo sai, fagli un esempio così ci diamo una mano.
                        Tu pensi che tutti ti abbiano capito ma credimi che non è così, meglio se hai voglia di fare un esempio.
                        Grazie sai,
                        SECONDO ME, scrivere 4 script separati è solo apparentemente più semplice ma in realtà complica parecchio la scrittura di codici poco più che banali perchè dichiarare 4 volte le variabili è una complicazione pazzesca perchè, e sono pronto a scommetterci, prima o poi tutti si incarteranno facendo modifiche su uno script dimenticandosi di trasferirle negli altri tre.

                        Prendendo ad esempio il codice di prima, ove in ognuno si deve dichiarare le stesse bande, io avrei preferito scrivere un unico script definendo le condizioni di buy, sell ecc come semplice variabili, ovviamente vettoriali come il resto


                        Codice:
                        # Definiamo le variabili
                        INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7)
                        
                        SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
                        SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
                        SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
                        SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
                        SET SignalLine = LR(@price, @SLperiods)
                        
                        Buy = CROSSOVER(SignalLine, BigBottom)
                        
                        Sell = CROSSOVER(BigTop,SignalLine)
                        
                        ExitLong = CROSSOVER(SmallBottom,SignalLine)
                        
                        ExitShort = CROSSOVER(SmallTop,SignalLine)
                        Non vi piace di più? E\' molto più semplice!

                        Tra l\'altro sta tutto in una pagina e con un solo colpo d\'occhio si vede tutto
                        Last edited by BMM; 12-10-13, 21:26.

                        Comment

                        • Jackal
                          Senior Member

                          • Mar 2011
                          • 117

                          #42
                          Originariamente Scritto da BMM
                          SECONDO ME, scrivere 4 script separati è solo apparentemente più semplice ma in realtà complica parecchio la scrittura di codici poco più che banali perchè dichiarare 4 volte le variabili è una complicazione pazzesca perchè, e sono pronto a scommetterci, prima o poi tutti si incarteranno facendo modifiche su uno script dimenticandosi di trasferirle negli altri tre.

                          Prendendo ad esempio il codice di prima, ove in ognuno si deve dichiarare le stesse bande, [B]io avrei preferito scrivere un unico script definendo le condizioni di buy, sell ecc[/B] come semplice variabili, ovviamente vettoriali come il resto


                          Codice:
                          # Definiamo le variabili
                          INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7)
                          
                          SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
                          SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
                          SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
                          SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
                          SET SignalLine = LR(@price, @SLperiods)
                          
                          Buy = CROSSOVER(SignalLine, BigBottom)
                          
                          Sell = CROSSOVER(BigTop,SignalLine)
                          
                          ExitLong = CROSSOVER(SmallBottom,SignalLine)
                          
                          ExitShort = CROSSOVER(SmallTop,SignalLine)
                          Non vi piace di più? E\' molto più semplice!

                          Tra l\'altro sta tutto in una pagina e con un solo colpo d\'occhio si vede tutto
                          Mi associo! Anche perchè cosi sarebbe possibile gestire il numero di contratti usati dalle funzioni buy e sell e attuare tecniche di pyramiding dato che ora se non sbaglio non è possibile.
                          "Amat Victoria Curam"
                          "Il Successo di un uomo stà nella sua perseveranza" (Bruce Lee)

                          Comment

                          • Apocalips
                            Senior Member

                            • May 2011
                            • 2630

                            #43
                            Dico la mia,
                            Io che non sono programmatore ragiono meglio a blocchi per cui preferisco la versione attuale in cui vi sono sezioni separate in cui posso concentrarmi meglio sullo script specifico per quel blocco di istruzioni
                            Scrivere tutto in una pagina potrebbe anche andar bene se il TS è formato da poche righe ma quando si tratta di trading System con parecchie righe di codice mettere tutto in un calderone si rischia di perdersi e di far confusione ed anche l\'immediatezza della ricerca in caso di modifiche ne soffrirebbe.

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

                            Comment

                            • Thalos
                              Senior Member
                              • Apr 2010
                              • 800

                              #44
                              Sono abituato a programmare con Visual Trader con il codice scritto su un\' unica pagina, dove il funzionamento e\' uguale sia in Real che in Test con un unico Script e risulta l\' ideale, non si fa il minimo errore specialmente in programmi lunghi...
                              Il programma funziona o non funziona punto.. non ci sono fraintendimenti di trascrizioni errate..

                              Fare più tipi di versione sullo stesso programma a mio avviso genera molta confusione e molte piu\' probabilita\' di fare errori perché non si capisce piu\' dove sta\' l\'errore.. se nel codice o nella trascrizione dello stesso...

                              Ovviamente e\' solo una constatazione, ma vedo che viene largamente condivisa...
                              --- Trend my Friend ---

                              Comment

                              • Marco Bosco
                                Senior Member

                                • Sep 2012
                                • 419

                                #45
                                Originariamente Scritto da BMM
                                SECONDO ME, scrivere 4 script separati è solo apparentemente più semplice ma in realtà complica parecchio la scrittura di codici poco più che banali perchè dichiarare 4 volte le variabili è una complicazione pazzesca perchè, e sono pronto a scommetterci, prima o poi tutti si incarteranno facendo modifiche su uno script dimenticandosi di trasferirle negli altri tre.

                                Prendendo ad esempio il codice di prima, ove in ognuno si deve dichiarare le stesse bande, io avrei preferito scrivere un unico script definendo le condizioni di buy, sell ecc come semplice variabili, ovviamente vettoriali come il resto


                                Codice:
                                # Definiamo le variabili
                                INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7)
                                
                                SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
                                SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
                                SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
                                SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
                                SET SignalLine = LR(@price, @SLperiods)
                                
                                Buy = CROSSOVER(SignalLine, BigBottom)
                                
                                Sell = CROSSOVER(BigTop,SignalLine)
                                
                                ExitLong = CROSSOVER(SmallBottom,SignalLine)
                                
                                ExitShort = CROSSOVER(SmallTop,SignalLine)
                                Non vi piace di più? E\' molto più semplice!

                                Tra l\'altro sta tutto in una pagina e con un solo colpo d\'occhio si vede tutto

                                Ciao BMM,
                                scusate se mi intrometto, potrei sbagliarmi ma forse c\'è stato un fraintendimento?!

                                Tiziano credo che volesse dire proprio il contrario cioè che con EasyScript NON è necessario dichiarare 4 volte le variabili...ma UNA SOLO VOLTA.

                                E per questa ragione appunto è una SEMPLIFICAZIONE.

                                Per avere evidenza di questo potete prendere appunto come esempio il beeBobao, aprendolo nell\'editor..

                                Se fate caso la dichiarazione delle variabili è solo sullo Script Buy con questa riga:

                                Codice:
                                INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7)

                                Se andate ad editare il codice noterete infatti che nello script BUY è presente questo codice:

                                Codice:
                                # Definiamo le variabili
                                INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7)
                                
                                SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
                                SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
                                SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
                                SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
                                SET SignalLine = LR(@price, @SLperiods)
                                
                                # Primo Buy
                                CROSSOVER(SignalLine, BigBottom)

                                mentre nello script sell è presente questo: (in cui le variabili (INPUTS) NON sono ridefinite in quanto sono sufficienti quelle definite nello script BUY)

                                Codice:
                                # Definiamo le variabili
                                SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
                                SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
                                SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
                                SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
                                SET SignalLine = LR(@price, @SLperiods)
                                
                                # Primo Sell
                                CROSSOVER(BigTop,SignalLine)
                                Per questa ragione NON c\'è rischio di dimenticarsi di andare ad aggiornare eventuali valori di prova tra i vari script.

                                Mentre per la questione di tenerli separati è appunto solo per comodità in quando le variabili sono condivise tra gli script. Ed ognuno di noi puoi benissimo immaginare se gli torna più logico che gli script siano uno concatenato uno di seguito all\'altro.

                                Se invece per variabili intendete questo blocco di istruzioni:

                                Codice:
                                SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
                                SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
                                SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
                                SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
                                SET SignalLine = LR(@price, @SLperiods)
                                Vorrei farvi notare che sono ripetute in tutti gli script tutte le righe probabilmente a solo scopo didattico, in quanto per esempio nel Buy sono necessarie solo la :

                                SignalLine e la BigBottom e le altre righe possono essere proprio cancellate


                                Rimarrebbe solo la SignalLine da ri-dichiarare... un piccolo prezzo da pagare per una chiarezza migliore.

                                Ma se proprio non vi basta.. si può evitare anche quella ...

                                Infatti potete creare una vostra funzione Salvarla con il nove MySignalLine e poi nello script Buy scrivere semplicemente:

                                Codice:
                                SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
                                CROSSOVER(MySignalLine(@price, @SLperiods), BigBottom)
                                ovviamente per via della semplicità della MySignalLine potreste scrivere direttamente:

                                Codice:
                                CROSSOVER(LR(@price, @SLperiods), BigBottom)

                                saluti,
                                Marco Bosco
                                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...