Från AT 6 finns ju möjligheten att arbeta med 4 olika objekt i valfria upplösningar i samma script.
För att referera till dessa extra objekt använder man funktionen
CmpRef(d,p,ABC)
Första parametern 'd' är ju en dataparameter som kan vara konstanterna C för Close, V för Volume osv.
Detta gör ju att funktionen i scriptspråket som tar en dataparameter går att använda även på extraobjekten.
Men några populära scriptfunktioner har inte den parametern utan är förutbestämt att plocka vissa värden.
Bland dessa funktioner är RSI, Stochastic och MACD.
För att kunna använda dessa kan du skriva dem i scriptspråket. Jag delar här med mig av script för detta ändamål.
MACD() kan också skrivas
Osc(c,12,26,e)
Då kan du också välja om perioder om du skulle vilja.
Trigger kurvan för macd nedan
mac:=Osc(c,12,26,e)
mov(mac,9,e)
Om vi tar ett exempel med macd på ett av de extra objekten i detta
fallet B-objektet
mac:=Osc(CmpRef(c,0,B),12,26,e)
mat:=mov(mac,9,e)
'mac' ovan plockar huvudkurvan för MACD för objekt B.
'mat' ovan plockar triggerkurvan för MACD för objekt B
B-objektet har du ju valt separat då vilket papper det gäller och vilken
upplösning.
Wilders RSI med skala 0-100
period:=14
a1:=if(gt(c,ref(c,1)),sub(c,ref(c,1)),0)
d1:=if(lt(c,ref(c,1)),sub(ref(c,1),c),0)
as1:=mov(a1,period,s)
ds1:=mov(d1,period,s)
wrsi:=sub(100,div(100,add(div(as1,ds1),1)))
Detta kan du göra om så det blir CmpRef() om det är objekt A istället så
här:
period:=14
a1:=if(gt(cmpRef(c,0,A),Cmpref(c,1,A)),sub(CmpRef(c,0,A),Cmpref(c,1,A)),0)
d1:=if(lt(CmpRef(c,0,A),Cmpref(c,1,A)),sub(Cmpref(c,1,A),CmpRef(c,0,A)),0)
as1:=mov(a1,period,s)
ds1:=mov(d1,period,s)
wrsi:=sub(100,div(100,add(div(as1,ds1),1)))
'wrsi' här kan du alltså använda i ditt övriga script.
Om du vill använda skala 0-100 även på övriga scriptet standardobjektet
så kan du använda rsiw() som är synonym med detta ovan.(ej dokumenterad
funktion).
Stochastic på objekt A
mp1:=3
stp:=5
stck1:=sub(hhv(cmpref(h,0,A),stp),llv(cmpref(l,0,A),stp))
stck2:=sub(cmpref(c,0,A),llv(cmpref(l,0,A),stp))
st60m:=div(mult(stck2,100),stck1)
st60slow:=mov(st60m,mp1,s)
'st60m' är Stochastic självt
'st60slow' är en uppmjukad stochastic(medelvärde 3 perioder)
Valet av namn här 'st60..' syftar på att i detta fallet hade man valt objekt A att vara i 60-minuter upplösning. Det blir förståss den upplösning som du väljer för objektet.
Vet inte hur Forum kommer att bryta raderna ovan, så se upp med konstiga radbrytningar när du kopiera scripttexten.
För att referera till dessa extra objekt använder man funktionen
CmpRef(d,p,ABC)
Första parametern 'd' är ju en dataparameter som kan vara konstanterna C för Close, V för Volume osv.
Detta gör ju att funktionen i scriptspråket som tar en dataparameter går att använda även på extraobjekten.
Men några populära scriptfunktioner har inte den parametern utan är förutbestämt att plocka vissa värden.
Bland dessa funktioner är RSI, Stochastic och MACD.
För att kunna använda dessa kan du skriva dem i scriptspråket. Jag delar här med mig av script för detta ändamål.
MACD() kan också skrivas
Osc(c,12,26,e)
Då kan du också välja om perioder om du skulle vilja.
Trigger kurvan för macd nedan
mac:=Osc(c,12,26,e)
mov(mac,9,e)
Om vi tar ett exempel med macd på ett av de extra objekten i detta
fallet B-objektet
mac:=Osc(CmpRef(c,0,B),12,26,e)
mat:=mov(mac,9,e)
'mac' ovan plockar huvudkurvan för MACD för objekt B.
'mat' ovan plockar triggerkurvan för MACD för objekt B
B-objektet har du ju valt separat då vilket papper det gäller och vilken
upplösning.
Wilders RSI med skala 0-100
period:=14
a1:=if(gt(c,ref(c,1)),sub(c,ref(c,1)),0)
d1:=if(lt(c,ref(c,1)),sub(ref(c,1),c),0)
as1:=mov(a1,period,s)
ds1:=mov(d1,period,s)
wrsi:=sub(100,div(100,add(div(as1,ds1),1)))
Detta kan du göra om så det blir CmpRef() om det är objekt A istället så
här:
period:=14
a1:=if(gt(cmpRef(c,0,A),Cmpref(c,1,A)),sub(CmpRef(c,0,A),Cmpref(c,1,A)),0)
d1:=if(lt(CmpRef(c,0,A),Cmpref(c,1,A)),sub(Cmpref(c,1,A),CmpRef(c,0,A)),0)
as1:=mov(a1,period,s)
ds1:=mov(d1,period,s)
wrsi:=sub(100,div(100,add(div(as1,ds1),1)))
'wrsi' här kan du alltså använda i ditt övriga script.
Om du vill använda skala 0-100 även på övriga scriptet standardobjektet
så kan du använda rsiw() som är synonym med detta ovan.(ej dokumenterad
funktion).
Stochastic på objekt A
mp1:=3
stp:=5
stck1:=sub(hhv(cmpref(h,0,A),stp),llv(cmpref(l,0,A),stp))
stck2:=sub(cmpref(c,0,A),llv(cmpref(l,0,A),stp))
st60m:=div(mult(stck2,100),stck1)
st60slow:=mov(st60m,mp1,s)
'st60m' är Stochastic självt
'st60slow' är en uppmjukad stochastic(medelvärde 3 perioder)
Valet av namn här 'st60..' syftar på att i detta fallet hade man valt objekt A att vara i 60-minuter upplösning. Det blir förståss den upplösning som du väljer för objektet.
Vet inte hur Forum kommer att bryta raderna ovan, så se upp med konstiga radbrytningar när du kopiera scripttexten.
Comment