Allmänt meddelande

Collapse
No announcement yet.

Konvertera script till intradag

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

  • Konvertera script till intradag

    Hej!
    Efter att ha dammsugit forumet i någon veckas tid har det blivit dags för mitt första inlägg
    Går det på något enkelt sätt att ändra ett script från dagsupplösning till 60min?
    Här är ett exempel med rikoschett som med lite modifiering är ganska likt det jag hade tänkt köra skarpt senare, men vi tar det som exempel just nu:
    Köp:

    ————

    range=sub(h,l)
    10procent=mult(range,0.1)
    köp1=lt(c,add(l,10procent))
    kl1720=gt(frac(d),0.7222221)
    kl1723=lt(frac(d),0.7243055)
    ej_innehav=le(portfolio(v),0)
    köp2=and(kl1720,kl1723)
    köp3=and(llv(köp1,1),köp2)
    köp4=and(köp3,ej_innehav)
    mult(köp4,10)


    Sälj:
    { Sälj efter 5 dagar alt vinst }
    { 140304 }
    minuter:=7
    dagar:=5
    account_ok=not(eqv(cash(d),0))
    inpådagen=gt(frac(date()),0.376)
    köpdag=lasttrade(b,d)
    stängning=le(mult(1440,sub(market(c),frac(date()))),minuter)
    innehav=gt(portfolio(v),0)
    vinst=gt(b,portfolio(p))
    1days=ge(cmpref(d,1,a),köpdag)
    xdays=ge(cmpref(d,dagar,a),köpdag)
    sälj1=and(and(and(or(and(vinst,1days),xdays),innehav),stängning),inpådagen)
    sälj2=and(sälj1,account_ok)
    mult(sälj2,10)

    {tagits rakt av från Rickard i rikoschett-tråden}

    ————

    För er som inte är bekanta med rikoschett ska köp ske när close i stapeln är i de undre 10% av dagens range, gärna i callen. Detta kombinerat med en Dstat-exit.
    Tanken är att köp/sälj ska agera på samma sätt i 60min som det gör just nu i dagsupplösning. Dvs som i exemplet med rikoschett ovan, istället för en close på candlen i dagsupplösning signalerar köp ska det vara en close på stapeln i 60min som signalerar köp.
    Positionen säljs vid close på de nästkommande 5 staplarna(60min) vid vinst eller på den 5:e stapeln oavsett. Det vill säga exakt som den vanliga Dstat fast då i 60min.

    Som jag har förstått är I60 60min staplar, alltså:
    köp1=lt(c,add(l60,10procent))

    Kan man på något sätt ändra tidsbegränsningen när köp och sälj sker på alla staplar samtidigt?
    Så att man tex skriver att köp får ske 57-59 minuter och sälj 55-57 minuter in på stapeln(ca 5min innan timmes-stapeln stänger).
    Eller måste man skriva att tex köp får ske 09.57-09.59, 10.57-10.59 etc. (motsvarande för sälj) för att det ska bli rätt?

    Många riktiga nybörjarfrågor kan jag tänka mig, men har haft lite svårt att förstå ”logiken” i skriptspråket då jag är van att arbeta med hitta kursvinnare vanligtvis, som är något enklare

  • #2
    Det är ganska enkelt, för köpscriptet behöver du bara lägga till intradayprefix samt ändra tidsfiltret så att handel sker tex om minuten är 57 eller högre:

    i60(
    range=sub(h,l)
    10procent=mult(range,0.1)
    köp1=lt(c,add(l,10procent))
    minutfilter=ge(xtime(date(),m),57)
    ej_innehav=le(portfolio(v),0)

    köp3=and(llv(köp1,1),minutfilter)
    köp4=and(köp3,ej_innehav)
    mult(köp4,10)
    )


    För säljsidan räcker det att ändra extra objektet till 60 min och lägga till samma minutfilter, samt ta bort check att kl börjar närma sig stängning.

    { Sälj efter 5 period alt vinst }
    { 140304 }

    perioder:=5

    account_ok=not(eqv(cash(d),0))
    inpådagen=gt(frac(date()),0.376)
    köpperiod=lasttrade(b,d)
    minutfilter=ge(xtime(date(),m),57)
    innehav=gt(portfolio(v),0)
    vinst=gt(b,portfolio(p))
    1per=ge(cmpref(d,1,a),köpdag)
    xper=ge(cmpref(d,perioder,a),köpdag)
    sälj1=and(and(and(or(and(vinst,1per),xper),innehav),minutfilter),inpådagen)
    sälj2=and(sälj1,account_ok)
    mult(sälj2,10)

    {@A(60,)}


    PS. Har inte testat det här, men det märks ju ganska snart i simulatorn om det funkar.

    Comment


    • #3
      Du får det att verka så lätt haha, tusen tack Rikard!
      Vet du hur det blir på den sista stapeln på dagen, i och med att den bara är 30minuter lång?
      Ska testa den i simulatorn imorgon!

      Comment


      • #4
        Hehe, jo det är inte så svårt faktiskt.

        Scriptspråket är extremt kraftfullt.

        Sista stapeln på dagen kan man hantera med ett extra villkor som testar om timmen är = 17:


        kl17=eqv(xtime(date(),h),17)
        minutfilter=ge(xtime(date(),m),if(kl17,20,57))

        så testas om timmen är 17 och i så fall ändras minutfilter till > 20, annars > 57.

        Comment


        • #5
          Tack för hjälpen Rikard! Nu ser signalerna ut att stämma bättre
          Har suttit hela helgen och kört tester i analysbänken och det som förbluffar mig mest är att min edge på ungefär 1,1%/trade i Hitta Kursvinnare(med 0,30% i courtage dessutom) har nu minskat till -1,2%/trade med 0,25% i courtage..
          Det jag har kommit fram till är väl att det är mer eller mindre meningslöst att backtesta på färdiga staplar(som jag antar är vad HK gör) när det gäller mindre upplösningar

          Comment


          • #6
            Hm, det låter som en väldigt stor skillnad även om HK inte simulerar med animering till skillnad från Autotrader. Min gissning är att det är något som inte stämmer helt. Har du kollat detaljerna på någon enskild affär och sett var det diffar?

            En möjlig orsak kan vara om du kör prisscript i ordermodellen som tar till alldeles för mycket slippage. I Analysbänken bokförs affärerna på det pris som scripten skickar, och om man tex alltid köper en aktie på Aktuell säljkurs +0,5% och säljer på Aktuell köpkurs -0,5% får man alltså totalt 1% slippage på varje affär. Så illa blir det ju inte i verkligheten, så man bör simulera med något lite snällare kanske.

            Comment


            • #7
              Antal affärer vill jag minnas skiljde inte sig väsentligt mellan HK och autotrader. Jämför man tidstämplarna på affärerna programmen emellan ser man klart och tydligt att de ofta köper och säljer på lite olika staplar. Får undersöka vidare ikväll
              Kan även tillägga att jag valde ”aktuell köp/säljkurs”, och har därmed inte räknat med någon slippage... Det var något jag inte hade tänkt på ens!

              Comment


              • #8
                Var nog lite förvirrad när jag skrev förra inlägget, antalet affärer skiljer sig väsentligt. Gör jag en körning från 1/8-18 - 18/7-19 får jag 2475 affärer i autostock och 7928 i HK.. Behandlar programmen kursdata på olika sätt?

                Att egen har försvunnit antar jag kan härledas till att man köper till säljkurs och säljer till köpkurs, men samtidigt tycker jag att det känns konstigt att det ska "kosta" 1,1 procentenheter. Ska även tillägga att jag har kört testerna på småbolag(rena aktier alltså), utvalda efter volym.

                Comment


                • #9
                  Vet inte riktigt om jag är med på allt, men generellt är det inga stora skillnader mellan datat i HK och AT, vi samlar in vårt live från Nordnet medan HK tar sitt från SIX såvitt jag vet. Men däremot simuleringen skiljer en del eftersom AT animerar ner till var 5:e sek normalt. HK kör hela kursstaplar endast. Jag tror vi ska titta på ett enskilt exempel, tex där du får signal i HK men inte i AT och så försöker vi hitta varför. Det kan skilja något mellan indikatorer osv.

                  Comment


                  • #10
                    Har kommit till insikten att det förmodligen inte går att få igång ett lönsamt system med denna strategi.
                    Hittade dock varför programmen gav olika många affärer. Hade varit inne och pillat i scriptet(för att vässa till edgen) och hade ändrat till att Sell skulle vara under 10% av stapel och inte Close.

                    När jag ändrade tillbaka signalerar programmen på samma tidstämplar. Och ändrar jag köp/sälj scriptet från "aktuellt köp/sälj pris" till "senast betalt" så vips, där är edgen tillbaka.

                    Jag antar att jag helt enkelt förlorar för mycket på att köpa till säljpris och sälja till köppris

                    Men tack för all hjälp Rikard! Ska definitivt kolla vidare och se och jag kan hitta något annat att bygga mitt system på

                    Comment


                    • #11
                      Ok, då har vi hittat "problemet". Men testa annars att ändra upplösning, ofta fungerar en edge om man kör den i grövre upplösning, tex 120 min eller liknande om du hade testat med 60 minuter nu.

                      Comment

                      Working...
                      X