Retval/Getval skriver och läser till "lokala" celler inom en och samma scriptkörning.
Varje script har en egen uppsättning av dessa celler, och de är även kontounika och instrumentunika.
SetGvarIf däremot skriver till globala celler som sparas på disk. Dessa har ingen koppling till instrument eller konton, så här måste man tänka på vilka celler man använder till vad. Det är dessa celler som även kan användas för att flytta info mellan olika script.
Allmänt meddelande
Collapse
No announcement yet.
Idiom för statefulla script
Collapse
X
-
Idiom för statefulla script
Hur är det tänkt att man skall behålla värden mellan script exikveringar? Som jag har testat två varianter men osäker vad som är att föredra.
Första varianten sparar ner värdena i en extern cell mellan varje exikvering. Problemet här är på rad 8 där jag måste använda SetGVarIf för jag är beroende på en villkorlig skrivning. Jag är osäker om RetVal och SetGVarIf skriver till samma fält och om ens detta då funkar.
Nästa alternativ och det alternativ jag tycker känns mest naturligt är att skapa en dataserie av mina uträknade värden och sedan komma åt det historiska värdet med Aref(d,p). Problemet jag stöter på här är att referera sPos på rad 3 inte syntax checkar ok eftersom jag inte skapar objektet försän senare.HTML-kod:Nivå:=50 Senaste=GetVal(2) sPos=Mx(0,Add(Senaste,Sub(C,Ref(C,1)))) RetVal(sPos,2) Draw(sPos,4,DGQB) Signal=Gt(sPos,Nivå) SetGVarIf(0,2,Signal) {Om vi får signal resetta accumelerade värdet} Add(0,Signal)
Är detta de två alternativ som används i Autotrader för att komma åt historiska värden eller finns det bättre sätt?HTML-kod:Nivå:=50 sPos1=Mx(0,Add(Aref(sPos,1),Sub(C,Ref(C,1)))) Draw(sPos,4,dgqb) Signal=Gt(sPos,Nivå) sPos=If(Signal,0,sPos1) Add(0,Signal)
Tags: Ingen

Leave a comment: