Allmänt meddelande

Collapse
No announcement yet.

Köp o Sälj i samma script

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

  • Köp o Sälj i samma script

    Jag har åter tagit upp tanken på att låta köpkriterier styra ett säljscript. Det är ett ganska långt script vars delar funkar så vitt jag kan förstå. Delen som jag inte får till är att undvika flera signaler av samma sort köp/sälj kommer efter varandra. Jag vill ju att t.ex första köpsignalen skall styra efterkommande säljsignal. Det handlar om intraday i 30 min upplösning. Jag har läst allt som finns på forumet (tror jag), men får ändå inte till denna detalj.

    Jag vill lägga tidpunkten för köpet i cell 3, och tidpunkten för säljsignalen i cell4.

    Har skrivit bl.a. följande:

    1Köp=köpscriptet
    1Sälj=säljscriptet

    lasttradeK=Retval(if(And(1köp,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
    lasttradeS=Retval(if(And(1Sälj,gt(getval(3),getval(4))),D,Getval(4)),4)

    Hur är den korrekta skrivningen när jag vill ha köpsignal men bara om föregående var sälj, alltså den första?
    Skall detta fungera även om det är flera dagar mellan signalerna?
    Även det omvända förhållandet är lika intressant.

  • #2
    du kan nyttja info i cellerna för detta:

    LastIsSell:=lt(getval(3),getval(4))

    Lägg in det som villkor i köpsignalen.

    och för att göra det läsbart och sedan enkelt överförbart till verklig online handel kan göra så här:

    Backtesting:

    LastSellPoint:=getval(4)
    LastBuyPoint:=getval(3)

    Oneline:

    LastSellPoint:=LastTrade(S,D)
    LastBuyPoint:=LastTrade(B,D)

    Jag har även gjort så här att jag nyttjat några celler för att lagra undan priset vid köp eller säljtillfället.

    köppris=Retval(if(And(1köp,or(ge(getval(4),getval(3)),eqv(getval(5),0))),c,Getval(5)),5)
    lasttradek=Retval(if(And(1köp,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)

    Ordningen är viktig. Så snart lasttradek gjorts så är cell 3 överskriven.

    Så ovan användes cell 5 för köpriset. Låt säga att du vill använda det för beräkning om vinst för att t.ex snäva upp stoppen om vinst.

    Här är ett komplett säljstoppscript förutom själva köpscriptet:

    flytfaktorstd:=0.98 {2% stoppfaktor om ännu ej vinst}
    flytfaktorvinst:=0.995 {0.5% stoppfaktor om vinst}
    absfaktor:=0.985 {oavsett andra inställning accepteras ej mer än 1.5% förlust från inköp}
    vinstfaktor:=1.025 {2.5% vinstkrav för att snäva stoppen}
    bakåt1:=960 {köp inom 2 veckor per 5minuters}
    i5(
    del1köp= ditt köpscript slutrad här
    köppris=Retval(if(And(del1köp,or(ge(getval(4),getval(3)),eqv(getval(5),0))),c,Getval(5)),5)
    lasttradek=Retval(if(And(del1köp,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
    stoppok=hhv(le(d,getval(3)),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))
    stoppsälj=and(stoppok,le(l,stopps1))
    draw(if(and(stoppok,gt(getval(3),getval(4))),stopps1,add(h,10)),7,drqb)
    lasttrades=Retval(if(And(stoppsälj,gt(getval(3),getval(4))),D,Getval(4)),4)
    mult(stoppsälj,28)
    )

    Den ritar stoppnivån med draw()-raden då köp är senaste i tiden. Annars 10 över high.

    Jag använder stoppok som test att jag verkligen hittat köpvärdet.

    Comment


    • #3
      Tyvärr Lasse, jag får det inte att fungera! Glöm onlinefallet där man lätt kan styra att undvika flera signaler i följd med antalskriterier. Detta handlar enbart om backtestning. Jag har först skrivit alla argumenten för både köp- och säljsignalen, så jag till slut kommer fram till följande och skrivit dem i denna ordning

      Köpsignal=xxx
      1köp=and(Köpsignal,NOT(aref(Köpsignal,1)))
      Säljsignal=xxx
      1sälj=and(Säljsignal,NOT(aref(Säljsignal,1)))

      lasttradeK=Retval(if(And(1köp,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
      lasttradeS=Retval(if(And(1Sälj,gt(getval(3),getval(4))),D,Getval(4)),4)

      LastIsBuy=gt(getval(3),getval(4))
      LastIsSell=lt(getval(3),getval(4))

      Alla dessa skrivningar tycks funka var för sig, därför har jag försökt att skriva som slutgiltig signal:

      and(1köp,LastIsSell) {om jag vill generera en köpsignal}
      and(1sälj,LastIsBuy) {om jag vill generera en säljsignal}

      Men så enkelt går det tydligen inte!
      När 1köp blir SANT blir också automatiskt LastIsBuy SANT vilket då blockerar signalen.
      Om jag byter plats på LastIsSell / LastIsBuy fungerar det, men då kan jag få flera signaler av samma sort efter varandra, vilket jag inte ville.

      Detta du skrev. Var skall det användas?
      Backtesting:

      LastSellPoint:=getval(4)
      LastBuyPoint:=getval(3)

      Så frågan kvarstår. Hur kan man med denna teknik säkerställa att det genereras varannan Köp/Sälj? Detta är ju fundamentalt för att rätt kunna styra nästa signal som det exemplet du beskrev.

      Comment


      • #4
        Det verkar som om jag löste det själv till slut. LastIsBuy och LastIsSell måste skrivas före lasttradeK och lasttradeS.

        Ganska logiskt i och för sig!

        Comment


        • #5
          När du gör köpscript där du hämtar viss info från senaste sälj, så skall lasttrades-raden ligga före raden lasttradek.

          säljscriptet
          lasttrades=
          köpscriptet
          lasttradek

          blir en grov mall.

          Comment


          • #6
            Ny fråga på samma ämne

            Låt säga att man använder retval(5) i ett script för att spara undan köppriset till cell 5. I ett annat script vill jag göra samma sak, fast köppriset kommer här att ha ett annat värde.

            Kan dessa båda script vara aktiverade samtidigt på skärmen? Kommer det då att bli kaos för att två script vill lägga värden i cell 5?
            Med andra ord, är cell 5 något absolut i programmet eller är det kopplat till respektive script?

            Comment


            • #7
              När det väl blir ordertrans av det och skall hämtas via LastTrade(BS,VPD01234), så är det ju globalt.

              Annars är det strikt för scriptet, och för just den körningen cellen lever.

              Cellerna kan användas för att överföra info från period till period. Varje script börjar ju på ny kula för varje period, men cellerna kan flytta med sig info under vägen i en graf eller analysbänken.

              Comment

              Working...
              X