Allmänt meddelande

Collapse
No announcement yet.

Analysdrivet triggerskript från underliggande tillgång för ETP

Collapse
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Analysdrivet triggerskript från underliggande tillgång för ETP

    Varning: Nedan är inte testat ännu och det är en bugg. Se nedan för rättad version

    Har knåpat ihop ett triggerskript som tar Gvar och sätter tidstriggers. Har inte testat det ännu. Tanken är att när MACD2 (S) ger signal så aktiveras skriptet via tid1. Se skript för OMX-triggers nedan. Man kan byta trigger genom att låta ett annat skript läsa in variabel 100 (för exit long) och 101 (för exita en köpt shortposition).

    1) Säljskriptet exempel för Long:

    { Exit Long position via en trailstop efter signal från analystrigger }
    { 160823 }
    max_procent:=6 {max procent tillåten spread}

    klock2:=1042
    stoppgräns:=mult(scrpar(16),0.60) {Initial SL reducerad till 60 proc}
    { }
    i1(
    {Analystrigger startar klockan för skriptet, om avstängd så är tid 1380}
    klock1=GetGvar(100)

    spread_ok=lt(div(s,b),add(div(max_procent,100),1))
    samma_dag=eqv(int(d),int(date()))
    öppet=ge(mult(1440,sub(market(c),frac(date()))),4)
    { }
    okantal=gt(portfolio(v),0)
    index=and(and(eqv(hhv(v,10),0),and(eqv(s,0),eqv(b,0))),gt(llv(c,10),0))


    { Villkor för att aktivera bevakning }
    tid1=gt(int(mult(frac(d),1440)),klock1)
    tid2=lt(int(mult(frac(d),1440)),klock2)

    start=if(and(öppet,ge(d,lasttrade(b,d))),if(spread_ok,b,0),0)
    maxhittills=hhv(start,502)

    stoploss=Sub(maxhittills,stoppgräns)

    { Koppla ihop villkor }

    sälj1=and(tid1,tid2)
    sälj2=and(le(if(index,c,b),stoploss),sälj1)
    sälj3=and(sälj2,or(index,spread_ok))
    sälj4=and(and(and(sälj3,samma_dag),okantal),öppet)
    mult(sälj4,10)
    )

    2) Skript för att sätta triggers på valt index eller underliggande tillgång

    { Sätter triggers till script från MACD-signaler. Triggers är tidsangivelser som aktiverar en flytstopp }
    { 160823 }

    i5(

    tidvalue=int(mult(frac(d),1440))
    ExitLong=MACD2(S)
    ExitShort=MACD2(B)

    { Nollar cell 100 för MACD sälj som är exit long och cell 101 för MACD köp som är exit short första minuten med att sätta tid som är omöjlig dvs kl 23 }

    nollacell=and(eqv(xtime(date(),m),0),eqv(xtime(date(),h),9))
    SetGVarIf(1380,100,nollacell)
    SetGVarIf(1380,101,nollacell)


    { Vid exit long signal så sätts cell 100 till tiden då säljskriptet ska starta dvs nu. Om signalen reverseras så skjuts tiden till 23 igen }


    SetGVarIf(tidvalue,100,ExitLong)
    SetGVarIf(1380,100,ExitShort)


    { Vid exit short signal så sätts cell 101 till tiden då säljskriptet ska starta dvs nu. Om signalen reverseras så skjuts tiden till 23 igen }


    SetGVarIf(tidvalue,101,ExitShort)
    SetGVarIf(1380,101,ExitLong)


    )
    Last edited by HenrikSyst; 2016-10-27, 20:55.

  • #2
    Nu får du sätta igång att simulera dina olika script!
    Hur blir resultatet?

    Med vänlig hälsning
    Bertil

    Comment


    • #3
      Har bara basversionen just nu. Är ganska ny på detta.

      Comment


      • #4
        Dessutom tog min 13 årige son min kraftfulla dator för att spela Battlefield. Min fru blev glad för att han flyttade allt till min ex fru. Så nu slipper hon höra Skypandet.

        Comment


        • #5
          Ursprungligen postat av HenrikSyst Visa inlägg
          Har bara basversionen just nu. Är ganska ny på detta.
          Du bör genast uppgradera till PRO-versionen. Det är ju först då man börjar att simulera som man får kvittens på hur bra strategierna fungerar.
          Det behövs inte särskilt kraftfull dator för att simulera.

          Med vänlig hälsning
          Bertil

          Comment


          • #6
            Funderar på det. Började med AT i juni

            Comment


            • #7
              Pro fanns ju inte då jag började scripta, så jag fick testa allting skarpt (blev väldigt dyrt ) Nu då jag kan simulera först så blir det billigare.

              mvh
              Bertil

              Comment


              • #8
                Upptäckte en bugg i ovan.

                Måste ersätta Lastrade med find

                Comment


                • #9
                  Tror jag har lösningen på ovan nu men jag testar lite själv och återkommer

                  Comment


                  • #10
                    Har skaffat Pro nu. Ganska många överraskningar blev det för mig. Det som jag trodde var optimalt var inte det bästa. Har faktiskt suttit hukad sedan fredagskväll över datorn och knåpat med 4-5 timmars sömn per natt. Frugan är sur på mig.

                    Comment


                    • #11
                      Som sagt, vi får fixa en varningstext för Analyzern - "Starkt beroendeframkallande"....och det blev ju ännu värre sedan vi fixade dygnsbuggen.

                      Comment


                      • #12
                        Version som är testad i analysbänk och som körs skarpt

                        Här kommer det en version för MACD-signal från underliggande tillgång som jag använder live på minis och har kört i analyzbänken. 30 minutersupplösning är bäst på daytrading och 60 min på swing. Sämst är 5 minuter för min strategi.

                        Har utgått från skript som finns och använt lite av Bertils tidstrail.


                        Skript för ordermodulen. Nedanskript startar då signal kommer om att MACD2 30 har givit säljsignal (fullbordad stapel). Från nedan kan man skapa motsvarande för exit shortmini också. Ändra signal till 101 nedan.

                        { Exit Long position via en trailstop efter signal från analystrigger }

                        { 160824 }
                        max_procent:=6 {max procent tillåten spread}

                        klock2:=1042

                        { }
                        i1(
                        {Analystrigger startar klockan för skriptet, om avstängd så är tid 1380}
                        klock1=GetGvar(100)
                        stoppgräns=mult(scrpar(16),0.6) {Initial SL reducerad till x proc. Själv använder jag en globalvariabel som jag sätter lite beroende på spread}
                        spread_ok=lt(div(s,b),add(div(max_procent,100),1))
                        samma_dag=eqv(int(d),int(date()))
                        öppet=ge(mult(1440,sub(market(c),frac(date()))),4)
                        { }
                        okantal=gt(portfolio(v),0)
                        index=and(and(eqv(hhv(v,10),0),and(eqv(s,0),eqv(b,0))),gt(llv(c,10),0))


                        { Villkor för att aktivera bevakning }
                        tid1=gt(int(mult(frac(d),1440)),klock1)
                        tid2=lt(int(mult(frac(d),1440)),klock2)

                        koll_spreadopen=and(öppet,spread_ok)
                        start=if(And(ge(d,LastTrade(b,d)),tid1),if(koll_spreadopen,b,0),0)

                        maxhittills=hhv(start,500)

                        stoploss=Sub(maxhittills,stoppgräns)
                        draw(stoploss,2,dgqb)

                        { Koppla ihop villkor }

                        sälj1=and(tid1,tid2)
                        sälj2=and(le(if(index,c,b),stoploss),sälj1)
                        sälj3=and(sälj2,or(index,spread_ok))
                        sälj4=and(and(and(sälj3,samma_dag),okantal),öppet)
                        mult(sälj4,10)
                        )



                        Här är själva trigger skriptet som man hänger på den underliggande tillgången som styr orderskriptet ovan för minis eller turbo. Nedan startar en klocka lite förenklat.

                        { Sätter triggers till script från MACD-signaler. Triggers är tidsangivelser som aktiverar en flytstopp }
                        { 160825 }

                        i30(

                        tidvalue=int(mult(frac(d),1440))
                        SignalLong=aref(MACD2(S),1)
                        SignalShort=aref(MACD2(B),1)

                        { Nollar cell 100 för MACD sälj som är exit long och cell 101 för MACD köp som är exit short första X minuterna med att sätta tid som är omöjlig dvs kl 23}

                        nollacell=and(le(xtime(date(),m),30),eqv(xtime(date(),h),9))
                        SetGVarIf(1380,100,nollacell)
                        SetGVarIf(1380,101,nollacell)


                        spärrav=not(nollacell)
                        ExitLong=and(spärrav,SignalLong)
                        ExitShort=and(spärrav,SignalShort)




                        { Vid exit long signal så sätts cell 100 till tiden då säljskriptet ska starta dvs nu.Värdet vänds vid omvänd signal}


                        SetGVarIf(tidvalue,100,ExitLong)
                        SetGVarIf(1380,100,ExitShort)


                        { Vid exit short signal så sätts cell 101 till tiden då säljskriptet ska starta dvs nu. Värdet vänds vid omvänd signal}


                        SetGVarIf(tidvalue,101,ExitShort)
                        SetGVarIf(1380,101,ExitLong)


                        )

                        Comment

                        Working...
                        X