un aiutino

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

    #1

    un aiutino

    chiedo ai più esperti,
    se io ho un signal scritto in questo modo:
    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 condizione1 = (somma = 1)
    SET condizione2 = ((TIME >= @minEntryTime) AND (TIME < @maxEntryTime))

    combinazione AND condizione1 AND condizione2


    ma volessi che il signal entrasse non sul close della barra che genera il primo incrocio rialzista del MACD, così come impostato sul signal, bensì sul close della barra successiva, a condizione che il close sia maggiore del max creatosi sulla barra dell\'incrocio....quali altri condizioni dovrei aggiungere al signal?
  • Apocalips
    Senior Member

    • May 2011
    • 2630

    #2
    Originariamente Scritto da viser12000
    chiedo ai più esperti,
    se io ho un signal scritto in questo modo:
    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 condizione1 = (somma = 1)
    SET condizione2 = ((TIME >= @minEntryTime) AND (TIME < @maxEntryTime))

    combinazione AND condizione1 AND condizione2


    ma volessi che il signal entrasse non sul close della barra che genera il primo incrocio rialzista del MACD, così come impostato sul signal, bensì sul close della barra successiva, a condizione che il close sia maggiore del max creatosi sulla barra dell\'incrocio....quali altri condizioni dovrei aggiungere al signal?
    Ciao,

    prova in questa maniera

    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 condizione1 = (somma = 1)
    SET condizione2 = ((TIME >= @minEntryTime) AND (TIME < @maxEntryTime))


    SET COND = combinazione AND condizione1 AND condizione2
    SET MASSIMO = CHANGEIF(COND, high)



    REF(COND, 1) AND CLOSE > MASSIMO

    Apo
    Last edited by Apocalips; 25-09-17, 23:36.
    ....non si desidera ciò che è facile ottenere (Ovidio)....

    Comment

    • viser12000
      Junior Member
      • Aug 2009
      • 23

      #3
      grazie mille Apo... non ci sarei mai arrivato

      Comment

      • viser12000
        Junior Member
        • Aug 2009
        • 23

        #4
        ulteriore aiuto

        Pre i più esperti,
        so di chiedere molto ma mi sono stancato di sbattere contro il muro...per cui ci riprovo, anche perchè credo non sia complicato...vengo al dunque:
        se in un signal entrato a mercato, ad esempio al ribasso, io voglio settare uno stop variabile, parametrato a un close maggiore di un massimo, calcolato sulle barre comprese tra due incroci, il primo rialzista ed il secondo ribassista del MACD, come va impostato lo script?
        io ho provato a scriverlo in questo modo, ma è sicuramente sbagliato perchè non rispetta le indicazioni che ho posto sopra:

        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 condizione1 = (somma = 1)

        SET combinazione = CROSSUNDER(A, B) AND (C < D)
        SET condSMA = CROSSUNDER(C, D)
        SET periodo = LASTIF(condSMA)
        SET somma = SUM(combinazione, periodo)
        SET condizione2 = (somma = 1)


        SET condizione3 = BARNUMBER > condizione1 AND BARNUMBER < condizione1
        SET massimo = HighestHighvalue(condizione3)
        CLOSE > massimo

        Comment

        • Andrea Cagalli
          Senior Member
          • Oct 2010
          • 3995

          #5
          Originariamente Scritto da viser12000
          Pre i più esperti,
          so di chiedere molto ma mi sono stancato di sbattere contro il muro...per cui ci riprovo, anche perchè credo non sia complicato...vengo al dunque:
          se in un signal entrato a mercato, ad esempio al ribasso, io voglio settare uno stop variabile, parametrato a un close maggiore di un massimo, calcolato sulle barre comprese tra due incroci, il primo rialzista ed il secondo ribassista del MACD, come va impostato lo script?
          io ho provato a scriverlo in questo modo, ma è sicuramente sbagliato perchè non rispetta le indicazioni che ho posto sopra:

          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 condizione1 = (somma = 1)

          SET combinazione = CROSSUNDER(A, B) AND (C < D)
          SET condSMA = CROSSUNDER(C, D)
          SET periodo = LASTIF(condSMA)
          SET somma = SUM(combinazione, periodo)
          SET condizione2 = (somma = 1)


          SET condizione3 = BARNUMBER > condizione1 AND BARNUMBER < condizione1
          SET massimo = HighestHighvalue(condizione3)
          CLOSE > massimo
          Ciao caro,
          è un po complesso comunque vediamo di darti una mano, intanto:

          Codice:
          SET condizione3 = BARNUMBER > condizione1 AND BARNUMBER < condizione1
          questa condizione è corretta? Cioè volevi scrivere condizione1 e condizione1 oppure condizione1 e condizione2?

          Ciao Ciao
          Manuale beeTrader

          Comment

          • viser12000
            Junior Member
            • Aug 2009
            • 23

            #6
            Ciao Andrea,
            intanto grazie per la disponibilità, si hai ragione tu, si tratta della condizione2 ....a me servirebbe, in pratica, delimitare un\'area, i cui estremi sono identificati con i due incroci (il primo è il crossover e il secondo il crossunder), e delle barre comprese tra questi due estremi, voglio poi definire il massimo registrato.

            Comment

            • Apocalips
              Senior Member

              • May 2011
              • 2630

              #7
              Originariamente Scritto da viser12000
              Ciao Andrea,
              intanto grazie per la disponibilità, si hai ragione tu, si tratta della condizione2 ....a me servirebbe, in pratica, delimitare un\'area, i cui estremi sono identificati con i due incroci (il primo è il crossover e il secondo il crossunder), e delle barre comprese tra questi due estremi, voglio poi definire il massimo registrato.

              # Contatore barre dal crossover al crossunder:
              SET contatore = LASTIF (A < B) dove A e B sono i 2 indicatori che vuoi incrociare


              # Massimo tra il crossover e il crossunder:
              SET massimo = MAX(HIGH, contatore)




              Apo
              Last edited by Apocalips; 25-10-17, 21:56.
              ....non si desidera ciò che è facile ottenere (Ovidio)....

              Comment

              • viser12000
                Junior Member
                • Aug 2009
                • 23

                #8
                grazie Apo


                Originariamente Scritto da Apocalips
                # Contatore barre dal crossover al crossunder:
                SET contatore = LASTIF (A < B) dove A e B sono i 2 indicatori che vuoi incrociare


                # Massimo tra il crossover e il crossunder:
                SET massimo = MAX(HIGH, contatore)




                Apo

                Comment

                • viser12000
                  Junior Member
                  • Aug 2009
                  • 23

                  #9
                  per apo

                  ciao Apo,
                  ho provato a impostare i tuoi imput sul grafico ma non restituisce quanto desiderato, in pratica:
                  ho sostituito la parte di codice da te suggerita (SET contatore = LASTIF (A < B) dove A e B sono i 2 indicatori che vuoi incrociare) sullo exitshortscript che risulta adesso scritto nel seguente modo:
                  SET combinazione = CROSSOVER(A, B) AND (C < D)
                  SET condSMA = CROSSOVER(C, D)
                  SET periodo = LASTIF(condSMA)
                  SET somma = SUM(combinazione, periodo)
                  SET condizione1 = (somma = 1)

                  SET combinazione = CROSSUNDER(A, B) AND (C < D)
                  SET condSMA = CROSSUNDER(C, D)
                  SET periodo = LASTIF(condSMA)
                  SET somma = SUM(combinazione, periodo)
                  SET condizione2 = (somma = 1)

                  # Contatore barre dal crossover al crossunder:

                  SET contatore = LASTIF (condizione1 < condizione2)

                  # Massimo calcolato nel periodo precedente:

                  SET massimo = MAX(HIGH, contatore)
                  SET condizione uscita = CLOSE > massimo

                  dove sbaglio ancora?

                  Comment

                  Working...