想做一個1分K爆量警示,並且在以下條件情形下(股本,震幅,今量,昨量),但跑不出來,是否哪裡BUG

  •   397 
  • 最後發表   raymond0122  2024 五月 17
raymond0122 發文於   2024/05/15

input:length(270);//算k棒數量270根

var:targetFileName(""), price_amplitude(false),volume_ratio(false),price_range(false),today_volume(false),yesterday_volume(false);

price_amplitude = false;

volume_ratio = false;

price_range = false;

today_volume = false;

yesterday_volume = false;

 

IF GetQuote("股本(億)") > 5 AND GetQuote("股本(億)") < 1000 then

Begin

// 1 <= 振幅 <= 6

price_amplitude = GetQuote("當日振幅") >= 1 AND GetQuote("當日振幅") <= 6 ;

// 股價介於 20 ~ 120

IF volume_ratio = true then price_range = Close > 20 AND Close < 120 ;

 

// 今量 > 500

IF price_range = true then today_volume = GetField("Volume", "D") > 500;

 

// 昨量 > 3000

IF today_volume = true then yesterday_volume = GetField("Volume", "D")[1] > 3000;

 

 

 

 

if barInterval<>1 then raiseRunTimeError("限1分頻率");

 

if issessionFirstBar then value1=0;

 

if time>=090000

and time<=091000

then value1=(FasthIghest(V,length));//紀錄最大量值

 

if time>=091100

and time<=120000

and v>value1*2

then begin 

value1=v;//更新最大值,每次出現更大量都會警示

 

end;

 

End;

 

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/05/15

將GetQuote("當日振幅")改成GetQuote("振幅")或q_DayAmplitude

  • 按讚來自於
  • nic343411
XS小編 發文於   2024/05/17

 Hello raymond0122,

 

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

 

如果上面附的是您的完整腳本的話,腳本中沒有 ret = 1; 自然不會觸發。

volume_ratio 看起來一直都是False,那麼接下來的條件都不會判斷。

highest / highest 是用節省效能的寫法所撰寫,所以需要連續執行。

像是 if ... then value1 = highest(V,length); 這種寫法可能會造成運算錯誤,建議改為使用 simplehighest。

另外要注意,報價欄位 (getquote) 不能使用在回測,故若要在回測中使用振幅的話需自行計算。

 

感謝 虎科大許教授 的熱心回覆。

發表回覆
Close