{@type:sensor}
// 腳本類型: 策略腳本
// 腳本名稱: 修正均價條件策略
// 顯示名稱: 修正均價條件的綜合策略
// 執行頻率: 1分(非逐筆洗價)
// ========== 參數設置 ==========
input: priceDeviation(0), // 最新價小於均價的偏差
volumeLimit(2000), // 成交量下限
shadowLimit(2), // 上影線幅度下限
startTime(093000), // 策略執行開始時間
endTime(120000); // 策略執行結束時間
Var: side(-1); // 用於方向判斷
// ========== 初始化設置 ==========
SetTotalBar(3);
SetBackBar(10, "D");
// ========== 變數定義 ==========
Var: priceCondition(false), volumeCondition(false), shadowCondition(false), largeSellCondition(false), timeCondition(false);
Var: hasTriggered(false), lastTriggerDate(0);
// 條件 1: 最新價 < 當日均價線
Var: latestPrice(0), averagePrice(0);
latestPrice = GetField("收盤價");
averagePrice = GetField("均價");
priceCondition = (latestPrice < averagePrice * (1 - (priceDeviation / 100)));
// 條件 2: 成交量 >= volumeLimit
volumeCondition = (GetField("成交量", "D")[0] >= volumeLimit);
// 條件 3: 長上影線幅度超過 shadowLimit
Var: shadowHigh(0), shadowWidthCondition1(false), shadowWidthCondition2(false);
shadowHigh = maxList(GetField("開盤價", "D"), GetField("收盤價", "D"));
shadowWidthCondition1 = (GetField("最高價", "D") - shadowHigh) > GetField("收盤價", "D")[1] * (shadowLimit / 100);
shadowWidthCondition2 = (GetField("開盤價", "D") - GetField("收盤價", "D")) < (GetField("最高價", "D") - shadowHigh);
shadowCondition = shadowWidthCondition1 and shadowWidthCondition2;
// 條件 4: 大戶持續三分鐘賣超
Var: largeSellVolume(0), largeBuyVolume(0), netLargeSell(0);
largeSellVolume = GetField("賣出特大單量") + GetField("賣出大單量");
largeBuyVolume = GetField("買進特大單量") + GetField("買進大單量");
netLargeSell = side * (largeBuyVolume - largeSellVolume);
largeSellCondition = (netLargeSell > 0);
// 條件 5: 執行時間為 9:30 到 12:00
Var: curTime(0);
curTime = Time;
timeCondition = (curTime >= startTime and curTime <= endTime);
// ========== 日期重置機制 ==========
if getfieldDate("Date") <> lastTriggerDate then begin
hasTriggered = false;
lastTriggerDate = getfieldDate("Date");
end;
// ========== 綜合條件判斷 ==========
if not hasTriggered and priceCondition and volumeCondition and shadowCondition and largeSellCondition and timeCondition then begin
ret = 1; // 觸發警示
hasTriggered = true; // 紀錄當日已觸發
end;
此腳本已經回測過也有標的
請問小編如何確認
我下的條件是否都符合下才警示
1 評論