您好
我試著寫一個用SMA而不是EMA的MACD指標,如果是單一頻率沒什麼問題,但我嘗試寫跨屏頻率的版本時,雖然可以執行,但是要等很久圖才會出來,不知道是不是因為計算跨頻率變數平均值的關係,我寫的程式如下:
input: FastLength(3, "DIF短天數"), SlowLength(10, "DIF長天數"), MACDLength(16, "MACD天數"),a1(20210101),
FreqType("30", "跨頻率週期", inputkind:=dict(["1分鐘","1"],["5分鐘","5"],["10分鐘","10"],["15分鐘","15"],["30分鐘","30"],["60分鐘","60"],["日","D"],["還原日","AD"]));
var:i(0);
array: ave1[20](0);
switch (FreqType)
begin
case "1":
if barfreq <> "Tick" and barfreq <> "Min" then raiseruntimeerror("不支援大頻率跨小頻率:主頻率大於1分鐘");
if barinterval <> 1 then raiseruntimeerror("不支援大頻率跨小頻率:主頻率大於1分鐘");
Value1 = Average(getfield("close","1"), FastLength) - Average(getfield("close","1"), SlowLength); //macd line
for i=1 to MACDLength
begin
ave1[i]=xfmin_getvalue("1",value1,i-1);
end;
Value2 = Array_Sum(ave1,1,MACDLength)/MACDLength ; //signal line
Value3 = Value1 - Value2 ; //histogram
其他的頻率就直接剪貼。
想請問一下,有什麼更有效率的寫法,可以讓圖比較快產生。我看了一下內建跨頻率MACD的寫法,都是用函數,但是我不知道要怎麼寫,之前嘗試過,但因為不知道在函數中要怎麼把Getfield的參數傳進去,所以寫不出來。麻煩您的指教。
3 評論