Allmänt meddelande

Collapse
No announcement yet.

Beräkna serie från tidigare beräknad serie

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

  • Beräkna serie från tidigare beräknad serie

    Hej på er,

    Har en fråga som antingen är jättelätt eller jättesvår att lösa.

    Jag vill kolla marknadsriktningen/marknadstypen löpande dag för dag genom att
    beräkna den dagliga procentskillnaden under de senaste 100 handeldagarna
    och kommer att använda Van Tharp's metod m.h.a. SQN från hans bok Super Trader.

    För den nyfikne finns lite mera info om vad SQN är och hur dess värde kan användas
    vid marknadsbedömning här (eller läs boken, mycket bra insikter om trading i den):
    http://www.traderivar.com/2010/03/sq...ty-number.html

    Formeln för SQN ser ut så här:
    SQN = sqrt(N) * mean(R distribution) / Standard Deviation (R)

    där
    N = antal sampel,
    mean(R distribution) = serie med medelvärden för 100 st procentskillnader (ett värde är alltså c1/c2, nästa värde är c2/c3 osv. till c99/c100),
    Standard Deviation (R) = serie med värden för 100 st standardavvikelser av mean(R distribution)

    Utmaningen just nu är hur kan jag programmera en beräkning av en serie som består av
    en tidigare beräknad serie. För att försöka förtydliga frågeställningen se
    röd text i scriptet nedan. Är jag oklar med frågan så säg bara till.

    Alla tips och idéer är som alltid välkomna.

    Script som det ser ut just nu:

    {If number of samples is 100, then the square root is 10.}
    sqrtSamples:=10

    {Previous close values.} <-- Hur skapa en serie på ett smidigt sätt från c1 -> c100 ?
    c1=aref(c,1)
    c2=aref(c,2)
    .
    .

    {Percent change or R distribution. }
    rDist=mult(sub(1,div(c1,c2)),100) <-- Hur skapa en serie m.a.p. rDist på ett smidigt sätt från c1 -> c100 ?

    {MA100 of the R distribution.}
    meanR=mov(rDist,100,s) <-- Hur skapa en serie m.a.p. meanR på ett smidigt sätt ?

    {Standard deviation of the R distribution.}
    standardR=stdev(rDist,100)

    {SQN formula}
    sqn=div(mult(sqrtSamples,meanR),standardR)
    add(sqn,0)

    Edit: Såg att jag nog behöver ändra standardR=stdev(rDist,100) till standardR=stdev(meanR,100),
    men huvudfrågan om serie från serie behöver jag lösa.


    /Robban
    Last edited by shadowtwister; 2014-02-14, 11:39. Anledning: Ändrade i scriptet
    Handelsstrategi

    Typ: Swing trading
    Marknad: Trendföljande
    Tidshorisont: 2 dagar och uppåt
    Entry: Baserad på candlestickformationer och bekräftad rörelse i ”min” riktning hos OMXSPI + instrumentet
    Indikatorer: Stochastics
    Profit targets: MA20/50/200, konsolideringsområden, trendlinjer, gap och Fibonaccinivåer
    Monitorering: Automatisk med larm när köp, profit target och sälj skett
    Exit: Baserat på candlestickformationer, initial stop, tidsstopp eller trailing stop baserat på 2*ATR(21)

  • #2
    Jag är inte helt med vad du menar med serie? Vill du se värdena så går det att köra med extrakolumn i bänken. Spara värdena i globala celler som extrakolumnerna använder i köpscriptet. Köpscriptet är avslutas alltid sant, säljscriptet alltid falskt och visa falska signaler.

    Comment


    • #3
      Jag gjorde en bild på hur jag menar.

      Det jag behöver först är en dataserie på tidigare closevärden: c1,c2,...,c100

      Från denna dataserien behöver jag bygga en annan dataserie med rDist-värden: rDist1,rDist2,..,rDist99.

      Från dataserien med rDist-värden behöver jag sedan bygga ännu en dataserie med meanR-värden osv..

      Om jag väljer globala celler så blir det väl väldigt många celler som måste användas ?

      Jag har sett i någon gammal forumtråd att man kan använda kolon som en slags
      operator som tar en delmängd av element i en dataserie/array.

      Är det ett möjligt sätt kanske ? Typ så här: c1:c100

      Det går ju att skriva 100 stycken aref()-funktioner, men det blir
      väldigt mycket att skriva när jag sedan behöver 100 st rDist-funktioner och
      100 st meanR-funktioner.

      Detta borde gå att lösa på ett enklare sätt.
      Attached Files
      Handelsstrategi

      Typ: Swing trading
      Marknad: Trendföljande
      Tidshorisont: 2 dagar och uppåt
      Entry: Baserad på candlestickformationer och bekräftad rörelse i ”min” riktning hos OMXSPI + instrumentet
      Indikatorer: Stochastics
      Profit targets: MA20/50/200, konsolideringsområden, trendlinjer, gap och Fibonaccinivåer
      Monitorering: Automatisk med larm när köp, profit target och sälj skett
      Exit: Baserat på candlestickformationer, initial stop, tidsstopp eller trailing stop baserat på 2*ATR(21)

      Comment


      • #4
        Tillägg:

        Det finns ju en funktion som heter DynTrend som tydligen kan använda kolon-operator
        men går det att använda kolon på valfri funktion eller är den reserverad till endast denna
        funktion ?

        Jag är van vid Java så min hjärna är lite inställd på att kunna köra operationer mot
        element i arrays, typ lägga till/ta bort/stega i och hämta element och delmängder ur arrays.
        Finns det något schysst sätt att göra liknande operationer i script-språket ?
        Handelsstrategi

        Typ: Swing trading
        Marknad: Trendföljande
        Tidshorisont: 2 dagar och uppåt
        Entry: Baserad på candlestickformationer och bekräftad rörelse i ”min” riktning hos OMXSPI + instrumentet
        Indikatorer: Stochastics
        Profit targets: MA20/50/200, konsolideringsområden, trendlinjer, gap och Fibonaccinivåer
        Monitorering: Automatisk med larm när köp, profit target och sälj skett
        Exit: Baserat på candlestickformationer, initial stop, tidsstopp eller trailing stop baserat på 2*ATR(21)

        Comment


        • #5
          Vad ska du med dataserien till, någon speciell funktionalitet? Medelvärdet av rDist är ju ungefär som du beskriver. Då räcker det med globala celler som visar aggregerade periodvärden. Vill du se tex aref(c,1), aref(c,2), osv i en array i samma period? Det går inte så vida du inte använder många globala celler. Tex är medelvärdet en array av:
          rDist1=mult(sub(1,div(c,aref(c,1))),100)
          rDist2=mult(sub(1,div(aref(c,1),aref(c,2))),100)
          rDist3=mult(sub(1,div(aref(c,2),aref(c,3))),100)
          mv=div(add(add(rDist1,rDist2),rDist3),3)
          eller
          mv=div(sum(mult(sub(1,div(c,aref(c,1))),100),3),3)

          Generellt är alla beräkningar en dataserie. Det är inte som ett fristående programspråk där oberoende arrayer, osv kan byggas.

          Comment


          • #6
            Alla funktioner som använder perioder i någon parameter kan i princip använda kolon för att reservera max antal perioder som kan använda dynamiskt.

            Ska läsa igenom din ide och se hur vi kan lösa det. Loop() går ju att använda för att adressera dataserier bakåt också.

            Comment


            • #7
              Du skulle kunna loopa igenom en array som summerar, men du får inte ut en array.

              Comment


              • #8
                Ursprungligen postat av Henric Visa inlägg
                Vad ska du med dataserien till, någon speciell funktionalitet? Medelvärdet av rDist är ju ungefär som du beskriver. Då räcker det med globala celler som visar aggregerade periodvärden. Vill du se tex aref(c,1), aref(c,2), osv i en array i samma period? Det går inte så vida du inte använder många globala celler. Tex är medelvärdet en array av:
                rDist1=mult(sub(1,div(c,aref(c,1))),100)
                rDist2=mult(sub(1,div(aref(c,1),aref(c,2))),100)
                rDist3=mult(sub(1,div(aref(c,2),aref(c,3))),100)
                mv=div(add(add(rDist1,rDist2),rDist3),3)
                eller
                mv=div(sum(mult(sub(1,div(c,aref(c,1))),100),3),3)

                Generellt är alla beräkningar en dataserie. Det är inte som ett fristående programspråk där oberoende arrayer, osv kan byggas.
                Tanken är att använda dataserien till att kunna rita en graf över hur SQN-värdet varierar med tiden.
                Alltså, varje element motsvarar en koordinat. Än så länge gör jag det i Excel men det blir ganska
                klumpigt så jag ville försöka göra det i AT istället.

                Det är inte summering av alla värden/element i array:en jag är ute efter alltså,
                utan varje ingående element i den resulterande dataserien, men det är nog så att jag glömmer att t.ex. mov()
                ju ger en dataserie så det kan vara så att jag krånglar till det onödigt.
                Handelsstrategi

                Typ: Swing trading
                Marknad: Trendföljande
                Tidshorisont: 2 dagar och uppåt
                Entry: Baserad på candlestickformationer och bekräftad rörelse i ”min” riktning hos OMXSPI + instrumentet
                Indikatorer: Stochastics
                Profit targets: MA20/50/200, konsolideringsområden, trendlinjer, gap och Fibonaccinivåer
                Monitorering: Automatisk med larm när köp, profit target och sälj skett
                Exit: Baserat på candlestickformationer, initial stop, tidsstopp eller trailing stop baserat på 2*ATR(21)

                Comment


                • #9
                  Ja, loop kan ju kanske vara användbart i detta fallet.

                  Bra att veta att kolon kan användas också. Ännu ett verktyg i verktygslådan.
                  Handelsstrategi

                  Typ: Swing trading
                  Marknad: Trendföljande
                  Tidshorisont: 2 dagar och uppåt
                  Entry: Baserad på candlestickformationer och bekräftad rörelse i ”min” riktning hos OMXSPI + instrumentet
                  Indikatorer: Stochastics
                  Profit targets: MA20/50/200, konsolideringsområden, trendlinjer, gap och Fibonaccinivåer
                  Monitorering: Automatisk med larm när köp, profit target och sälj skett
                  Exit: Baserat på candlestickformationer, initial stop, tidsstopp eller trailing stop baserat på 2*ATR(21)

                  Comment


                  • #10
                    Gjorde en snabb kodning med loop, men fastnade på att jag inte kan lägga till element
                    i dataserie (röd text).

                    elements:=100 {Max antal element i arrayen.}
                    array:=0 {Starta med en tom array.}
                    counter=cum(1,elements) {Räknare för loopen.}
                    addElement=add(aref(c,counter),array) {Lägg till element i array.}
                    hasElement=if(ge(counter,100),0,1){villkorskod för att stega i dataserien}
                    loop(counter,100,hasElement,W)
                    Last edited by shadowtwister; 2014-02-14, 17:36. Anledning: Ändrade i loopkoden
                    Handelsstrategi

                    Typ: Swing trading
                    Marknad: Trendföljande
                    Tidshorisont: 2 dagar och uppåt
                    Entry: Baserad på candlestickformationer och bekräftad rörelse i ”min” riktning hos OMXSPI + instrumentet
                    Indikatorer: Stochastics
                    Profit targets: MA20/50/200, konsolideringsområden, trendlinjer, gap och Fibonaccinivåer
                    Monitorering: Automatisk med larm när köp, profit target och sälj skett
                    Exit: Baserat på candlestickformationer, initial stop, tidsstopp eller trailing stop baserat på 2*ATR(21)

                    Comment


                    • #11
                      Funderade på om ini-fil kan vara en annan variant genom att hämta ut info om closekurser
                      och sedan skriva detta i java eller annat valfritt programspråk ?

                      I scriptreferensen står det i och för sig att endast 4 variabler per script
                      är tillåtna. Tänkte annars att jag kunde skriva ut c1 till c100 i [ScriptVariables] i AutostockTrader.ini.
                      Handelsstrategi

                      Typ: Swing trading
                      Marknad: Trendföljande
                      Tidshorisont: 2 dagar och uppåt
                      Entry: Baserad på candlestickformationer och bekräftad rörelse i ”min” riktning hos OMXSPI + instrumentet
                      Indikatorer: Stochastics
                      Profit targets: MA20/50/200, konsolideringsområden, trendlinjer, gap och Fibonaccinivåer
                      Monitorering: Automatisk med larm när köp, profit target och sälj skett
                      Exit: Baserat på candlestickformationer, initial stop, tidsstopp eller trailing stop baserat på 2*ATR(21)

                      Comment

                      Working...
                      X