Come filtrare i segnali per ottenere l'alternanza di trade Buy-Sell

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

    • Dec 2012
    • 443

    #1

    Come filtrare i segnali per ottenere l'alternanza di trade Buy-Sell

    Avrei bisogno del vostro aiuto per risolvere un problema di programmazione e anche per avere una vostra opinione sui miei ragionamenti.

    Ho un Signal basato su un indicatore (nel caso specifico si tratta del Williams %R, ma può valere per qualsiasi altro indicatore).
    Funziona bene sui TF lunghi, come dimostrato da Tiziano recentemente.
    In alcuni casi da buoni risultati anche su TF inferiori.

    Poiché ho notato che su alcuni sottostanti e a certi TF, l\'indicatore da un buon segnale di ingresso ma poi il trade chiude in perdita o si rimangia buona parte del gain (vedi immagini), volevo valutare la possibilità di adottare un take profit evitando però un rientro a mercato dello stesso segno.

    Immagine 124.jpg


    Nell\'immagine sotto un esempio in cui adottando una serie di Take Profit (anziché aspettare la chiusura del segnale), si migliora sensibilmente il gain finale.

    Immagine 125.jpg


    Le regole che ho impostato sono le seguenti:

    Codice:
    #Buy Script
    INPUTS: @periods(300)
    SET P= @periods
    WPR (P) > -35 AND REF (WPR (P), 1) <= - 35

    Codice:
    #Sell Script
    SET P= @periods
    WPR (P) < -65 AND REF (WPR (P), 1) >= - 65
    Codice:
    #Exit long Script
    SET P= @periods
    WPR (P) < -65 AND REF (WPR (P), 1) >= - 65
    Codice:
    #Exit short Script
    SET P= @periods
    WPR (P) > -35 AND REF (WPR (P), 1) <= - 35
    La regola che non riesco a codificare è:

    Al raggiungimento del TP, scartare gli altri segnali di ingresso dello stesso segno fino al raggiungimento del segnale di segno opposto.

    In sostanza voglio avere alternanza trade Buy-Sell-Buy....

    Aspetto fiducioso suggerimenti.
    Grazie.

    Alex
  • Smash
    Senior Member

    • Feb 2012
    • 354

    #2
    Originariamente Scritto da alex69
    Avrei bisogno del vostro aiuto per risolvere un problema di programmazione e anche per avere una vostra opinione sui miei ragionamenti.

    Ho un Signal basato su un indicatore (nel caso specifico si tratta del Williams %R, ma può valere per qualsiasi altro indicatore).
    Funziona bene sui TF lunghi, come dimostrato da Tiziano recentemente.
    In alcuni casi da buoni risultati anche su TF inferiori.

    Poiché ho notato che su alcuni sottostanti e a certi TF, l\'indicatore da un buon segnale di ingresso ma poi il trade chiude in perdita o si rimangia buona parte del gain (vedi immagini), volevo valutare la possibilità di adottare un take profit evitando però un rientro a mercato dello stesso segno.

    [ATTACH=CONFIG]16844[/ATTACH]


    Nell\'immagine sotto un esempio in cui adottando una serie di Take Profit (anziché aspettare la chiusura del segnale), si migliora sensibilmente il gain finale.

    [ATTACH=CONFIG]16845[/ATTACH]


    Le regole che ho impostato sono le seguenti:

    Codice:
    #Buy Script
    INPUTS: @periods(300)
    SET P= @periods
    WPR (P) > -35 AND REF (WPR (P), 1) <= - 35

    Codice:
    #Sell Script
    SET P= @periods
    WPR (P) < -65 AND REF (WPR (P), 1) >= - 65
    Codice:
    #Exit long Script
    SET P= @periods
    WPR (P) < -65 AND REF (WPR (P), 1) >= - 65
    Codice:
    #Exit short Script
    SET P= @periods
    WPR (P) > -35 AND REF (WPR (P), 1) <= - 35
    La regola che non riesco a codificare è:

    Al raggiungimento del TP, scartare gli altri segnali di ingresso dello stesso segno fino al raggiungimento del segnale di segno opposto.

    In sostanza voglio avere alternanza trade Buy-Sell-Buy....

    Aspetto fiducioso suggerimenti.
    Grazie.

    Alex

    Ciao Alex,

    in pratica è lo stesso problema di cui si era parlato qui:

    E' da varie settimane che mi stò domandando se é possibile quanto descritto nel titolo della discussione. Ho provato in BeeTrader innumerevoli altre strade per eludere il problema ma senza risultato. P. es.: sono long, interviene l'exitLong ma se le condizioni che caratterizzano lo script di buy permangono, interviene


    anzi è persino un po\' più semplice perchè non hai bisogno di codificare nè l\'ExitLong Script nè l\'ExitShort Script.

    Pertanto una soluzione tipo quella proposta al post #4 di quel Thread nel tuo caso dovrebbe esserti sufficiente, senza ExitLong Script ed ExitShort Script.
    Last edited by Smash; 16-11-14, 19:36.

    Comment

    • alex69
      Senior Member

      • Dec 2012
      • 443

      #3
      Originariamente Scritto da Smash
      Ciao Alex,

      in pratica è lo stesso problema di cui si era parlato qui:

      E' da varie settimane che mi stò domandando se é possibile quanto descritto nel titolo della discussione. Ho provato in BeeTrader innumerevoli altre strade per eludere il problema ma senza risultato. P. es.: sono long, interviene l'exitLong ma se le condizioni che caratterizzano lo script di buy permangono, interviene


      anzi è persino un po\' più semplice perchè non hai bisogno di codificare nè l\'ExitLong Script nè l\'ExitShort Script.

      Pertanto una soluzione tipo quella proposta al post #4 di quel Thread nel tuo caso dovrebbe esserti sufficiente, senza ExitLong Script ed ExitShort Script.
      Ciao Smash,
      grazie di cuore per il tuo aiuto.:cheerful:

      Domani provo a integrare lo script.
      Spero di poterlo far funzionare correttamente, sfidando le mie modeste capacità di programmazione.
      Incrociamo infine le dita sperando che ne venga fuori un discreto TS.
      A buon rendere.

      Comment

      • Apocalips
        Senior Member

        • May 2011
        • 2791

        #4
        Originariamente Scritto da alex69
        Ciao Smash,
        grazie di cuore per il tuo aiuto.:cheerful:

        Domani provo a integrare lo script.
        Spero di poterlo far funzionare correttamente, sfidando le mie modeste capacità di programmazione.
        Incrociamo infine le dita sperando che ne venga fuori un discreto TS.
        A buon rendere.
        Vai tranquillo che funziona, ecco il TS lavorare correttamente con lo script di Smash che risolve brillantemente il problema degli ingressi indesiderati tra un segnale e l\'altro:

        1.jpg 2.PNG



        ...e con il Bund a timeframe 1 minuto sembra andar molto bene :

        1.jpg2.PNG


        lo script è semplice, basta sostiuire le condizioni buy e sell

        Apo
        Last edited by Apocalips; 17-11-14, 01:35.
        ....non si desidera ciò che è facile ottenere (Ovidio)....

        Comment

        • alex69
          Senior Member

          • Dec 2012
          • 443

          #5
          Originariamente Scritto da Apocalips
          Vai tranquillo che funziona, ecco il TS lavorare correttamente con lo script di Smash che risolve brillantemente il problema degli ingressi indesiderati tra un segnale e l\'altro:

          [ATTACH=CONFIG]16847[/ATTACH] [ATTACH=CONFIG]16848[/ATTACH]



          ...e con il Bund a timeframe 1 minuto sembra andar molto bene :

          [ATTACH=CONFIG]16849[/ATTACH][ATTACH=CONFIG]16850[/ATTACH]


          lo script è semplice, basta sostiuire le condizioni buy e sell

          Apo
          Splendido!!!:cheerful:
          Avere una tua conferma sulla bontà del sistema, modificato con lo script di Smash, è un\'ottima iniezione di fiducia.
          Fra un po\' mi metto al lavoro.....
          Grazie Apo.

          Alex

          Comment

          • alex69
            Senior Member

            • Dec 2012
            • 443

            #6
            Molto bene,
            pare che il TS sia sulla buona strada.
            Allego un paio di backtest su titoli azionari con TF 1H.

            Le immagini seguenti sono su A2A:

            Immagine 126.jpg Immagine 128.jpg Immagine 127.jpg


            Le immagini seguenti sono su Buzzi:

            Immagine 129.jpg Immagine 131.jpg Immagine 130.jpg

            Comment

            • DICECC
              Member
              • Nov 2008
              • 99

              #7
              Originariamente Scritto da alex69
              Ciao Smash,
              grazie di cuore per il tuo aiuto.:cheerful:

              Domani provo a integrare lo script.
              Spero di poterlo far funzionare correttamente, sfidando le mie modeste capacità di programmazione.
              Incrociamo infine le dita sperando che ne venga fuori un discreto TS.
              A buon rendere.
              Caro alex69
              visto che da solo non ci sono riuscito, e quindi le mie capacità di programmazione sono oltremodo più modeste delle tue, mi potresti indicare in dettaglio come hai modificato lo script per risolvere il problema da te in origine evidenziato?
              Grazie e cordiali saluti.

              Comment

              • alex69
                Senior Member

                • Dec 2012
                • 443

                #8
                Originariamente Scritto da DICECC
                Caro alex69
                visto che da solo non ci sono riuscito, e quindi le mie capacità di programmazione sono oltremodo più modeste delle tue, mi potresti indicare in dettaglio come hai modificato lo script per risolvere il problema da te in origine evidenziato?
                Grazie e cordiali saluti.

                Ciao DICECC,
                lo script di Smash serve a verificare che non si verifichi più di 1 trade dello stesso segno.

                Intanto si impostano le 2 condizioni si Buy e di Sell:
                Codice:
                SET ConditionBuy = (WPR (P) > -35 AND REF (WPR (P), 1) <= - 35)
                SET ConditionSell = (WPR (P) < -65 AND REF (WPR (P), 1) >= - 65)

                Di seguito si impostano i parametri di verifica:
                Codice:
                SET Position = ConditionBuy - ConditionSell
                SET LastPosition = CHANGEIF(Position <> 0, Position)
                Infine la condizione per far partire il segnale Buy:
                Codice:
                ConditionBuy AND REF(LastPosition, 1) <> 1
                Quest\'ultima condizione, nel Sell Script diventa:
                Codice:
                ConditionSell AND REF(LastPosition, 1) <> -1
                Le condizioni Exit Long ed Exit Short restano immutate.
                Ci devi inoltre aggiungere il set per il take profit.

                Da solo non ci sarei mai arrivato, ma rileggendo i vari passaggi con l\'aiuto contestuale, si riesce a capire la logica che sta dietro.:cheerful:

                Ecco il risultato finale del Buy Script:
                Codice:
                INPUTS: @periods(300), @takeprofit(100)
                SET TAKE_PROFIT= @takeprofit
                SET P= @periods
                
                #Criteri alternanza Buy-Sell
                SET ConditionBuy = (WPR (P) > -35 AND REF (WPR (P), 1) <= - 35)
                SET ConditionSell = (WPR (P) < -65 AND REF (WPR (P), 1) >= - 65)
                SET Position = ConditionBuy - ConditionSell
                SET LastPosition = CHANGEIF(Position <> 0, Position)
                 
                ConditionBuy AND REF(LastPosition, 1) <> 1
                Penso che così non avrai problemi.
                Se ho scritto qualche inesattezza Smash o Apo penso che me lo segnaleranno.
                Magari si potrebbero condividere i risultati più interessanti dei backtest che faremo in futuro.
                Saluti.

                Alex

                Comment

                • DICECC
                  Member
                  • Nov 2008
                  • 99

                  #9
                  Originariamente Scritto da alex69
                  Ciao DICECC,
                  lo script di Smash serve a verificare che non si verifichi più di 1 trade dello stesso segno.

                  Intanto si impostano le 2 condizioni si Buy e di Sell:
                  Codice:
                  SET ConditionBuy = (WPR (P) > -35 AND REF (WPR (P), 1) <= - 35)
                  SET ConditionSell = (WPR (P) < -65 AND REF (WPR (P), 1) >= - 65)

                  Di seguito si impostano i parametri di verifica:
                  Codice:
                  SET Position = ConditionBuy - ConditionSell
                  SET LastPosition = CHANGEIF(Position <> 0, Position)
                  Infine la condizione per far partire il segnale Buy:
                  Codice:
                  ConditionBuy AND REF(LastPosition, 1) <> 1
                  Quest\'ultima condizione, nel Sell Script diventa:
                  Codice:
                  ConditionSell AND REF(LastPosition, 1) <> -1
                  Le condizioni Exit Long ed Exit Short restano immutate.
                  Ci devi inoltre aggiungere il set per il take profit.

                  Da solo non ci sarei mai arrivato, ma rileggendo i vari passaggi con l\'aiuto contestuale, si riesce a capire la logica che sta dietro.:cheerful:

                  Ecco il risultato finale del Buy Script:
                  Codice:
                  INPUTS: @periods(300), @takeprofit(100)
                  SET TAKE_PROFIT= @takeprofit
                  SET P= @periods
                  
                  #Criteri alternanza Buy-Sell
                  SET ConditionBuy = (WPR (P) > -35 AND REF (WPR (P), 1) <= - 35)
                  SET ConditionSell = (WPR (P) < -65 AND REF (WPR (P), 1) >= - 65)
                  SET Position = ConditionBuy - ConditionSell
                  SET LastPosition = CHANGEIF(Position <> 0, Position)
                   
                  ConditionBuy AND REF(LastPosition, 1) <> 1
                  Penso che così non avrai problemi.
                  Se ho scritto qualche inesattezza Smash o Apo penso che me lo segnaleranno.
                  Magari si potrebbero condividere i risultati più interessanti dei backtest che faremo in futuro.
                  Saluti.

                  Alex
                  Ciao Alex
                  sei stato molto gentile a rispondermi in modo così tempestivo, dettagliato e preciso.
                  Ti ringrazio moltissimo e spero di poter in qualche modo ricambiare, magari con la condivisione cui hai accennato.
                  Cordialmente.
                  Dino

                  Comment

                  • Apocalips
                    Senior Member

                    • May 2011
                    • 2791

                    #10
                    Originariamente Scritto da alex69
                    Se ho scritto qualche inesattezza Smash o Apo penso che me lo segnaleranno.
                    Alex
                    Nessuna inesattezza Alex, il tuo script funziona correttamente.
                    Io lo renderei ancora piu snello con l\'utilizzo della funzione crossover creata apposta per semplificare le cose e per scrivere meno a parità di risultato, quindi:

                    buy script:

                    Codice:
                    INPUTS: @periods(300), @lowMark(-35), @highMark(-65), @TakeProfit (100)
                    
                    set take_profit = @TakeProfit
                    
                    set A = WilliamsPctR(@periods)
                    
                    set ConditionBuy = CROSSOVER(A, @lowMark)
                    set ConditionSell = CROSSOVER(@highMark, A)
                    
                    set Position = ConditionBuy - ConditionSell
                    set LastPosition = CHANGEIF(Position <> 0, Position)
                    
                    ConditionBuy AND REF(LastPosition, 1) <> 1
                    Sell script:

                    Codice:
                    set A = WilliamsPctR(@periods)
                    
                    set ConditionBuy = CROSSOVER(A, @lowMark)
                    set ConditionSell = CROSSOVER(@highMark, A)
                    
                    set Position = ConditionBuy - ConditionSell
                    set LastPosition = CHANGEIF(Position <> 0, Position)
                    
                    ConditionSell AND REF(LastPosition, 1) <> -1
                    Colgo l\'occasione per ringraziare il buon Smash che riesce sempre a trasformare un\' idea di trading in un codice EasySscript elegante, funzionante e perfettamente rispondente alle nostre aspettative. grazie.

                    Apo
                    Last edited by Apocalips; 18-11-14, 23:19.
                    ....non si desidera ciò che è facile ottenere (Ovidio)....

                    Comment

                    • alex69
                      Senior Member

                      • Dec 2012
                      • 443

                      #11
                      Originariamente Scritto da Apocalips
                      Nessuna inesattezza Alex, il tuo script funziona correttamente.
                      Io lo renderei ancora piu snello con l\'utilizzo della funzione crossover creata apposta per semplificare le cose e per scrivere meno a parità di risultato, quindi:

                      buy script:

                      Codice:
                      INPUTS: @periods(300), @lowMark(-35), @highMark(-65), @TakeProfit (100)
                      
                      set take_profit = @TakeProfit
                      
                      set A = WilliamsPctR(@periods)
                      
                      set ConditionBuy = CROSSOVER(A, @lowMark)
                      set ConditionSell = CROSSOVER(@highMark, A)
                      
                      set Position = ConditionBuy - ConditionSell
                      set LastPosition = CHANGEIF(Position <> 0, Position)
                      
                      ConditionBuy AND REF(LastPosition, 1) <> 1
                      Sell script:

                      Codice:
                      set A = WilliamsPctR(@periods)
                      
                      set ConditionBuy = CROSSOVER(A, @lowMark)
                      set ConditionSell = CROSSOVER(@highMark, A)
                      
                      set Position = ConditionBuy - ConditionSell
                      set LastPosition = CHANGEIF(Position <> 0, Position)
                      
                      ConditionSell AND REF(LastPosition, 1) <> -1
                      Colgo l\'occasione per ringraziare il buon Smash che riesce sempre a trasformare un\' idea di trading in un codice EasySscript elegante, funzionante e perfettamente rispondente alle nostre aspettative. grazie.

                      Apo

                      Grazie infinite Apo per questa semplificazione dello script.:cheerful:
                      La programmazione con EasyScript è affascinante.

                      Mi associo inoltre ai ringraziamenti rivolti al grande Smash.

                      Comment

                      • Cagalli Tiziano
                        Senior Member
                        • Dec 2007
                        • 11438

                        #12
                        Originariamente Scritto da Apocalips

                        Colgo l\'occasione per ringraziare il buon Smash che riesce sempre a trasformare un\' idea di trading in un codice EasySscript elegante, funzionante e perfettamente rispondente alle nostre aspettative. grazie.

                        Apo
                        Concordo Apo, Smah è veramente in gamba e sempre disponibile.

                        Grazie Smash e anche grazie ad Apo che è sempre disponibile e capace!
                        ..se corri dietro a due lepri, non ne prendi nemmeno una.

                        Comment

                        • Smash
                          Senior Member

                          • Feb 2012
                          • 354

                          #13
                          Originariamente Scritto da Apocalips
                          Colgo l\'occasione per ringraziare il buon Smash che riesce sempre a trasformare un\' idea di trading in un codice EasySscript elegante, funzionante e perfettamente rispondente alle nostre aspettative. grazie.

                          Apo
                          Grazie mille Apo,
                          io invece ringrazio te per tutti gli spunti sul trading che offri continuamente, che invitano alla riflessione e stimolano la creatività!

                          Comment

                          • Smash
                            Senior Member

                            • Feb 2012
                            • 354

                            #14
                            Originariamente Scritto da alex69
                            Grazie infinite Apo per questa semplificazione dello script.:cheerful:
                            La programmazione con EasyScript è affascinante.

                            Mi associo inoltre ai ringraziamenti rivolti al grande Smash.
                            Grazie Alex,
                            e bravo, perchè io ti ho indicato la strada, ma poi lo Script te lo sei scritto da solo!

                            Comment

                            • Smash
                              Senior Member

                              • Feb 2012
                              • 354

                              #15
                              Originariamente Scritto da Cagalli Tiziano
                              Concordo Apo, Smah è veramente in gamba e sempre disponibile.

                              Grazie Smash e anche grazie ad Apo che è sempre disponibile e capace!
                              Grazie Tiziano!

                              E complimenti perchè questo EasyScript combinato con i vari tools di beeTrader io lo trovo di una semplicità disarmante: scrivere e testare un trading system adesso è diventato veramente un giochetto!

                              Comment

                              Working...