Hej Rikard,
Jag har skrivit ett enkelt script som beräknar indikator CCI.
I det här fallet scriptet skulle visa två grafer (en av dem är förflyttat en dag tillbaka – märkt med ”d1”).
TP:=DIV(ADD(ADD(H,L),C),3)
TP_d1:=DIV(ADD(ADD(REF(H,1),REF(L,1)),REF(C,1)),3)
MEANDEV:=MOV(ABS(SUBT),20,S)
MEANDEV_d1:=MOV(ABS(SUBT_d1),20,S)
SMTP:=MOV(TP,20,S)
SMTP_d1:=MOV(TP_d1,20,S)
SUBT:=SUB(TP,SMTP)
SUBT_d1:=SUB(TP_d1,SMTP_d1)
X:=SUB(TP,SMTP)
Y:=MULT(0.015,MEANDEV)
X_d1:=SUB(TP_d1,SMTP_d1)
Y_d1:=MULT(0.015,MEANDEV_d1)
CCI:=DIV(X,Y)
CCI_d1:=DIV(X_d1,Y_d1)
CROSS(CCI, CCI_d1)
Tyvärr kan jag inte få CROSS(CCI, CCI_d1) då överskrider jag parentesdjup.
_______________________________________________________________
För att sänka parentesdjupet måste man använda minnesreferenser (börja använda ”=” likamed)
CCI=DIV(X,Y)
CCI_d1=DIV(X_d1,Y_d1)
CROSS(CCI, CCI_d1)
Kompilator accepterar scriptet men CROSS(CCI, CCI_d1) visar aldrig någonting därför att programet få alltid CCI=CC_d1
_____________________________________________________________
För att testa djupare använder jag CROSS(CCI,100) eller CROSS(CCI_d1,100)
CCI=DIV(X,Y)
CCI_d1=DIV(X_d1,Y_d1)
CROSS(CCI, 100)
I det här fallet för jag ”flaga” för CCI_d1. Från någon anledning programet hämtar bara det senaste värdet (CCI_d1) och lägger det i CROSS funktionen.
_______________________________________________________________
Om jag vänder ordning då CROSS(CCI,100) visar rätt ”flaga” – för CCI
CCI_d1=DIV(X_d1,Y_d1)
CCI=DIV(X,Y)
CROSS(CCI, 100)
________________________________________________________________
Om jag ändrar skriptet (denna gången i CROSS funktionen) får jag en rätt ”flaga” – för CCI_d1
CCI_d1=DIV(X_d1,Y_d1)
CCI=DIV(X,Y)
CROSS(CCI_d1, 100)
________________________________________________________________
I de två senaste fallen programet visar bådda värdena CCI_d1 och CCI korrekt.
Därför förljande skript visar äntligen korsningsflaga mellan två diagramer (CCI och CCI_d1).
CCI_d1=DIV(X_d1,Y_d1)
CCI=DIV(X,Y)
CROSS(CCI_d1, CCI)
Rikard kan du förklara mig varför programet ville inte fungera tidigare. Jag skulle vilja ha bättre förståelse hur minnesreferenser fungerar och hur kan man använda dem på rätt sätt i skripter.
Tack på förhand.
Daniel
Jag har skrivit ett enkelt script som beräknar indikator CCI.
I det här fallet scriptet skulle visa två grafer (en av dem är förflyttat en dag tillbaka – märkt med ”d1”).
TP:=DIV(ADD(ADD(H,L),C),3)
TP_d1:=DIV(ADD(ADD(REF(H,1),REF(L,1)),REF(C,1)),3)
MEANDEV:=MOV(ABS(SUBT),20,S)
MEANDEV_d1:=MOV(ABS(SUBT_d1),20,S)
SMTP:=MOV(TP,20,S)
SMTP_d1:=MOV(TP_d1,20,S)
SUBT:=SUB(TP,SMTP)
SUBT_d1:=SUB(TP_d1,SMTP_d1)
X:=SUB(TP,SMTP)
Y:=MULT(0.015,MEANDEV)
X_d1:=SUB(TP_d1,SMTP_d1)
Y_d1:=MULT(0.015,MEANDEV_d1)
CCI:=DIV(X,Y)
CCI_d1:=DIV(X_d1,Y_d1)
CROSS(CCI, CCI_d1)
Tyvärr kan jag inte få CROSS(CCI, CCI_d1) då överskrider jag parentesdjup.
_______________________________________________________________
För att sänka parentesdjupet måste man använda minnesreferenser (börja använda ”=” likamed)
CCI=DIV(X,Y)
CCI_d1=DIV(X_d1,Y_d1)
CROSS(CCI, CCI_d1)
Kompilator accepterar scriptet men CROSS(CCI, CCI_d1) visar aldrig någonting därför att programet få alltid CCI=CC_d1
_____________________________________________________________
För att testa djupare använder jag CROSS(CCI,100) eller CROSS(CCI_d1,100)
CCI=DIV(X,Y)
CCI_d1=DIV(X_d1,Y_d1)
CROSS(CCI, 100)
I det här fallet för jag ”flaga” för CCI_d1. Från någon anledning programet hämtar bara det senaste värdet (CCI_d1) och lägger det i CROSS funktionen.
_______________________________________________________________
Om jag vänder ordning då CROSS(CCI,100) visar rätt ”flaga” – för CCI
CCI_d1=DIV(X_d1,Y_d1)
CCI=DIV(X,Y)
CROSS(CCI, 100)
________________________________________________________________
Om jag ändrar skriptet (denna gången i CROSS funktionen) får jag en rätt ”flaga” – för CCI_d1
CCI_d1=DIV(X_d1,Y_d1)
CCI=DIV(X,Y)
CROSS(CCI_d1, 100)
________________________________________________________________
I de två senaste fallen programet visar bådda värdena CCI_d1 och CCI korrekt.
Därför förljande skript visar äntligen korsningsflaga mellan två diagramer (CCI och CCI_d1).
CCI_d1=DIV(X_d1,Y_d1)
CCI=DIV(X,Y)
CROSS(CCI_d1, CCI)
Rikard kan du förklara mig varför programet ville inte fungera tidigare. Jag skulle vilja ha bättre förståelse hur minnesreferenser fungerar och hur kan man använda dem på rätt sätt i skripter.
Tack på förhand.
Daniel
Comment