Inledning
Futurelook er Vikingens eget modelsprog. Alle modeller i Vikingen er kodet i dette sprog, og du kan selv gøre egne modeller i Vikingen med Future Look. Med model afses diagram.
For alle programmører i C++, C#, Java, Pascal, Basic eller lignende programmeringssprog, kommer det hurtigt til at sætte sig ind i hvordan man udvikler en egen analysemodel i Viking med hjælp af Futurelook.
Jeg har mulighed for at redigere funktioner og redigere eksisterende modeller. Når du bygger din analysemodel, skal du gøre indstillinger for hur diagram, tabeller og konfigurationsrutor skal se ud.
Dette gør, at Futurelook er et meget fleksibelt og kraftfuldt redskab til at udvikle unikke analytiske metoder for finansielle markeder.
Den her Onlineguiden er en introduktion til programmeringssprog Futurelook for brugere uden tidligere programmeringsvana. Vi kommer til at beröra alle nødvendige begreber og bygge op vejledning omkring en mængde eksempler for at gøre inlärningen lettere for nybörjare. Opdelingen af guiden er sådan, at det findes 3 forskellige segmenter
Afsnit 1, 2 Inledende om Futurelook og disse dele samt en første titt på programmering
Afsnit 3,4,5 Informativ afsnit om programmeringssprog, beskrivelse af værktøjer som findes til forfogande
Afsnit 6,7,8 Futurelook i praktik, hvor man arbejder med programmet for at tage en idé og gøre den til en fuldstændig professionel model.
Introduktion til Futurelook
Futurelook er et meget kraftfuldt værktøj til finansanalytikere og kapitalplaceringer. Med FutureLook er det muligt på et enkelt måde at lave en algoritme for at lave komplekse tidsserieanalyser og teknisk analyse. FutureLook er opbygget som et enkelt programmeringssprog, med et tilpasset funktionsbibliotek, der er egnet til analyse af finansiel tidsserie. FutureLook er integreret med Vikingen og sidder sammen med Vinstgeneratorn hvilket gør det enkelt at vinsttesta algoritmerne.
[bild av menyn moduler]
Til det eksterne består FutureLook af nogle filer, som er lagret i Vikingen. De er modeller respektive præsentationer.
Introduktion til Futurelook – Funktionsredigeraren
Funktionsredigeraren er værktøj, der bruges til at programmere sin model. Genom at starte Funktionskontrollen ( ‘Moduler’ -> ‘Funktionskontrol’ ) kan du bläddra gennem det eksisterende funktionsbibliotek som findes i din Viking og oprette nye biblioteker eller funktioner. Funktionsredigeraren er et enkelt tekstvindue, som bruges til at redigere og skabe egne modeller, kompilere disse og skrive hjælptekster. Man kommer til Funktionsredigeraren enten at skabe en ‘Ny’ modeller eller genom at ‘redigera’ og som allerede findes.
Tips: genom at klikke i ‘Visa indhold’ kan man få se en forhandsvisning på funktioner, hvilket kan være bra om man letar efter en bit kod at återanvända.
Funktionsredigeraren har udover selve tekstfeltet knapper for at ‘Spara’ funktionen efter man har foretaget ændringer, og ‘Kompilera’ er kodet for at gøre funktionen kørebar i Vikingen. Man kan også bruge ‘Kør’-knappen for at starte funktionen med standardindstillinger for at få koden til at fungere som man tænkte. Indtil slut findes på knappen ‘Presentation’ som videresender og videre til ‘Presentationsredigeraren’ for at lave grafiske indstillinger for modeller. Funktionsredigerar har to lägen, hvor ‘Redigera hjælp’ kan bruges til at redigere hjælpfilen sættes til programkoden.
Introduktion till Futurelook – Præsentationsredigeraren
Når du i Vikingen åbner “analytikern” og vælger en model, så du faktisk kommer på en præsentation. Denne præsentation indeholder information om hvilken model der bruges samt hvordan den skal præsenteres og med hvilke indstillinger. Dette gør, at man kan have flere separate præsentationer som bruger samme under liggende modeller. Udover sin funktion som “grænseflade” indeholder præsentationsmodeller også oplysninger om diagrammet eller tabellen ser ud samt hvilke indstillinger brugerne kan foretage som tekstændring af tidsintervaller, farver eller byta til logaritmisk skala. Præsentationen indeholder også hjælpinformation, samt specifikationer for hur utdata skal håndteres i modeltabellen.
Grunderna i Futurelook
Programmers struktur, design
Par(); |
Parametrar: Hantering af indata og uddata. Definier hvilke data, der skal bruges i funktionen, samt hvilke dataserier, der skal kunne bruges til modeller. | |
Var |
Variabler: Definiera vilka variabler som skal bruges lokalt i programmet, men intet som uddata. | |
Begin & End; |
Start og slut for selve programkoden. Her kan du kun bruge objekter, der defineres i ovenstående segmenter, og anropa funktioner, som findes i Vikingens funktionsbibliotek. |
Kommentarer
Olika programmeringssprog bruger forskellige tegn for at signalere til kompilatorer, som skriver, at det ikke er et program, som forstås, uden at det kan programmeres. Tekst om, hvorfor det er vigtigt at kommentere er vigtigt Futurelook bruger sig af tegnkombinationer // for at signalere at alting på samme rad er en kommentar, samt (* og *) for at signalera at alting som skriver mellem tecknen er kommentarer.
Altså:
// Detta är en kommentar! (* Detta är en kommentar som sträcker sig över flera rader! *)
En første titt på: Parametrar
Det første segment i hver funktion i Futurelook er definitionen af parametrerne. Her specificerar du hur Vikingen skal håndtere indata (et objekt eller flere), hvilke uddata som skal kunne bruges af funktionen (t.ex. i en modeltabell) samt hvilke parametrar som skal være tilgængelige i modelindstillinger (antal perioder for MAV osv.) Stiliseret kan man sige, at par-segmentet skal se ud som følgende:
par( [flagga] identifierare : datatyp ; [flagga2] identifierare2 : datatyp2 ; .. ) : [returtyp] ;
Där[flagga] er en specifikation for hvordan Futurelook skal håndtere data:
out : |
data kan bruges som uddata, t.ex. som graf i diagrammet eller som tabellkolumn i modeltabellen. |
|
var : |
data bruges som variabel, præcis som defineret under var-segmentet er. for par-segmentet. Færdighederne defineres som under parsegmentet med markering, der er synlige i præsentationsredigeringen og således kan plockas frem senere om man vil. |
|
: |
avsaknad av flagga betyder, at data er nogenting som ska in i modeller (tänk motsatsen till out). |
|
:returtyp |
genom at ange en datatyp efter : efter den afsluttede parentesen, så definerer man, hvad der skal returneres af funktionen. Dette bruges, når man skal anrope funktionen induti en anden funktion, og kræver, at man afslutter programmet med at definere ‘return'[identifierare] ;’ innan den sista ‘end;’ raden. |
Som eksempel betyder udvektor1 : realvector; att utvektor1 er et navn på en vektor, hvor indholdet er en realistisk type, og at denne vektor skal sendes til modeller for at kunne bruges grafisk eller i modeltabeller.
En første titt på: Variabler
Variabler er data, som du vil bruge dig af inde i funktionen, men som ikke behøver eller skal bruges udenfor. Dette kan være data af typer heltal, dvs. Heltal som bruges som tæller i en loop eller vektorer som bruges under tiden funktionen arbejder, men som ikke behøver bruges som uddata. Stiliseret er var-segmentet noget enklare end par-segmentet og ser ud som følgende:
var identifierare : datatyp ; ..
Bemærk at vare segmentet ikke afsluttes med noget specifikt tegn eller ord, uden alle deklarationer med syntakser ovenfor, som ligger efter var og inden begynde, bliver deklarerede variabler i programmet.
En første titt på: Funktioner
Alle funktioner i Vikingens funktionsbibliotek er tilgængelige ved anrop og dine funktioner med syntakser:
[biblioteksnamn].[funktionsnamn](parmeter1, parameter2, .. );
Som eksempel kan man anropa funktionen ‘MAVN’ som ligger i funktionsbiblioteket ‘Std’ med anropet
std.MAVN(a,b);
vi vet at MAVN regner ud et naturligt middelværdi på en dataserie ‘a’ af typen realvektor sat over de seneste ‘b’ perioder. Vill vi ha et 20-perioders medelvärde på huvudobjektets slutkurs skriver vi således:
std.MAVN(main.close,20);
En første titt på: Operatør
Mange af de udtryk som man bruger sig af i Futurelook kommer med indholdsoperatører. En operatør er et tegn, som svarer til en mængde forskellige saker, såsom et matematisk räknesätt eller en sammenligning mellem to saker. Operatørerne skal have to parametrar at arbejde med og komme efter operationen for at returnere et værdi.
T.ex. kan man regne ud indekskurser for S&P500 i SEK genom at multiplicere en vektor sp500 bestående af indekset med en vektor, der består af kronkurser.
SP500SEK := sp500 * sekusd;
Operatorn i detta fald er multiplikation *. Futurelook vet at både sp500 og sekusd er vektorer og ser til resultatet af operationen også den er en vektor. Det er således oplagt for at vise op SP500Sek på skærmen præcis som man vil.
En første titt på: Et eksempelprogram
Vi har nu fået en første titt på de forskellige komponenter, som bygger op et program i Futurelook og kan derfor begynde fundera på helheden, hvordan ser en fuldstændig model ud?
Som eksempel skriver vi en model som regner ud 2 forskellige glidende medelværdier på slutkurserne på en aktie og et glidende medelvärde på volymen på samme aktie.
par(main : instrument; out MV1,MV2,MVVol : realvector; MAV1Length,MAV2Length,MAVVolLength : integer); var filledclose : realvector; begin filledclose
Vi bryder ned koden for at undersøge alle dele efter, hvad vi lærer os i det her afsnit.
par(main : instrument;
Den første parameter defineres som et objekt af typen instrument, som vi kalder hoved. I en almindelig modell kommer denne rad alltid at være, eftersom vi vil att modeller ska köras på ‘Aktuellt Objekt’ i Vikingen.
out MV1,MV2,MVVol : realvector;
Vi definerer også at kunne tre stykker vektorer som vi vil kunne være decimaltal, dvs. realvektor, og vi vil se dem i chartet så vi anger præfikset ud for dem.
MAV1Length,MAV2Length,MAVVolLength : integer);
Modeller skal bruge til at bruge tre stykker parametrer som flere modeller, nemlig de forskellige perioder for de glidende middelværdier. Gennem at intet ange dem som ud så siger vi direkte at modeller kræver disse tre som inparametrar. Glöm inte att den sista raden under par-segmentet ska afsluttes med );
var filledclose : realvector;
Jeg var-segmentet definerer vi en vektor som vi vil kunne indeholde decimaltal dvs. en realvektor. Ved at definere den under var-segmentet, så kan vi intet rita op vektoren i chartet, uden at bruge den kun inde i modeller.
begin
Allting som står skrevet mellem begynder och det sidste ende; er selve ritningen for hvad modeller skal gøre
filledclose := std.FILL(main.close);
Forst use vi standardfunktionen FILL for at ge vektoren udfyldt, lukke alle slutkurser som findes i hovedobjektet, og derudover täppa til alla hål i vektoren om det skulle mangle data.
MV1 := std.MAVN(filledclose,MAV1Length);
Sedan tildele vi vektorn MV1 det glidende middelværdi på filledclose med periodlængden MAV1Length
MV2 := std.MAVN(filledclose,MAV2Length);
därtill tilldelar vi vektorn MV2 det glidende middelværdi på filledclose med den anden periodelængde MAV2Length
MVVol := std.MAVN(main.vol ,MAVVolLength);
og til sidst tildele vi vektorer MVVOL værdien som svarer til det glidende medelværdi objektets volymvektor main.vol.