Allmänt meddelande

Collapse
No announcement yet.

Simulering av flera flytande stoppar

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

  • Simulering av flera flytande stoppar

    Den mest effektiva flytande stoppen som reagerar på högsta toppen efter inköp har en liten svaghet. Det är att funktionen LastTrade() som ingår för att ta reda på senaste inköpstillfälle inte kan backtestas i diagram. Detta för att den inte levererar en hel dataserie uatn alltid bara senaste verkliga affären.

    Ett sätt att komma förbi detta är att man har ett script där man kan ange olika köptillfällen som fasta tidpunkter, och man får en korrekt stoppkurva baserat på dessa inköpstidpunkter man angett.

    flytnivå:=0.975
    bakåt1:=300
    d1:=Date(20010906.5)
    d2:=Date(20010907.395)
    d3:=Date(20010910.5)
    buy1:=ge(d,d1)
    buy2:=ge(d,d2)
    buy3:=ge(d,d3)
    buytime1:=if(buy1,h,0)
    buytime2:=if(buy2,h,0)
    buytime3:=if(buy3,h,0)
    max1:=hhv(buytime1,bakåt1)
    max2:=hhv(buytime2,bakåt1)
    max3:=hhv(buytime3,bakåt1)
    i10(mult(if(buy2,if(buy3,max3,max2),max1),flytnivå))

    10-minuters intradayperiod vald här och en stoppnivåkurva bildas av detta scriptet.

    'flytnivå' anger här 2.5% stoppnivå under högsta efter inköp.

    'bakåt1' skall ha ett tillräckligt spann bakåt för att söka sig bakåt förbi inköpsperioden. Dvs tillräckligt för att täcka ett innehavs längd.

    Ett papper som handlas hela tiden(ovan någon gång per 10 minuter minst) får 6 perioder per timma, dvs 48 perioder per börsdag. Värde 300 täcker alltså 6 börsdagar bakåt som det längsta innehavet.

    Denna typ av stopp lär ju lösa ut inom mycket kortare intervall förutom extremt långa börsuppgångar.

    Datumformat anges i i 'd1'-'d3' på formen
    20010906.5 som är 6 Sept 2001 kl. 12.00.

    Heltalet alltså ett datum utan skiljetecken, sedan tidpunkten på dagen som ett decimaltal.

    20010906.375 motsvarar 6 Sept 2001 kl 9.30

    Heltalet dvs datumet skrivs som ihop med siffror utan skiljetecken.
    Decimaldelen är tid in på det dygnet.

    1 dygn 1440 minuter.
    Kl 9.30 blir 9x60+30=570 minuter

    570/1440=0.375

    Modifierar man scriptet på slutet så det görs en test så kan det användas i vinstrapport.

    i10(lt(l,mult(if(buy2,if(buy3,max3,max2),max1),flytnivå)))

    Byt sista raden mot den ovan för görs test att low varit under stoppnivån.
    Attached Files

  • #2
    Köpscript och vinstrapport för säljscriptet ovan

    d1:=Date(20010906.5)
    d2:=Date(20010907.395)
    d3:=Date(20010910.5)
    buy1:=and(ge(d,d1),lt(ref(d,1),d1))
    buy2:=and(ge(d,d2),lt(ref(d,1),d2))
    buy3:=and(ge(d,d3),lt(ref(d,1),d3))
    i10(or(or(buy1,buy2),buy3))

    Glöm inte ändra datumen i båda scripten för att ha de köptillfällen du vill testa.

    Den händige kan bygga på scripten för att ta fler affärer i ett script. Eller helt enkelt kopiera till flera script och göra tester separat på 3 affärer i taget.

    Vinstrapporten visar precis som i grafen att första affärer fungerar som en förluststopp och
    man kommer ut 50 öre lägre än inköp.

    De andra två affärerna är goda vinstaffärer.
    Attached Files

    Comment


    • #3
      I första (gula) inlägget här ovan finns en uträkning av vilket decimaltal som motsvarar kl 09.30 på förmiddagen. I min räknedosa blir 570/1440=0.3958333. (Inte 0.375)

      Eller, har jag missat något?

      /Torbjörn

      Comment


      • #4
        Det är bara "Tryckfelsnisse" som varit framme. Jag får samma värde som du Torbjörn, dessutom skriver Lasse också 395 på ett annat ställe i inlägget.

        Comment

        Working...
        X