小幫手您好!
布林通道程式碼如下:
//布林軌道線 with BBandWidth
input:
Length(20, "MA的天數"),
UpperBand(2, "上通道標準差倍數"),
LowerBand(2, "下通道標準差倍數"),
EMALength(3, "移動平均天數");
variable: mid(0), up(0), down(0), bbandwidth(0), ema_X(0), idx_B(0);
//布林軌道
up = bollingerband(Close, Length, UpperBand);
mid = average(close, Length);
down = bollingerband(Close, Length, -1 * LowerBand);
//布林帶寬計算 bbandwidth
bbandwidth = 100 * (up - down) / mid;
ema_X = XAverage(bbandwidth, EMALength);
//布林極限指標 %B : idx_Bollinger_B
if up<> down then idx_B = (close-down) / (UP-DOWN) else idx_B =0;
目前想求出
EMA (idx_B,15) 的值 or XAverage (idx_B,15)
但目前Print 出來的 數值如為開盤前15根或雷達剛啟動, 計算出來的值皆會因, 起始期數不足影響後續計算, 需等過一陣子計算才會趨近正確
經檢視函數內容, 因期數不足則 如果僅有 5根K棒, 則 XAverage , Average 都會直接除以 15 期, 則數值失真
但EMA 依官網說明, 低於設定Length應會考慮不足期數的平均數
唯實際測試似乎亦無法計算出目前不足期數下的移動平均值, 且在分K頻率下, 前一日似乎亦無法納入計算(詳附件部分Print資料)
綜上, 請問小幫手, 如目的是想得到 idx_B 的加權移動平均值, 請問語法該怎麼寫呢?
另,在同樣頻率下(1分K),
mid = average(close, 20);
ema (mid,15) 所得結果 與 EMA(xfMin_EMA("1", Close,20),15) 亦有不同, EMA(xfMin_EMA("1", Close,20),15) 似乎較為正確, 請問原因是?




17 評論