腳本問題

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

求助

想要把這幾個條件寫成腳本放在策略雷達裡

盤中符合全部條件

執行時段為9點30分到12點整

最新價<當日均價線0%以上

成交量>= 2000張

長上影線,上影線幅度超過2%

連續3分鐘大戶持續賣超

目前寫成以下這樣

好像不太符合求高手修改

{@type:sensor}

// 腳本類型: 警示腳本

// 腳本名稱: 限時執行的最新價與長上影線綜合警示

// 顯示名稱: 最新價 < 當日均價線[1]%以上 且 長上影線幅度超過[2]% 且時段為[9點30分]到[12點00分]

// 執行頻率: 1分(非逐筆洗價)

 

// ========== 參數定義 ==========

input: _p1_priceDeviation(1);  // 最新價小於成本線的偏差

input: _p1_shadowLimit(2);     // 長上影線的幅度下限

input: _p1_startTime(093000);  // 開始執行的時間

input: _p2_endTime(120000);    // 結束執行的時間

 

// ========== 變數定義 ==========

Var: _side(-1), _priceCondition(false), _shadowCondition(false), _timeCondition(false); 

Var: latestPrice(0), averagePriceData(0), shadowValue(0), shadowConditionA(false), shadowConditionB(false);

 

// ========== 初始化與時段判斷 ==========

SetTotalBar(10);

 

// 判斷是否在執行時段內

if Time >= _p1_startTime and Time <= _p2_endTime then

    _timeCondition = true;

 

// ========== 最新價小於成本線 X% ==========

// 判斷最新價是否小於均價線的指定百分比

latestPrice = GetField("收盤價");

averagePriceData = GetField("均價");

 

if _side = 1 and latestPrice > averagePriceData * (1 + (_p1_priceDeviation / 100)) then

    _priceCondition = true

else if _side = -1 and latestPrice < averagePriceData * (1 - (_p1_priceDeviation / 100)) then

    _priceCondition = true;

 

// ========== 長上影線條件判斷 ==========

// 判斷長上影線條件

shadowValue = maxList(GetField("開盤價", "D"), GetField("收盤價", "D"));

 

// 狀況1: 上影線幅度是否超過設定值

shadowConditionA = (GetField("最高價", "D") - shadowValue) > GetField("收盤價", "D")[1] * (_p1_shadowLimit / 100);

 

// 狀況2: 上影線長度是否大於實體

shadowConditionB = (GetField("開盤價", "D") - GetField("收盤價", "D")) < (GetField("最高價", "D") - shadowValue);

 

if shadowConditionA and shadowConditionB then

    _shadowCondition = true;

 

// ========== 綜合條件判斷 ==========

if _timeCondition and _priceCondition and _shadowCondition then begin

    // 當所有條件都滿足時觸發警示

    RET = 1;

end else begin

    // 任一條件不滿足時不觸發警示

    RET = 0;

end;

 

附加文件

XS小編 發文於   2024/11/22

Hello qwer0203,

 

小編建議您先觀看網站上的教學區教學影片,裡面有XS語法的基礎和應用可以閱覽。

另外可以使用 print 函數將相關數值印出,會比較容易理解確認問題原因。

 

就小編來看,最新價<當日均價線0%以上,腳本中卻寫成  latestPrice < averagePriceData * (1 - (_p1_priceDeviation / 100)) 和描述的不太相同。

沒有成交量的條件。

shadowConditionB 的條件開盤價不一定大於收盤價,故 (GetField("開盤價", "D") - GetField("收盤價", "D")) 可能為負值。

ret除非有特別宣告,否則都為0。

發表回覆
Close