crossover macd a seguito di crossover incrocio medie mobili

Collapse
X
 
  • Ora
  • Show
Clear All
new posts
  • viser12000
    Junior Member
    • Aug 2009
    • 23

    #1

    crossover macd a seguito di crossover incrocio medie mobili

    Salve,
    vorrei impostare uno script basato, ad esempio, sul primo incrocio al ribasso del macd sul signal, successivo all\' incrocio, sempre al ribasso, di una media mobile su un\'altra ma non riesco a collegare i due eventi, perchè l\'algoritmo me li ricerca sempre sulla stessa barra, ma a me non interessa il fattore temporale, espresso in barre. Come posso fare?
    Spero di essere riuscito a spiegarmi e, quanto alla risposta, credo sarà banale ma fin\' ora nn sono riuscito a scriverlo.
    Grazie
  • Andrea Cagalli
    Senior Member
    • Oct 2010
    • 3995

    #2
    Originariamente Scritto da viser12000
    Salve,
    vorrei impostare uno script basato, ad esempio, sul primo incrocio al ribasso del macd sul signal, successivo all\' incrocio, sempre al ribasso, di una media mobile su un\'altra ma non riesco a collegare i due eventi, perchè l\'algoritmo me li ricerca sempre sulla stessa barra, ma a me non interessa il fattore temporale, espresso in barre. Come posso fare?
    Spero di essere riuscito a spiegarmi e, quanto alla risposta, credo sarà banale ma fin\' ora nn sono riuscito a scriverlo.
    Grazie
    Ciao,
    ti riferisci ad un Signal vero? In questo caso, a quanto ho capito, basta che utilizzi > o < invece di crossover. Quindi nel tuo caso potrebbe essere:

    Buy Script:

    Codice:
    INPUTS: @price(CLOSE), @longCycle(26), @shortCycle(13), @signalPeriods(9), @periods1(10), @periods2(12) @matype(SIMPLE)
    
    
    SET A = MACD(@longCycle, @shortCycle, @signalPeriods, @matype)
    SET B = MACDSignal(@longCycle, @shortCycle, @signalPeriods, @matype)
    SET C = MovingAverage(@price, @periods1, @matype)
    SET D = MovingAverage(@price, @periods2, @matype)
    
    A > B AND C > D

    Sell Script:

    Codice:
    SET A = MACD(@longCycle, @shortCycle, @signalPeriods, @matype)
    SET B = MACDSignal(@longCycle, @shortCycle, @signalPeriods, @matype)
    SET C = MovingAverage(@price, @periods1, @matype)
    SET D = MovingAverage(@price, @periods2, @matype)
    
    A < B AND C < D
    Ciao Ciao
    Manuale beeTrader

    Comment

    • viser12000
      Junior Member
      • Aug 2009
      • 23

      #3
      Ciao Andrea e grazie per la risposta,
      Certo mi riferisco ad un signal, però io voglio entrare sul primo incrocio rialzista del MACD, che si verifica dopo un altro incrocio rialzista tra medie mobili, non voglio entrare ogniqualvolta il MACD è maggiore del signal, fermo restando l\'altra condizione.
      Non so se son riuscito a spiegarmi.



      Originariamente Scritto da Andrea Cagalli
      Ciao,
      ti riferisci ad un Signal vero? In questo caso, a quanto ho capito, basta che utilizzi > o < invece di crossover. Quindi nel tuo caso potrebbe essere:

      Buy Script:

      Codice:
      INPUTS: @price(CLOSE), @longCycle(26), @shortCycle(13), @signalPeriods(9), @periods1(10), @periods2(12) @matype(SIMPLE)
      
      
      SET A = MACD(@longCycle, @shortCycle, @signalPeriods, @matype)
      SET B = MACDSignal(@longCycle, @shortCycle, @signalPeriods, @matype)
      SET C = MovingAverage(@price, @periods1, @matype)
      SET D = MovingAverage(@price, @periods2, @matype)
      
      A > B AND C > D

      Sell Script:

      Codice:
      SET A = MACD(@longCycle, @shortCycle, @signalPeriods, @matype)
      SET B = MACDSignal(@longCycle, @shortCycle, @signalPeriods, @matype)
      SET C = MovingAverage(@price, @periods1, @matype)
      SET D = MovingAverage(@price, @periods2, @matype)
      
      A < B AND C < D
      Ciao Ciao

      Comment

      • Francario Massimiliano
        Administrator
        • Jul 2008
        • 1033

        #4
        Salve,

        Originariamente Scritto da viser12000
        Ciao Andrea e grazie per la risposta,
        Certo mi riferisco ad un signal, però io voglio entrare sul primo incrocio rialzista del MACD, che si verifica dopo un altro incrocio rialzista tra medie mobili, non voglio entrare ogniqualvolta il MACD è maggiore del signal, fermo restando l\'altra condizione.
        Non so se son riuscito a spiegarmi.
        Se non interpreto male la sua richiesta, dovrebbe usare un Buy Script così:

        Codice:
        INPUTS: @price(CLOSE), @longCycle(26), @shortCycle(13), @signalPeriods(9), @periods1(10), @periods2(12) @matype(SIMPLE)
        
        
        SET A = MACD(@longCycle, @shortCycle, @signalPeriods, @matype)
        SET B = MACDSignal(@longCycle, @shortCycle, @signalPeriods, @matype)
        SET C = MovingAverage(@price, @periods1, @matype)
        SET D = MovingAverage(@price, @periods2, @matype)
        
        
        CROSSOVER(A, B) AND (C > D)
        mentre per Sell Script:

        Codice:
        SET A = MACD(@longCycle, @shortCycle, @signalPeriods, @matype)
        SET B = MACDSignal(@longCycle, @shortCycle, @signalPeriods, @matype)
        SET C = MovingAverage(@price, @periods1, @matype)
        SET D = MovingAverage(@price, @periods2, @matype)
        
        CROSSUNDER(A, B) AND (C < D)

        In questo modo la condizione sul MACD è valida esclusivamente nella barra dove si verifica l\'incrocio, mentre la condizione sulla media mobile rimane valida dalla barra di incrocio fino all\'incrocio opposto successivo.


        Max Francario
        Manuale di beeTrader
        Manuale di Fiuto Beta

        Comment

        • argentobianco
          Senior Member
          • Jan 2010
          • 134

          #5
          scusate l\' interruzione, sto facendo un post di test. non potevo che farlo qui.

          Comment

          • viser12000
            Junior Member
            • Aug 2009
            • 23

            #6
            Ciao Max, e grazie per la risposta,
            mi riservo di verificare ma nn credo che funzioni...perchè come lo hai scritto tu, lo script mi fa entrare ogni volta che c\'è un incrocio rialzista del MACD, fermo restando l\'altra condizione, ma io voglio entrare solo al primo incrocio del Macd successivo all\'incrocio rialzista delle medie mobili.


            Originariamente Scritto da Francario Massimiliano
            Salve,



            Se non interpreto male la sua richiesta, dovrebbe usare un Buy Script così:

            Codice:
            INPUTS: @price(CLOSE), @longCycle(26), @shortCycle(13), @signalPeriods(9), @periods1(10), @periods2(12) @matype(SIMPLE)
            
            
            SET A = MACD(@longCycle, @shortCycle, @signalPeriods, @matype)
            SET B = MACDSignal(@longCycle, @shortCycle, @signalPeriods, @matype)
            SET C = MovingAverage(@price, @periods1, @matype)
            SET D = MovingAverage(@price, @periods2, @matype)
            
            
            CROSSOVER(A, B) AND (C > D)
            mentre per Sell Script:

            Codice:
            SET A = MACD(@longCycle, @shortCycle, @signalPeriods, @matype)
            SET B = MACDSignal(@longCycle, @shortCycle, @signalPeriods, @matype)
            SET C = MovingAverage(@price, @periods1, @matype)
            SET D = MovingAverage(@price, @periods2, @matype)
            
            CROSSUNDER(A, B) AND (C < D)

            In questo modo la condizione sul MACD è valida esclusivamente nella barra dove si verifica l\'incrocio, mentre la condizione sulla media mobile rimane valida dalla barra di incrocio fino all\'incrocio opposto successivo.


            Max Francario

            Comment

            • Francario Massimiliano
              Administrator
              • Jul 2008
              • 1033

              #7
              Salve,
              Originariamente Scritto da viser12000
              Ciao Max, e grazie per la risposta,
              mi riservo di verificare ma nn credo che funzioni...perchè come lo hai scritto tu, lo script mi fa entrare ogni volta che c\'è un incrocio rialzista del MACD, fermo restando l\'altra condizione, ma io voglio entrare solo al primo incrocio del Macd successivo all\'incrocio rialzista delle medie mobili.
              è un pò più complicato di quanto avevo inizialmente inteso. In ogni caso, bisogna sfruttare il fatto che le condizioni valutate come false hanno un valore numerico pari a 0, mentre se sono valutate vere hanno un valore numerico pari a 1.
              Con questa premessa, gli script dovrebbero essere i seguenti:

              Buy Script:

              Codice:
              INPUTS: @price(CLOSE), @longCycle(26), @shortCycle(13), @signalPeriods(9), @periods1(10), @periods2(12) @matype(SIMPLE)
               
               
              SET A = MACD(@longCycle, @shortCycle, @signalPeriods, @matype)
              SET B = MACDSignal(@longCycle, @shortCycle, @signalPeriods, @matype)
              SET C = MovingAverage(@price, @periods1, @matype)
              SET D = MovingAverage(@price, @periods2, @matype)
               
              SET combinazione = CROSSOVER(A, B) AND (C > D)
              SET condSMA = CROSSOVER(C, D)
              SET periodo = LASTIF(condSMA)
              SET somma = SUM(combinazione, periodo)
              SET condizione = (somma = 1)
              
              combinazione AND condizione

              Sell Script:

              Codice:
              SET A = MACD(@longCycle, @shortCycle, @signalPeriods, @matype)
              SET B = MACDSignal(@longCycle, @shortCycle, @signalPeriods, @matype)
              SET C = MovingAverage(@price, @periods1, @matype)
              SET D = MovingAverage(@price, @periods2, @matype)
               
              SET combinazione = CROSSUNDER(A, B) AND (C < D)
              SET condSMA = CROSSUNDER(C, D)
              SET periodo = LASTIF(condSMA)
              SET somma = SUM(combinazione, periodo)
              SET condizione = (somma = 1)
              
              combinazione AND condizione

              L\'interpretazione della parte di codice relativa al calcolo delle condizioni è un pò complicata.
              La variabile "combinazione" contiene la variabile che prima veniva usata come condizione di entrata, che genera più segnali a partire da un singolo incrocio delle medie.
              In "condSMA" viene memorizzato il crossover delle medie, ottenendo quindi un vettore di valori 0 ed 1. In "periodo" calcoliamo da quanto tempo (barre) è avvenuto l\'ultimo incrocio delle medie mobili.
              La variabile "somma" viene calcolata come somma del numero di segnali presenti in "combinazione" a partire da "periodo" barre fà. In questo modo, nel primo segnale dopo l\'incrocio delle medie, la variabile "somma" avrà il valore 1, mentre nel secondo segnale avrà il valore 2 e così via.
              In "condizione" ci assicuriamo di utilizzare esclusivamente il primo segnale a partire dall\'ultimo incrocio delle medie, e pertanto la condizione finale dello script è rappresentata da un AND tra "condizione" e "combinazione".


              Max Francario
              Manuale di beeTrader
              Manuale di Fiuto Beta

              Comment

              • viser12000
                Junior Member
                • Aug 2009
                • 23

                #8
                mille grazie max

                credo che ora sia la volta giusta,
                non pensavo fosse così complicato



                Originariamente Scritto da Francario Massimiliano
                Salve,


                è un pò più complicato di quanto avevo inizialmente inteso. In ogni caso, bisogna sfruttare il fatto che le condizioni valutate come false hanno un valore numerico pari a 0, mentre se sono valutate vere hanno un valore numerico pari a 1.
                Con questa premessa, gli script dovrebbero essere i seguenti:

                Buy Script:

                Codice:
                INPUTS: @price(CLOSE), @longCycle(26), @shortCycle(13), @signalPeriods(9), @periods1(10), @periods2(12) @matype(SIMPLE)
                 
                 
                SET A = MACD(@longCycle, @shortCycle, @signalPeriods, @matype)
                SET B = MACDSignal(@longCycle, @shortCycle, @signalPeriods, @matype)
                SET C = MovingAverage(@price, @periods1, @matype)
                SET D = MovingAverage(@price, @periods2, @matype)
                 
                SET combinazione = CROSSOVER(A, B) AND (C > D)
                SET condSMA = CROSSOVER(C, D)
                SET periodo = LASTIF(condSMA)
                SET somma = SUM(combinazione, periodo)
                SET condizione = (somma = 1)
                
                combinazione AND condizione

                Sell Script:

                Codice:
                SET A = MACD(@longCycle, @shortCycle, @signalPeriods, @matype)
                SET B = MACDSignal(@longCycle, @shortCycle, @signalPeriods, @matype)
                SET C = MovingAverage(@price, @periods1, @matype)
                SET D = MovingAverage(@price, @periods2, @matype)
                 
                SET combinazione = CROSSUNDER(A, B) AND (C < D)
                SET condSMA = CROSSUNDER(C, D)
                SET periodo = LASTIF(condSMA)
                SET somma = SUM(combinazione, periodo)
                SET condizione = (somma = 1)
                
                combinazione AND condizione

                L\'interpretazione della parte di codice relativa al calcolo delle condizioni è un pò complicata.
                La variabile "combinazione" contiene la variabile che prima veniva usata come condizione di entrata, che genera più segnali a partire da un singolo incrocio delle medie.
                In "condSMA" viene memorizzato il crossover delle medie, ottenendo quindi un vettore di valori 0 ed 1. In "periodo" calcoliamo da quanto tempo (barre) è avvenuto l\'ultimo incrocio delle medie mobili.
                La variabile "somma" viene calcolata come somma del numero di segnali presenti in "combinazione" a partire da "periodo" barre fà. In questo modo, nel primo segnale dopo l\'incrocio delle medie, la variabile "somma" avrà il valore 1, mentre nel secondo segnale avrà il valore 2 e così via.
                In "condizione" ci assicuriamo di utilizzare esclusivamente il primo segnale a partire dall\'ultimo incrocio delle medie, e pertanto la condizione finale dello script è rappresentata da un AND tra "condizione" e "combinazione".


                Max Francario

                Comment

                Working...