Inledning

Futurelook er Vikingens eget modellspråk. Alle modeller i Vikingen er kodet i dette språket og du kan selv gjøre egne modeller i Vikingen med Future Look. Med modell avses diagram.

For alle som programmerer i C++, C#, Java, Pascal, Basic eller lignende programmeringsspråk, kommer det raskt å sette seg inn i hvordan man utvikler en egen analysemodell i Viking med hjelp av Futurelook.

Jeg funksjonsredigereren får du mulighet til å opprette nye funksjoner og redigere eksisterende modellmodeller. Når du bygger din analysemodell trenger du å gjøre innstillinger for hvordan diagram, tabeller og konfigureringsruter skal se ut.

Dette gjør at Futurelook er et meget fleksibelt og kraftfullt redskap for å utvikle unike analytiske metoder for finansiell marknad.

Den her Onlineguiden er en introduksjon til programmeringsspråk Futurelook for brukere uten tidligere programmeringsvana. Vi kommer til å gjøre alle nødvendige grep og bygge opp veiledninger og mengder eksempler for å gjøre informasjon lettere for nybörjare. Oppdelingen av guiden er slik at det finnes 3 forskjellige segmenter

Avsnitt 1, 2 Inledende om Futurelook og disse delene samt en første titt på programmering

Avsnitt 3,4,5 Informativ avsnitt om programmeringsspråket, beskrivelse av verktøy som finnes til forfogande

Avsnitt 6,7,8 Futurelook i praksis, jobbe med programmet for å ta en idé og gjøre den til en fullstendig profesjonell modell.

Introduksjon til Futurelook

Futurelook er et meget kraftfullt verktøy for finansanalytiker og kapitalplassering. Med FutureLook er det mulig å lage en algoritme for å gjøre komplekse tidsserieanalyser og teknisk analyse. FutureLook er bygget opp som et enkelt programmeringsspråk, med et tilpasset funksjonsbibliotek som er egnet for analyse av finansiell tidsserie. FutureLook er integrert med Vikingen og sitter sammen med Vinstgeneratorn, noe som gjør det enkelt å vinstesta algoritmene.

[bild av menyn moduler]

Til det ytre består FutureLook av noen filer som lagres i Vikingen. De er modeller respektive presentasjoner.

Introduksjon til Futurelook – Funksjonsredigeraren

Funksjonsredigereren er verktøy som brukes for å programmere sin modell. Gjennom å starte funksjonskontrollen ( ‘Moduler’ -> ‘Funksjonskontroll’) kan du bläddra gjennom det eksisterende funksjonsbiblioteket som finnes i din Viking og opprette nye bibliotek eller funksjoner. Funksjonsredigereren er et enkelt tekstvindu som brukes for å redigere og lage egne modeller, kompilere disse og skrive hjelpetekster. Man kommer til funksjonsredigeraren enten ved å lage en “Ny” modeller eller gjennom å “redigere” og som allerede finnes.

Tips: ved å klikke i ‘Visa-innhold’ kan man få se en forhandsvisning på funksjoner, noe som kan være bra om man leter etter en bit kod å gjenbruke.

Funksjonsredigereren har i tillegg til selve tekstfeltet knapper for “Spara”-funksjonen etter at man har gjort endringer, og “Kompilera”-koden for å gjøre funksjonen i Vikingen. Man kan også bruke ‘Kör’-knappen for å raskt starte innstillinger med standardinnstillinger for å kode som man tenkte. Til slutt finnes på knappen ‘Presentation’ som sender og videre til ‘Presentationsredigeraren’ for å gjøre grafiske innstillinger for modeller. Funksjonsredigerar har to posisjoner, der ‘Redigera hjelp’ kan brukes for å redigere hjelpfilen innstilt for programkoden.

Introduksjon till Futurelook – Presentasjonsredigeraren

Når du i Vikingen åpner “analytikern” og velger en modell, så peker du faktisk på en presentasjon. Denne presentasjonen inneholder informasjon om hvilken modell som brukes samt hvordan den skal presenteres og med hvilke innstillinger. Dette gjør at man kan ha flere separate presentasjoner som bruker samme under liggende modeller. Utover sin funksjon som “grensesnitt” inneholder presentasjonsmodeller også opplysninger om diagrammet eller tabellen ser ut samt hvilke innstillinger brukerne kan gjøre som tekst endre tidsintervall, farger eller byta til logaritmisk skala. Presentasjonen inneholder også hjelpinformasjon, samt spesifikasjoner for hvordan utdata skal håndteres og modelltabeller.

Grunderna i Futurelook

Programmers struktur, design

Par();
Parametrar: Hantering av indata og utdata. Definer hvilke data som skal brukes i funksjonen, samt hvilke dataserier som skal kunne brukes i modellene.
Var
Variabel: Definiera vilka variabler som skal brukes lokalt i programmet, men ikke som utdata.
Begin & End;
Start og slutt for selve programkoden. Her kan du kun bruke objekter som defineres i segmentene ovenfor, og funksjoner som finnes i Vikingens funksjonsbibliotek.

Kommentarer

Olika programmeringsspråk bruker ulike tegn for å signalere til kompilatorer som det som skrives ikke er et program som forstår, uten å være menat til programmereren. Tekst om hvorfor kommenteres er viktig Futurelook bruker tegnkombinasjoner // for å signalere at alting på samme rad er en kommentar, samt (* og *) for å signalera at alting som skriver mellom 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 segmentet i hver funksjon i Futurelook er definisjon av parametrene. Her skal Vikingen håndtere indata (ett objekt eller flere), hvilke utdata som skal kunne tas ut av funksjonen (t.ex. i en modelltabell) samt hvilke parametrar som skal være tilgjengelige i modellinnstillinger (antal perioder for MAV osv.) Stilisert kan man si at par-segmentet skal se ut som følgende:

par( [flagga] identifierare : datatyp ; [flagga2] identifierare2 : datatyp2 ; .. ) : [returtyp] ;

Där[flagga] er en spesifikasjon for hvordan Futurelook skal håndtere data:

out :

data kan brukes som utdata, t.ex. som graf i diagrammet eller som tabellkolumn i modelltabellen.

var :

data som brukes som variabel, nøyaktig som defineres under var-segmentet er. for par-segmentet. Skillnaden er at man definerer den under parsegmentet med flagget er at den er synlig i presentasjonsredigeringen og dermed kan plockas fram senere om man vil.

:

avsaknad av flagga betyr at data er noenting som ska in i modeller (tänk motsatsen till out).

:returtyp

gjennom å angi en datatype etter : etter avsluttende foreldresen, så definerer man hva som skal returneres av funksjonen. Dette brukes når man skal anrope funksjonen innuti en annen funksjon, og kreve at man avslutter programmet med å definere ‘return[identifierare] ;’ innan den siste ‘slutt;’ raden.

Som eksempel betyr utvektor1 : realvector; att utvektor1 er namnet på en vektor der innholdet er av typen ekte og at denne vektoren skal sendes ut av modellene for å kunne brukes grafisk eller i modelltabeller.

En første titt på: Variabler

Variabler er data som du vil bruke av inne i funksjonen, men som ikke trenger eller skal brukes utenfor. Dette kan være data av typer heltall, dvs. Heltal som brukes som teller i en loop eller vektorer som brukes under tiden funksjonen arbeider, men som ikke trenger å bruke som utdata. Stilisert er var-segmentet noe enklare enn par-segmentet og ser ut som følgende:

var identifierare : datatyp ; ..

Merk at segmentet ikke avsluttes med noe spesifikt tegn eller ord, uten alle deklarasjoner med syntakser ovenfor som ligger etter var og innenfor begynner, blir deklarerte variabler i programmet.

En første titt på: Funksjoner

Alle funksjoner i Vikingens funksjonsbibliotek er tilgjengelige ved bruk av funksjoner med syntakser:

[biblioteksnamn].[funktionsnamn](parmeter1, parameter2, .. );

Et eksempel kan man anropa funksjonen ‘MAVN’ som ligger i funksjonsbiblioteket ‘Std’ med anropet

std.MAVN(a,b);

vi vet at MAVN regner ut en naturlig middelverdi på en dataserie ‘a’ av typen realvector satt over de siste ‘b’ perioderna. Vill vi ha ett 20-perioders medelvärde på huvudobjektets slutkurs skriver vi således:

std.MAVN(main.close,20);

En første titt på: Operatør

Mange av de uttrykkene som man bruker seg av i Futurelook kommer med innholdsoperatører. En operatør er et tegn som svarer til en rekke ulike saker, som en matematisk räknesätt eller en sammenligning mellom to saker. Operatørene trenger to parametrar for å jobbe med og komme etter operasjoner for å returnere et verdi.

T.ex. kan man regne ut indekskurs for S&P500 i SEK gjennom å multiplisere en vektor sp500 bestående av indekset med en vektor som består av kronkurs.

SP500SEK := sp500 * sekusd;

Operatør i dette høsten er multiplikasjon *. Futurelook vet både sp500 og sekusd er vektorer og ser til resultatet av operasjonen også den er en vektor. Det er således opplagt for å vise opp SP500Sek på skjermen nøyaktig som man vill.

En første titt på: Et eksempelprogram

Vi har fått en første titt på de ulike komponenter som bygger opp et program i Futurelook og kan derfor begynne å finansiere helheten, hvordan ser vi en fullstendig modell?

Noen eksempler så skriver vi en modell som teller ut 2 forskjellige glidende middelverdier på sluttkursene på en aktie og en glidende middelverdi på volymen på samme aksje.

par(main : instrument; out MV1,MV2,MVVol : realvector; MAV1Length,MAV2Length,MAVVolLength : integer); var filledclose : realvector; begin filledclose

Vi bryter ned koden for å undersøke alle deler etter hva vi har lært oss i det her avsnittet.

par(main : instrument;

Den første parameteren defineres som et objekt av typen instrument, som kalles hoved. I en vanlig modell kommer denne rad alltid, eftersom vi vil att modeller ska köras på ‘Aktuellt Objekt’ i Vikingen.

out MV1,MV2,MVVol : realvector;

Vi definerer også å kunne tre stykker vektorer som vi vil kunne være desimaltal, dvs. realvektor, og vi vil se dem i diagrammet slik at vi angre prefikset ut for dem.

MAV1Length,MAV2Length,MAVVolLength : integer);

Modellen skal bruke tre stykker parametrar som flere modeller fungerer, nemlig de ulike periodene for glidende middelverdier. Gjennom at inte ange dem som ut så sier vi direkte at modellene krever disse tre som inparametrar. Glöm inte att den siste raden under par-segmentet ska avsluttes med );

var filledclose : realvector;

Jeg var-segmentet definerer vi en vektor som vi vil kunne inneholde desimaltal dvs. en realvektor. Gjennomsnittet defineres under var-segmentet slik at vi ikke kan bruke opp vektoren i kartet, uten å bruke bare inne i modeller.

begin

Allting som står skrevet mellom begynnelse og siste slutt; er selve ritningen for hvilke modeller som skal gjøres

filledclose := std.FILL(main.close);

Forst bruk av standardfunksjonen FILL for å fylle vektoren lukk alle sluttkurser som finnes i hovedobjektet, og i tillegg täppa til alle hål i vektoren om det skulle savnes data.

MV1 := std.MAVN(filledclose,MAV1Length);

Sedan tildeler vi vektorn MV1 det glidande middelvärdet på fylt med perioden MAV1Length

MV2 := std.MAVN(filledclose,MAV2Length);

därtill tilldelar vi vektorn MV2 det glidande middelvärdet på filledclose med den andre perioden MAV2Length

MVVol := std.MAVN(main.vol ,MAVVolLength);

og til sist deler vi vektorer MVVOL verdier som svarer til det glidende middelvärdet objektets volymvektor main.vol.

in Programmering

Related Articles