Allmänt meddelande

Collapse
No announcement yet.

Nya funktioner till NAT Pro

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

  • Nya funktioner till NAT Pro

    Nu, i och med att vi till NAT-språket har fått en LOOP-funktion så börjar språket bli i stort sett helt komplett (enligt mitt sätt att se det), det saknas egentligen bara en ytterligare NAT-funktion som gör det möjligt att kunna spara ned egna värden i en databas för att sedan kunna hämta dem igen i form av en dataserie.

    Om detta vore på plats skulle man utan begränsningar kunna använda språket till att tillverka egna syntetiska instrument, egna påhittade indikatorer egna index eller annat av intresse som man vill skapa dataserier av, och som sedan alla andra script/modeller i sin tur direkt kan ta del av. På så sätt skulle scriptaren inte vara beroende av att Autostock tillverkar den efterfrågade funktionen om ett nytt krav likt AMA skulle dyka upp.

    (OBS! jag pratar här inte om "input" utan om "output" och vad som händer i scriptningen innan "output". AMA var ju exempelvis inte möjlig att tillverka i NAT-språket och det finns fler sådana exempel.)

    Jag har funderat på hur en sådan funktion skulle vara konstruerad och lägger därför upp ett förslag här. Förutsättningen är att Autostock skapar en ny mindre helt parallell kloning av NAT:s nuvarande databas. Låt oss säga en databas på max 10000 id:n.

    De nya funktionerna är tänkta att vara en kombination utav redan existerande funktioner och funktionalitet för att göra kodningen för Autostock lite enklare.
    Exempelvis skulle SetIniIf() lika väl kunna lagra direkt till en databas istället för som nu till inifilen.

    Som sagt, hela grejen med detta utspel är att få så kompletta grundfunktioner för programmering som möjligt i NAT och att man inte ska behöva gå till Autostock och be om nya fuktioner hela tiden även om det är praktiskt.

    Jag tänker jag mig, att om vi får kompletta grundfunktioner så kan hela scriptkollektivet vara med och bidra med utvecklingen av nya NAT-funktioner framöver. När någon scriptat en ny funktion som visar sig användbar kan man dela med sig av denna till andra och i efterhand be Autostock om att inlämma den i utbudet, för det är ju trots allt så att en C-kodad NAT-funktion är mycket snabbare än en scriptad, speciellt om funktionen är avancerad.
    Obs när jag menar dela med sig, menar jag här enskilda nya NAT-funktioner, inte kompletta handelsmodeller.

    Om de här funktionerna kommer till stånd kan jag visa er på många spännande tillämpningar framöver.

    Nåväl, i nästa inlägg kommer mitt förslag, kommentera och debattera gärna, ordet är fritt!!

    Last edited by LillWicke; 2013-12-22, 14:16. Anledning: EDIT1: Lagt till ett OBS; EDIT2 lagt till ytterligare förtydliganden.

  • #2
    Funktionerna SetDumpIf() GetDump() och ClearDump()

    SetDumpIf(d,id,villkor,DLP)

    Berskrivning: Funktionen dumpar ett värde/dataserie ”d” ned i en databas på plats ”id” beroende på om ”villkor” är sant eller falskt. Tillsammans med värdet lagras även tid/datum för varje post.

    Parameter1: Dataserie eller värde som skall lagras.

    Parameter2: Plats-id i databasen där värdet skall sparas

    Parameter3: Villkor som tillåter lagring beroende på om villkoret är sant eller falskt.

    Parameter4: D anger om funktionen ska ta värden från diagramkörningen. ”L” anger om funktionen ska ta nuvarande värde från livekörningen. ”P” anger att hela dataserien d beroende på period och villkor från livekörningen sparas.
    Om parameter4 utelämnas lagras endast senaste värdet från livekörningen.

    Antag att vi har en uträknad funktion i en minnesreferens Fx=??? som kan vara ett syntetiskt uträknat instrument, en egen påhittad indikator eller annat av intresse som man vill skapa en dataserie av, för att sedan kunna hämtas och hanteras av andra script.

    Ex1: SetDumpIF(fx,100,1) Lagrar kontinuerligt det senast uträknade värdet av funktionen fx på plats nr 100 i databasen.

    Ex2: SetDumpIF(fx,100,villkor) lagrar värdet av ”fx” enbart om ”villkor” är sant.

    Ex2: SetDumpIf(fx,100,1,P) lagrar hela den aktuella dataserien som finns i minnescellen ”fx”


    GetDump(id,#n,VD)

    Beskrivning: Funktionen hämtar ett värde från plats id i databasen

    Parameter1: Plats varifrån värde ska hämtas.

    Parameter2: en siffra eller P. #n hämtar det n:te värdet bakåt från senast lagrade värdet. 0 betyder det senast lagrade värdet och 1 det näst senaste lagrade värdet osv. P hämtar/(ger tillgång till) hela den lagrade dataserien, precis som när data hämtas från kursfeeden med c eller cmpref. (Kod för detta finns ju redan och databasen är densamma. )
    Kan utelämnas om parameter #3 utelämnas.

    Parameter3: V Betyder att värdet hämtas och D betyder att datumet/tiden hämtas. Om utelämnad hämtas värdet.

    Om parameter 2 och 3 båda utelämnas hämtas bara det senaste lagrade värdet.

    Kommentar: Generar dataserie om parameter #2 angetts till P annars enstaka värde.

    Ex1: GetDump(100,3,D) Hämtar datum/tid för det tredje senast lagrade värdet i ”cell” nr 100
    Ex2: GetDump(100) Hämtar det senast lagrade värdet i ”cell” nr 100.
    Ex3: GetDump(100,P,V) Hämtar/ger tillgång till hela den lagrade dataserien.


    ClearDump(id)

    Beskrivning: Funktionen rensar hela datalagringen på plats ”id”



    Detta är mitt förslag, som sagt kommentera gärna.

    Comment


    • #3
      Bertil tjötar ju om exempel hela tiden.
      Gör här en sammanfattning med ett antal exempel som går att lösa med dump och loop. Det går ju av naturliga skäl inte att ge några körbara scriptexempel, men man får en uppfattning i alla fall.


      Allmänt:
      1) Inga allvarliga begränsningar längre för vad NAT-språket klarar av att scripta.
      2) Man blir inte beroende av att Autostock måste utvidga NAT-språket varje gång man hittar något intressant som inte är scriptbart.
      3) Man kan scripta egna anropningsbara funktioner/procedurer. Det innebär att de bara behöver beräknas en gång i ett script, varefter alla andra script kan ta del av resultaten utan att behöva göra om samma procedurer om och om igen. Detta sparar mycket beräkningstid samt gör scripten renare och mer överskådliga.
      4) Möjlighet att Modulbygga modeller där alla moduler kan kommunicera med varandra.
      5) Möjlighet att på forumet utbyta färdiga moduler med varandra.
      6) Alla Nat-funktionerna har idag en begränsning i användandet av antal parametrar till 4st, denna begränsning kan suddas ut med dump.
      7) Dump gör utbyggnad av cmpref överflödig.
      8) ------
      9) Syntetiska objekt med dataserier kan man själv scripta ihop.
      10) Serieutvecklingar där nuvarande värde beräknas utifrån funktionens förra beräknade värde går att utföra.

      Special:
      11) Polynomanpassade kurvor. (en Bertil-grej)
      12) Äkta Volym profiling blir möjligt att scripta.
      13) Kategorisering av stöd och motståndsnivåer efter olika signifikanskriteria.
      14) Viktad volym till omx-index eller eget syntetiskt index.
      15) Låta programmet rita/beräkna trendkanaler som idag endast går att göra optiskt.
      16) Annan allmän optisk teknisk analys möjlig.
      17) Effektivare Money Management.
      18) Lättare scripta icke-linjära modeller vilka sällan blir drabbade av överoptimering.

      Osv.

      Last edited by LillWicke; 2014-01-07, 01:22.

      Comment


      • #4
        Hej Wicke. Tänkte på det du sa om index.
        Om man använder extra objekt så blir väl maximala antalet instrument som man kan ha tre stycken ?
        Funderar på om man kan scripta så att alla instrument som ingår i t.ex. ett sektorindex hamnar i en egen listgrupp.
        Kunde inte hitta loop-funktion i scriptreferensen. Har den ett speciellt namn ?
        Tack för intressant inlägg.

        /Robban
        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
          Hej Shadowtwister, tre frågor tre svar.

          1) man kan bara ha tre extraobjekt till varje script men man kan kombinera ihop flera script så att man på det sättet får fler än tre stycken.

          2) Det kan jag inte tänka mig att du kan scripta, men du kan ju flytta dem manuellt.

          3) LOPP-funktionen är inte beskriven i NAT-manualen än men du kan läsa om den här under inlägg #36.

          http://www.autostock.se/vbulletin/sh...?t=2449&page=3

          Comment


          • #6
            Tack.
            Trevligt med loop-funktion. Tror jag kommer få nytta av den när jag kommer till
            ordermodellbygge. Bra att man kan bygga script vars utvärden kan vara invärden till andra script.
            Kanske kan få till det med mitt index-pysslande på det sättet med risken att göra
            en Knasen ( = lägga ner mycket jobb på att utföra lite jobb)

            /Robban
            Last edited by shadowtwister; 2013-12-20, 21:30. Anledning: snygga till texten
            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


            • #7
              Första gången jag försökte använda globala variabler utan att ha lusläst manualen så trodde jag att jag skapade en dataserie och blev besviken då jag upptäckte att så inte var fallet. Funktionen att skapa egen dataserie är mycket användbar.

              I Analyzern får man ju göra en likadan databas med plats för lika många ID:n. Då man kör Analyzern så måste ju databasen skrivas över på samma sätt som med globala variabler.

              Men sen kommer man ju till det svåra: Hur scripta så att man tjänar pengar?
              Med vänlig hälsning
              Bertil

              Comment


              • #8
                Ursprungligen postat av Bertil Visa inlägg
                Men sen kommer man ju till det svåra: Hur scripta så att man tjänar pengar?
                Med vänlig hälsning
                Bertil
                Det gör ju du redan Bertil, du behöver bara ägna lite tid till trendscript samt våga swinga när du befinner dig i en trend.
                Sedan måste man ägna lite tid till stöd och motståndsnivåer men då skulle vi behöva funktionerna ovan.

                Comment


                • #9
                  Lokalt i varje script är det ju enkelt att bygga nya dataserier, det görs ju i nästan alla script. Svårigheten som vi har just nu är ju att det inte går att överföra en dataserie från ett script till ett annat.

                  Om man idag vill ha input till sina script från andra instrument får man ju använda cmpref som nu är begränsat till 3 st instrument per script. Överföring mellan script får nu göras med globala variabler.

                  Jag har ju länge förordat att antalet cmpref borde utökas till 30+ (säg 50 st).

                  Om man gör det så kan man i princip göra allt det LillWicke eftersträvar, fast scripten kommer att bli långa och tunga.

                  Jag har idag script som undersöker alla de i OMXS30 ingående aktierna.
                  För att göra det så har jag 10 script som vardera har 3 cmpref från 3 aktier. Varje script undersöker sina 3 aktier och genererar 2 globala variabler per aktie.
                  I ett triggerscript sammanställs informationen från de 60 globala variablerna och beslut tas om köp. Genom att göra på ovanstående sätt är jag idag inte lika angelägen att önska fler cmpref i NAT. Jag vill mycket hellre få instrumentbunden ekonomisk info från Nyhetsbyrån Direkt till NAT. Detta kommer att bli något nytt som vi inte riktigt vet hur vi skall integrera i våra script.

                  Jag är kanske lite dum, men jag inser inte riktigt hur man bättre skall extrahera information då man kan tillverka och lagra dataserier. Visst det blir enklare, elegantare och mer överskådligt och det är kanske det som kommer att göra att man genom trial and error kommer att kunna att skriva mer vinstgivande script.
                  Med vänlig hälsning
                  Bertil

                  Comment


                  • #10
                    Med tanke på kommentarerna ovan känner att jag måste göra några förtydliganden.
                    Jag får skylla mig själv då jag som sista inlägg la upp ett exempel på en indexberäkning.
                    Jag tar nu bort detta exempel eftersom de nya funktionerna inte handlar om detta.

                    Jag skrev i mitt första inlägg:
                    ”Om detta vore på plats skulle man utan begränsningar kunna använda språket till att tillverka egna syntetiska instrument, egna påhittade indikatorer egna index eller annat av intresse som man vill skapa dataserier av”

                    Just möjligheten att kunna tillverka sina egna NAT-funktioner utan att vara beroende av att Autostock så småningom lägger upp dem, är hela vitsen med de nya funktionerna. Detta skulle avlasta Autostock samtidigt som vi här på forumet kan tillverka våra egna NAT-funktioner som vi sedan kan dela med oss av.
                    Obs detta är inte samma sak som att dela med sig av enskilda ordermodeller.

                    I kommentarerna ovan nämns cmpref(). Med den funktionen kan man till ett script vilket som helst ta in dataserier för c,o,h,l,b,s, dvs funktionen är begränsad till att ta in och göra dataserier av värden som ligger i respektive akties kursfeed.

                    Med funktionerna ovan kan man göra dataserier av vilka värden som helst. De är en slags utökade cmpref-funktioner om man vill uttrycka sig på det sättet. Med ovanstående funktioner på plats skulle cmpref i sin nuvarande form inte behöva utvidgas alls, (vill man uttrycka sig drastiskt skulle man kunna säga att de blir överflödiga), man får ju med de nya funktionerna 10 000 värden som kan tas in i varje enskilt script.

                    Funktionerna skall emellertid inte bara ses som utökade cmpref-funktioner de kan göra mer än så. Exempelvis kan de direkt/omedelbart titta tillbaka på en angiven post i den lagrade dataserien. För detta är man idag hänvisad till find() tillsammans med ett villkor som i värsta fall behöver söka igenom hela dataserien. Detta kan ta väldigt lång tid om vi har en serie som sträcker sig över flera år.

                    Kort sagt med ovanstående funktioner på plats, tillsammans med loop, cum och alla andra NAT-funktioner kan man scripta/tillverka i stort sett vad som helst.
                    Idag går inte detta.

                    Hoppas att jag har lyckats beskriva det hela lite bättre den här gången.

                    Vad säger ni ska vi ha detta eller inte?

                    Last edited by LillWicke; 2013-12-21, 17:14.

                    Comment


                    • #11
                      Ursprungligen postat av LillWicke Visa inlägg
                      ...I kommentarerna ovan nämns cmpref(). Med den funktionen kan man till ett script vilket som helst ta in dataserier för c,o,h,l,b,s, dvs funktionen är begränsad till att ta in och göra dataserier av värden som ligger i respektive akties kursfeed.
                      ...
                      Inte för att jag är emot idén, den är bra, men man måste förtydliga.

                      Man kan idag i ett script tillverka de dataserier som du föreslår fast med bara instrumentet självt + 3 cmpref som ingångsinstrument. Utöver c,o,h,l,b,s finns ju bara volymen som dataserie, eller har jag fel? Säg att du vill tillverka ett syntetsikt index (fastän du tog bort exemplet), då är du fortfarande begränsad av 3 st cmpref.

                      Så här ser min önskelista ut till Autostocks Tomteverkstad

                      1) Ett nytt API mot Nordnet. Detta märker vi inte av men det måste bli klart innan Autostock kan ta tag i andra större projekt.

                      2) Ekonominyheter från Nyhetsbyrån Direkt som skall integreras i NAT. Detta är något helt nytt som kan öppna upp andra triggermöjligheter än vad vi nu kan använda oss av. Vi reagerar direkt på nyheten istället för att vänta att andra handlare skall reagera på nyheten och vi märker det först då kurvan rör sig.

                      3) Fler cmpref

                      4) Syntetiska dataserier.

                      mvh
                      Bertil

                      Comment


                      • #12
                        En liten fråga till dig LillWicke. I din profil har du ju skrivit att du även har flera andra analysprogram. Är det något speciellt syntetiskt instrument som du kan tillverka där som du hemskt gärna vill scripta i NAT?

                        Då jag började labba med cmpref så var ju jag inte särskilt intresserad av funktionen cmpref, det jag var ute efter var en metod att studera DAX indexet och använda det för att trigga på terminen.

                        Vilken är ditt första syntetiska instrument du kommer att tillverka i NAT då du får den möjligheten och hur skall du använda det?
                        undrar
                        Bertil

                        Comment


                        • #13
                          Vet inte, men det känns nästan som att vi pratar förbi varandra nu.

                          Skulle önska att tråden inte hamnar i någon bidiskussion men gör ändå ett försök att besvara Bertils inlägg med blått nedan.


                          Ursprungligen postat av Bertil Visa inlägg

                          Inte för att jag är emot idén, den är bra, men man måste förtydliga.
                          Bra

                          Man kan idag i ett script tillverka de dataserier som du föreslår fast med bara instrumentet självt + 3 cmpref som ingångsinstrument.
                          Jasså, vilka dataserier har jag föreslagit? Jag kan direkt säga att det inte går med alla dataserier även om vi begränsar oss till ett script.

                          Utöver c,o,h,l,b,s finns ju bara volymen som dataserie, eller har jag fel?
                          Nej du har rätt, jag glömde volymen, men det är ju det som är hela problemet, cmpref är begränsad till vad som finns i kursfeeden.

                          Säg att du vill tillverka ett syntetsikt index (fastän du tog bort exemplet), då är du fortfarande begränsad av 3 st cmpref.
                          Nej, jag blir inte begränsad av 3st cmpref, i själva verket behöver jag inte ha med dem alls.

                          Så här ser min önskelista ut till Autostocks Tomteverkstad

                          1) Ett nytt API mot Nordnet. Detta märker vi inte av men det måste bli klart innan Autostock kan ta tag i andra större projekt.
                          Absolut, men det ena motsäger inte det andra.

                          2) Ekonominyheter från Nyhetsbyrån Direkt som skall integreras i NAT. Detta är något helt nytt som kan öppna upp andra triggermöjligheter än vad vi nu kan använda oss av. Vi reagerar direkt på nyheten istället för att vänta att andra handlare skall reagera på nyheten och vi märker det först då kurvan rör sig.
                          Visst, en intressant feature, men jag tror faktiskt inte att du kommer att märka så stor skillnad, för en redaktör till nyheten skall först skriva/läsa den och därefter tagga den som positiv/negativ/neutral vilket förmodligen kommer att lagga gentemot kursen.

                          3) Fler cmpref
                          Behövs inte, se ovan.

                          4) Syntetiska dataserier.
                          Vet inte riktigt vad du syftar på här, men det är ju detta som de nya funktionerna är tänkta att ta hand om.

                          mvh
                          Bertil

                          Comment


                          • #14
                            Ursprungligen postat av Bertil Visa inlägg
                            En liten fråga till dig LillWicke. I din profil har du ju skrivit att du även har flera andra analysprogram. Är det något speciellt syntetiskt instrument som du kan tillverka där som du hemskt gärna vill scripta i NAT?

                            Då jag började labba med cmpref så var ju jag inte särskilt intresserad av funktionen cmpref, det jag var ute efter var en metod att studera DAX indexet och använda det för att trigga på terminen.

                            Vilken är ditt första syntetiska instrument du kommer att tillverka i NAT då du får den möjligheten och hur skall du använda det?
                            undrar
                            Bertil
                            Jag kan inte så där direkt säga att jag i första hand skulle scripta ett syntetiskt instrument...
                            Jag är mer ute efter att kunna scripta modeller utan de tekniska begränsningar som det nuvarande scriptspråket har.

                            Comment


                            • #15
                              1) Ett nytt API mot Nordnet. Detta märker vi inte av men det måste bli klart innan Autostock kan ta tag i andra större projekt.
                              Ursprungligen postat av LillWicke Visa inlägg
                              ..Absolut, men det ena motsäger inte det andra. ...
                              Allt tar tid och kostar pengar så man måste prioritera.


                              Ursprungligen postat av LillWicke Visa inlägg
                              ..Nej du har rätt, jag glömde volymen, men det är ju det som är hela problemet, cmpref är begränsad till vad som finns i kursfeeden...
                              Allt vi jobbar med i NAT kommer ju in via kursfeeden. Om vi tillverkar medelvärden, använder AMA funktionen och allt övrigt är ju baserat på kursfeeden. Om du skall tillverka syntetiska dataserier har ju även de kursfeeden som input.

                              Av mina 69 aktiva script är minst 10 st över 100 rader långa (inkl blankrader), dvs jag processar allt i respektive script.

                              Ursprungligen postat av LillWicke Visa inlägg
                              ..för en redaktör till nyheten skall först skriva/läsa den och därefter tagga den som positiv/negativ/neutral vilket förmodligen kommer att lagga gentemot kursen.
                              ...
                              Gör inget. Om kursen rör sig lite och det samtidigt kommer en nyhet så får man en säkrare trigg.

                              Med vänlig hälsning
                              Bertil

                              Comment

                              Working...
                              X