I mina försök att förstå hur AT räknar, har jag jämfört några olika sätt att göra samma sak, och fått lite underliga resultat.
Jag beräknar det flytande medelvärdet, dels med ATs Mov-funktion, dels med min egen funktion (som bygger på Ref, Add och Div).
För 4 perioder är medelvärdeskurvorna identiska. Vid 6 perioder kan man börja se att det är en liten skillnad mellan kurvorna. Vid 10 perioder har min kurva blivit påtagligt guppigare och dessutom ligger den lägre.
Är det avrundningsfel i ATs beräkningar? Jag har nämligen i andra beräkningar svårt att få rätt kurvform jämfört med identiska beräkningar i Excel, därav dessa tester.
Går det att höja beräkningsnogrannheten i ATs beräkningar, dvs styra antalet decimaler i beräkningarna? Några andra tips?
Jag måste scripta på denna "låga" nivå (se script nedan) för det jag vill åstadkomma, även om det inte är just Mov-beräkningen jag har problem med (bara ett exempel här).
--------------------------------------------
{ATs flytande medelvärde med 4 perioder}
atmov=mov(C,4,s)
{Kenneths flytande medelvärde med 4 perioder}
kmed01=Abs(Ref(C,0))
kmed02=Abs(Ref(C,1))
kmed03=Abs(Ref(C,2))
kmed04=Abs(Ref(C,3))
kmedx01=Add(kmed01,kmed02)
kmedx02=Add(kmed03,kmed04)
kmedsum=Add(kmedx01,kmedx02)
kmov=Div(kmedsum,4)
{uppritning, 4 perioder}
draw(atmov,3,CAA)
draw(kmov,4,BAA)
draw(C,5,WAC)
--------------------------------------------
{ATs flytande medelvärde med 6 perioder}
atmov=mov(C,6,s)
{Kenneths flytande medelvärde med 6 perioder}
kmed01=Abs(Ref(C,0))
kmed02=Abs(Ref(C,1))
kmed03=Abs(Ref(C,2))
kmed04=Abs(Ref(C,3))
kmed05=Abs(Ref(C,4))
kmed06=Abs(Ref(C,5))
kmedx01=Add(kmed01,kmed02)
kmedx02=Add(kmed03,kmed04)
kmedx03=Add(kmed05,kmed06)
kmedxx01=Add(kmedx01,kmedx02)
kmedxx02=Add(kmedx03,0)
kmedsum=Add(kmedxx01,kmedx02)
kmov=Div(kmedsum,6)
{uppritning, 6 perioder}
draw(atmov,3,CAA)
draw(kmov,4,BAA)
draw(C,5,WAC)
--------------------------------------------
{ATs flytande medelvärde med 10 perioder}
atmov=mov(C,10,s)
{Kenneths flytande medelvärde med 10 perioder}
kmed01=Abs(Ref(C,0))
kmed02=Abs(Ref(C,1))
kmed03=Abs(Ref(C,2))
kmed04=Abs(Ref(C,3))
kmed05=Abs(Ref(C,4))
kmed06=Abs(Ref(C,5))
kmed07=Abs(Ref(C,6))
kmed08=Abs(Ref(C,7))
kmed09=Abs(Ref(C,8))
kmed10=Abs(Ref(C,9))
kmedx01=Add(kmed01,kmed02)
kmedx02=Add(kmed03,kmed04)
kmedx03=Add(kmed05,kmed06)
kmedx04=Add(kmed07,kmed08)
kmedx05=Add(kmed09,kmed10)
kmedxx01=Add(kmedx01,kmedx02)
kmedxx02=Add(kmedx03,kmedx04)
kmedxx03=Add(kmedx05,0)
kmedxxx01=Add(kmedxx01,kmedx02)
kmedxxx02=Add(kmedxx03,0)
kmedsum=Add(kmedxxx01,kmedxxx02)
kmov=Div(kmedsum,10)
{uppritning, 10 perioder}
draw(atmov,3,CAA)
draw(kmov,4,BAA)
draw(C,5,WAC)
Jag beräknar det flytande medelvärdet, dels med ATs Mov-funktion, dels med min egen funktion (som bygger på Ref, Add och Div).
För 4 perioder är medelvärdeskurvorna identiska. Vid 6 perioder kan man börja se att det är en liten skillnad mellan kurvorna. Vid 10 perioder har min kurva blivit påtagligt guppigare och dessutom ligger den lägre.
Är det avrundningsfel i ATs beräkningar? Jag har nämligen i andra beräkningar svårt att få rätt kurvform jämfört med identiska beräkningar i Excel, därav dessa tester.
Går det att höja beräkningsnogrannheten i ATs beräkningar, dvs styra antalet decimaler i beräkningarna? Några andra tips?
Jag måste scripta på denna "låga" nivå (se script nedan) för det jag vill åstadkomma, även om det inte är just Mov-beräkningen jag har problem med (bara ett exempel här).
--------------------------------------------
{ATs flytande medelvärde med 4 perioder}
atmov=mov(C,4,s)
{Kenneths flytande medelvärde med 4 perioder}
kmed01=Abs(Ref(C,0))
kmed02=Abs(Ref(C,1))
kmed03=Abs(Ref(C,2))
kmed04=Abs(Ref(C,3))
kmedx01=Add(kmed01,kmed02)
kmedx02=Add(kmed03,kmed04)
kmedsum=Add(kmedx01,kmedx02)
kmov=Div(kmedsum,4)
{uppritning, 4 perioder}
draw(atmov,3,CAA)
draw(kmov,4,BAA)
draw(C,5,WAC)
--------------------------------------------
{ATs flytande medelvärde med 6 perioder}
atmov=mov(C,6,s)
{Kenneths flytande medelvärde med 6 perioder}
kmed01=Abs(Ref(C,0))
kmed02=Abs(Ref(C,1))
kmed03=Abs(Ref(C,2))
kmed04=Abs(Ref(C,3))
kmed05=Abs(Ref(C,4))
kmed06=Abs(Ref(C,5))
kmedx01=Add(kmed01,kmed02)
kmedx02=Add(kmed03,kmed04)
kmedx03=Add(kmed05,kmed06)
kmedxx01=Add(kmedx01,kmedx02)
kmedxx02=Add(kmedx03,0)
kmedsum=Add(kmedxx01,kmedx02)
kmov=Div(kmedsum,6)
{uppritning, 6 perioder}
draw(atmov,3,CAA)
draw(kmov,4,BAA)
draw(C,5,WAC)
--------------------------------------------
{ATs flytande medelvärde med 10 perioder}
atmov=mov(C,10,s)
{Kenneths flytande medelvärde med 10 perioder}
kmed01=Abs(Ref(C,0))
kmed02=Abs(Ref(C,1))
kmed03=Abs(Ref(C,2))
kmed04=Abs(Ref(C,3))
kmed05=Abs(Ref(C,4))
kmed06=Abs(Ref(C,5))
kmed07=Abs(Ref(C,6))
kmed08=Abs(Ref(C,7))
kmed09=Abs(Ref(C,8))
kmed10=Abs(Ref(C,9))
kmedx01=Add(kmed01,kmed02)
kmedx02=Add(kmed03,kmed04)
kmedx03=Add(kmed05,kmed06)
kmedx04=Add(kmed07,kmed08)
kmedx05=Add(kmed09,kmed10)
kmedxx01=Add(kmedx01,kmedx02)
kmedxx02=Add(kmedx03,kmedx04)
kmedxx03=Add(kmedx05,0)
kmedxxx01=Add(kmedxx01,kmedx02)
kmedxxx02=Add(kmedxx03,0)
kmedsum=Add(kmedxxx01,kmedxxx02)
kmov=Div(kmedsum,10)
{uppritning, 10 perioder}
draw(atmov,3,CAA)
draw(kmov,4,BAA)
draw(C,5,WAC)
Comment