Allmänt meddelande

Collapse
No announcement yet.

Ej köp och sälj i samma period.

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

  • Ej köp och sälj i samma period.

    Vilket är det enklaste sättet att säkerställa att man inte kan få både köp- och säljaffärer i samma period och papper?

    Jag har skrivit följande villkor för säljsignal.
    gt(d,LastTrade(b,d))
    där jag antar att "d" är innevarande periods tidsstämpel och att LastTrade(b,d) är tidsstämpeln för köpperioden.

    Jag har inte experimentellt lyckats visa att det fungerar. Därför ställer jag frågan.

    Kommer ovan skrivna villkor säkerställa att en säljaffär inte släpps igenom förrän perioden efter köpperioden?

    Mvh
    Åke

  • #2
    Jo, det bör funka. Kör du Bekräfta-läge på ordermodellen så skall transar genereras.

    Men i backtesting är det kört med den principen.

    Du kan också göra subtraktion och göra till minuter och göra test på önskat tid.

    gt(mult(sub(d,LastTrade(b,d)),1440),5)

    Här testas att minst 5 minuter från köp.

    Du kan också baka ihop köp och säljscript i samma script och testa att den ena eller andra är utlöst.

    Då kan du göra saker som fungerar i backtesting också.

    T.ex

    lastbuy:=getval(3)
    lastsell:=getval(4)
    i30(
    del1köp= ---köpscriptets signal här-----
    lasttradek=Retval(if(And(del1köp,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)

    del1sälj= ---säljscriptets signal här-----
    lasttrades=Retval(if(And(del1sälj,gt(getval(3),getval(4))),D,Getval(4)),4)
    and(del1sälj,1)
    )

    globala variablerna 3 och 4 används för att spara undan tidpunkt D för köpsignal respektive säljsignal.

    'lastbuy' eller 'lastsell' kan användas precis som LastTrade(b,D) eller LastTrade(s,D) och fungera även för backtesting.

    Motsvarande mall om man använder säljstopp och vill veta var köpetskedde:


    flytfaktorstd:=0.98
    flytfaktorvinst:=0.99
    absfaktor:=0.99
    vinstfaktor:=1.01
    bakåt1:=200
    lastbuy:=getval(3)
    lastsell:=getval(4)
    i30(
    del1köp= ---köpscriptets signal här-----
    lasttradek=Retval(if(And(del1köp,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)

    stoppok=hhv(And(ge(d,getval(3)),lt(ref(d,1),getval(3))),bakåt1)
    köppris=aref(s,del1sedanköp:bakåt1)
    efterinköp=if(ge(d,getval(3)),h,0)
    highlevelb=hhv(efterinköp,bakåt1)
    vinst=gt(highlevelb,mult(köppris,vinstfaktor))
    flytnivå=if(vinst,flytfaktorvinst,flytfaktorstd)
    stopps1=mx(mult(highlevelb,flytnivå),mult(köppris,absfaktor))
    del1sälj=and(stoppok,le(l,stopps1))
    lasttrades=Retval(if(And(del1sälj,gt(getval(3),getval(4))),D,Getval(4)),4)
    and(del1sälj,1)
    )

    Comment


    • #3
      Saknad rad i säljstoppen

      Här är det komplett.

      Raden del1sedansälj saknades.

      flytfaktorstd:=0.98
      flytfaktorvinst:=0.99
      absfaktor:=0.99
      vinstfaktor:=1.01
      bakåt1:=200
      lastbuy:=getval(3)
      lastsell:=getval(4)
      i30(
      del1köp= ---köpscriptets signal här-----
      lasttradek=Retval(if(And(del1köp,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
      del1sedanköp=hhvbars(And(ge(d,getval(3)),lt(ref(d,1),getval(3))),bakåt1)
      stoppok=hhv(And(ge(d,getval(3)),lt(ref(d,1),getval(3))),bakåt1)
      köppris=aref(s,del1sedanköp:bakåt1)
      efterinköp=if(ge(d,getval(3)),h,0)
      highlevelb=hhv(efterinköp,bakåt1)
      vinst=gt(highlevelb,mult(köppris,vinstfaktor))
      flytnivå=if(vinst,flytfaktorvinst,flytfaktorstd)
      stopps1=mx(mult(highlevelb,flytnivå),mult(köppris,absfaktor))
      del1sälj=and(stoppok,le(l,stopps1))
      lasttrades=Retval(if(And(del1sälj,gt(getval(3),getval(4))),D,Getval(4)),4)
      and(del1sälj,1)
      )

      Comment


      • #4
        bakåt1:=200
        lastbuy:=getval(3)
        i30(
        del1köp= ---köpscriptets signal här-----
        lasttradek=Retval(if(And(del1köp,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
        del1sedanköp=hhvbars(And(ge(d,getval(3)),lt(ref(d,1),getval(3))),bakåt1)
        köppris=aref(s,del1sedanköp:bakåt1)


        Om jag har fattat rätt så ska alltså "köppris" kunna ersätta LastTrade(b,p) under förutsättning att "lasttradek" är SANT ?
        I så fall skulle jag ju kunna ersätta funktionen "exponerad" i mina script med "lasttradek" och använda "köppris" som input istället för LastTrade(b,p).

        Är ovanstående allt som behövs om man vill använda en egen stopp?

        Comment


        • #5
          Variabeln lasttradek använder du aldrig egentligen. Den finns där mest för att Retval() skall ha en destination och det hjälper läsbarheten lite. Samma för lasttrades.

          Däremot om värdet stoppok är sant så finns giltiga värden. Om man hittat ett värde i hhv() där så blir det det sant.

          Så stoppok anger att det finns giltiga värden för stoppen och ett pris för stoppen.

          Jag har inte satt mig in i exponerad vad det gör så jag kan inte uttala mig om just det fallet.

          Comment


          • #6
            Ok, då är jag förhoppningsvis med.

            Hur många minnesrefar kan man göra i ett script?

            Comment


            • #7
              32 st med upp till 10 parentesdjup i varje.

              Comment

              Working...
              X