n日內達成條件後,紀錄前一日資訊當base,但第二次達成條件,base會被蓋掉。

  •   210 
  • 最後發表   里歐  2025 一月 12
里歐 發文於   2025/01/12

腳本內容:
n日內有爆量,則儲存條件達成的前一日成交量資料,來當base,跟其他日的資料比對。

目前問題,寫的條件,n日內,第二次達成的話,k棒基準會改成第二次達成的。
例如:
號碼2,達成爆量,紀錄號碼1的成交量 (當base k棒)。
但是腳本設n日內,假設n=5, 號碼3又會達成條件,所以記錄號碼2的成交量(變成base k棒)。

需求是希望n日內,希望用第一次達成條件,所記錄的base k棒,不要因為後續達成的條件蓋掉。


附上腳本:

input: n(5,"xxxx");

input: v0(50,"量超過均量趴數");

 

settotalBar(n);

 

var: hasCrossOver(false);

 

var: BarCount(0);

 

input:avg_3_line(0);

input:avg_5day_line(1);

//=====================================================

Value11 = average(close, 5);

Value22 = average(close, 10);

Value33 = average(close, 20);

 

value55 = MaxList(Value11, Value22, Value33); //均線取最大

value66 = MaxList2(Value11, Value22, Value33); //均線第二大

value77 = MinList(Value11, Value22, Value33);

value88 = MinList2(Value11, Value22, Value33);

//=====================================================

if (close > Value11 or close > Value22 or close > Value33)

   and  (Volume > Volume[1] * 1.9) 

   //and ( (Volume > Average(Volume[1], 5) * 1.9) or (Volume > Volume[1] * 1.9) )

   then

begin

  condition1=true;

  BarCount=currentBar;

  value111 = volume[1]; //儲存 爆量前一天的成交量

end;

 

if islastBar then

begin

 

 

condition2 = volume > value111*2;

if condition1 and condition2  then ret=1;

 

//////////////////////////////////////////////////////////////////////////////

outputField1(date[n-BarCount+1],"達成條件 日期");

 

outputField6(n-BarCount+1,"n-BarCount+1");

outputField7(value111,"爆量前一天成交量");

//outputField5(value4,"突破至今的漲跌幅");

 

end;

 

虎科大許教授 發文於   2025/01/12

把if (close > Value11 or close > Value22 or close > Value33)

   and  (Volume > Volume[1] * 1.9) then

改成

Once((close > Value11 or close > Value22 or close > Value33)

   and  (Volume > Volume[1] * 1.9))

發表回覆
Close