Allmänt meddelande

Collapse
No announcement yet.

Vinsttest

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

  • Vinsttest

    Det jag saknar i NAT är möjligheten att se om ens strategi fungerar eller om den är totalt värdelös.
    Därför totade jag ihop ett litet skript för att få ett litet hum om vart åt det barkar.

    Nu behöver jag hjälp med att hitta eventuella feltänk eller fel.

    Jag fick inte kurvorna att fungera som jag ville. Använder automatisk skalning för att överhuvudtaget se kurvorna.

    Tanken var att det skulle vara lätta att lägga in i olika skript utan att ta för mycket plats.

    Man måste ändra global variabel om man kör det i flera skript om man inte vill få en sammanslagen vinst.

    Att göra:
    1. få kurvorna att visas enligt kurs.
    2. göra om det till att visa procent.

    Skriptet:

    Kod:
    { Vinsttest }
    { Signalvillkor }
    p1:=21
    ema1:=mov(c,p1,e)
    Köp:=gt(L,ema1)
    Sälj:=lt(H,ema1)
    Pos:=and(Köp,not(Sälj))
    
    {  Vinsttest }
    Vinst:=GetGvar(500)
    Position:=or(Pos,aref(Pos,1))  { Även sista säljposition räknas som position }
    diff:=sub(c,aref(c,1))
    nyVinst:=add(Vinst,diff)
    VinstKurva:=if(Position,nyVinst,Vinst)
    SetGvarIf(VinstKurva,500,d)
    
    {  Vinsttest Draw }
    draw(mult(position,8),1,bsB)
    draw(VinstKurva,2,baB)
    draw(diff,3,dmaA)
    draw(Vinst,4,dgaD)
    draw(VinstKurva,5,dgaE)
    
    { Signal Draw }
    draw(ema1,6,rqB)
    draw(mult(5,Köp),7,dgsBF)
    draw(mult(5,Sälj),8,drsBF)
    
    mult(3,Pos)
    Må gott
    **Vincent

  • #2
    Variabeln Vinst är delnamn av nyVinst och Vinstkurva så det kan nog bli problem.
    Pos är delnamn av position.

    Comment


    • #3
      Javisst...

      Updaterat.

      Kod:
      { Vinsttest }
      GlobalVariabel:=500
      { Signalvillkor }
      p1:=21
      ema1:=mov(c,p1,e)
      Köp:=gt(L,ema1)
      Sälj:=lt(H,ema1)
      PosLång:=and(Köp,not(Sälj))
      
      {  Vinsttest }
      oVinst:=GetGvar(GlobalVariabel)
      Position:=or(PosLång,aref(PosLång,1))  { Även sista säljposition räknas som position }
      diff:=sub(c,aref(c,1))
      nyVinst:=add(oVinst,diff)
      vKurva:=if(Position,nyVinst,oVinst)
      SetGvarIf(vKurva,GlobalVariabel,d)
      
      {  Vinsttest Draw }
      draw(mult(position,8),1,bsB)
      draw(vKurva,2,baB)
      draw(diff,3,dmaA)
      draw(oVinst,4,dgaD)
      draw(vKurva,5,dgaE)
      
      { Signal Draw }
      draw(ema1,6,rqB)
      draw(mult(5,Köp),7,dgsBF)
      draw(mult(5,Sälj),8,drsBF)
      
      mult(3,PosLång)
      Må gott
      **Vincent

      Comment


      • #4
        Hej,
        Tycker det var en och bra lösning på backtesting (AT8 är lite trix att få funka).

        ==> Jag skulle vilja använda mina script med global variabler spm input på köp signalen. Tyvärr förstår jag inte hur jag ska skriva i det sändande scriptet för kunna läsas korrekt i detta scriptet.
        ex:
        buy=gt(c,ema1)
        SetGVarIf(1,606,Buy)

        ger inte avsedd effekt då inte hanterar tiden.

        ==> Någon som har en idé?

        mvh
        Ingemar

        Comment


        • #5
          Prova att skriva så här
          SetGVarIf(Buy,606,d,d)
          Må gott
          **Vincent

          Comment


          • #6
            Har gjort om skriptet så att det även hanterar blankning.

            Har även tagit bort global variablen eftersom det inte fungerade som var tänkt. Den ökade eller minskade hela tiden av någon anledning som jag inte förstod.
            Har ersatt den med cum(1) för att hitta första perioden i grafen. För att det skall fungera måste man ändra upplösning fram och tillbaka.

            Har jämfört med HittaKursvinnare och får ganska så lika resultat. Dock visar HKV vinstkurvan i procent medan detta skript visar aktuell enhet.
            Det kan även skillja på hur vinstberäkningen görs, men det verkar bli tillräckligt bra för en grov uppfattning.

            Bifogat bilder på jämförelsen.

            Skriptet visar dels:
            - köp- och säljsignaler
            - tid i lång och kort position
            - differans och procentuell förändring ( i analys A )


            Skriptet:
            Kod:
            { Vinsttest  assa-b }
            gåLång:=1
            gåKort:=0
            { Signalvillkor }
            p1:=21
            ema1:=mov(c,p1,e)
            Köp:=gt(L,ema1)
            Sälj:=lt(H,ema1)
            
            {  Vinsttest }
            PosLång:=and(Köp,not(Sälj))
            PosKort:=and(Sälj,not(Köp))
            PL:=and(gåLång,aref(PosLång,1))
            PK:=and(gåKort,aref(PosKort,1))
            diff:=if(PL,sub(c,aref(c,1)),if(PK,sub(aref(c,1),c),0))
            startC=aref(c,cum(1))
            vKurva=add(startC,cum(diff))
            
            {  Vinsttest Draw }
            draw(mult(PL,8),1,dgsB)
            draw(mult(PK,8),2,rsB)
            draw(vKurva,3,bqB)
            draw(diff,4,dmaA)
            draw(div(vKurva,startC),5,kaA)
            
            { Signal Draw }
            draw(ema1,7,mqB)
            draw(mult(5,Köp),8,dgsBF)
            draw(mult(5,Sälj),9,drsBF)
            
            mult(3,PosLång)
            Attached Files
            Må gott
            **Vincent

            Comment

            Working...
            X