// ------------------------------
// 0. 使用者可調整的參數設定(每行一個 input 宣告)
// ------------------------------
input: _ChgDays(20, "漲幅天數"); // 使用者可自訂漲幅計算天數(例如近20日)
input: _VolAvgDays(5, "成交量平均天數"); // 使用者可自訂平均成交量期數(例如近5日)
input: _TopRank(100, "排名前X名"); // 用來控制篩選前幾名(例如前100名)
// ------------------------------
// 1. 排行:依照平均成交量進行排序
// ------------------------------
rank _RankVol desc begin
retval = Average(Volume, _VolAvgDays); // 計算近 _VolAvgDays 根K棒的平均成交量
end;
// ------------------------------
// 2. 排行:依照近 _ChgDays 日漲幅進行排序
// ------------------------------
rank _RankChg desc begin
var: _chgPct(0); // 漲幅百分比暫存變數
// 若 _ChgDays 日前收盤價不為 0,才進行漲幅計算,否則給極小值排最末
if Close[_ChgDays] <> 0 then
_chgPct = (Close - Close[_ChgDays]) / Close[_ChgDays] * 100
else
_chgPct = -9999;
retval = _chgPct; // 回傳漲幅百分比作為排行依據
end;
// ------------------------------
// 3. 條件篩選:成交量與漲幅皆在前 _TopRank 名以內
// ------------------------------
if _RankVol.pos <= _TopRank and _RankChg.pos <= _TopRank then
ret = 1;
// ------------------------------
// 4. 輸出欄位:顯示排行結果與漲幅數值
// ------------------------------
OutputField1(_RankVol.pos, "成交量排名");
OutputField2(_RankChg.pos, "漲幅排名");
OutputField3(_RankChg.value, "漲幅(%)");

3 評論