腳本問題

  •   244 
  • 最後發表   qwer0203  2024 十一月 22
qwer0203 發文於   2024/11/22

{@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;

 

此腳本已經回測過也有標的

請問小編如何確認

我下的條件是否都符合下才警示

虎科大許教授 發文於   2024/11/22

使用Print。例如:

print(date,time, hasTriggered, priceCondition, volumeCondition, shadowCondition, largeSellCondition, timeCondition);

發表回覆
Close