

{@type:filter}
// ============================================
// 腳本名稱(版本): 爆量巨幅_20MA大於60MA選股 (v1.0)
// 核心目的:
// 1. 20日均線 > 60日均線
// 2. 股價 > 20元
// 3. 當日振幅 > 前10日平均振幅的10倍
// 4. 前10日平均成交量 > 3000張
// 5. 當日成交量 > 前10日平均成交量的2倍
// 修正重點:
// 1. 振幅直接使用XQ選股欄位「振幅」
// 2. 10日基準皆使用昨日以前10個交易日,不讓今日異常值污染平均
// 3. 加入振幅與均量分母防呆
// 撰寫者: XQ程式機器人
// ============================================
SetTotalBar(70);
input:
_ShortMALength(20), // 短均線期數
_LongMALength(60), // 長均線期數
_MinPrice(20), // 最低股價,預設20元
_AmplitudeLength(10), // 振幅平均期數,預設前10日
_AmplitudeMultiple(10), // 振幅放大倍數,預設10倍
_VolumeLength(10), // 均量計算期數,預設前10日
_MinAvgVolume(3000), // 10日平均成交量最低門檻,單位張
_VolumeMultiple(2); // 今日成交量相對10日均量倍數
var:
_ShortMA(0), // 20日平均收盤價
_LongMA(0), // 60日平均收盤價
_TodayAmplitude(0), // 當日振幅(%)
_AvgAmplitude10(0), // 前10日平均振幅(%)
_TodayVolume(0), // 當日成交量(張)
_AvgVolume10(0); // 前10日平均成交量(張)
// ------------------------------
// 1. 計算20日與60日均線
// ------------------------------
_ShortMA = Average(GetField("收盤價", "D"), _ShortMALength);
_LongMA = Average(GetField("收盤價", "D"), _LongMALength);
// ------------------------------
// 2. 計算當日振幅與前10日平均振幅
// ------------------------------
// XQ「振幅」定義:
// (當期最高價 - 當期最低價) * 100 / 參考價
_TodayAmplitude = GetField("振幅", "D");
// 使用[1]從昨日開始計算,避免今日巨大振幅被納入自己的比較基準
_AvgAmplitude10 = Average(GetField("振幅", "D")[1], _AmplitudeLength);
// ------------------------------
// 3. 計算今日成交量與前10日平均成交量
// ------------------------------
_TodayVolume = GetField("成交量", "D");
// 同樣由昨日開始往前10日計算正常均量
_AvgVolume10 = Average(GetField("成交量", "D")[1], _VolumeLength);
// ------------------------------
// 4. 五項選股條件
// ------------------------------
// 條件1:20日均線高於60日均線
condition1 = _ShortMA > _LongMA;
// 條件2:目前股價大於20元
condition2 = GetField("收盤價", "D") > _MinPrice;
// 條件3:當日振幅大於前10日平均振幅10倍
condition3 = _AvgAmplitude10 > 0
and _TodayAmplitude > _AvgAmplitude10 * _AmplitudeMultiple;
// 條件4:前10日平均成交量大於3000張
condition4 = _AvgVolume10 > _MinAvgVolume;
// 條件5:當日成交量大於前10日平均成交量2倍
condition5 = _AvgVolume10 > 0
and _TodayVolume > _AvgVolume10 * _VolumeMultiple;
// ------------------------------
// 5. 全部條件成立才選出
// ------------------------------
if condition1
and condition2
and condition3
and condition4
and condition5 then
begin
ret = 1;
end;
// ------------------------------
// 6. 輸出欄位,方便檢查選股結果
// ------------------------------
OutputField1(_ShortMA, "20日均線");
OutputField2(_LongMA, "60日均線");
OutputField3(_TodayAmplitude, "當日振幅%");
OutputField4(_AvgAmplitude10, "前10日平均振幅%");
OutputField5(_TodayAmplitude / _AvgAmplitude10, "振幅倍數");
OutputField6(_AvgVolume10, "前10日均量");
OutputField7(_TodayVolume, "當日成交量");
OutputField8(_TodayVolume / _AvgVolume10, "成交量倍數");
2 評論