用TrueAny() 寫的腳本,大致是,曾符合爆量突破前高,後續拉回時篩選出來
想問n日前符合條件的k棒資訊,我要如何使用,
例如
1.符合條件當日k棒收盤價,運用該close 再寫一個條件,比如兩日之間 最高價不得超過,符合突破當日k棒最高價的n%
2.需得知符合條件當日是哪一天,然後計算當日跟今日之間 法人/主力 買超的天數-賣超的天數>0
例如以下個股是透過 目前腳本抓到
綠色箭頭是第一個時間段的條件,突破。3/18
粉色是第二時間段抓到的。3/21 3/25
用TrueAny() 寫的兩個時間段腳本,相關問題
- 129
- 最後發表 里歐 2024 四月 16
附上腳本
//突破前高
input:N(2);
condition5 = GetField("收盤價") >= Highest(GetField("最高價")[1],N);
condition6 = close>close[1]*1.024; //
//=================================================================
//價量
input:VolumeLimit(10000);
input:VolumeCloseLimit(800000); //參考 價100, 8000張 //當沖可能要設更高 150*8000 = 1200000 ?
Value1 = GetField("成交量");
If close < 50 Then
condition11 = Volume > 3000;
If close > 50 and close < 200 Then
condition11 = Volume > 2000;
If close >= 200 and close <= 500 Then
condition11 = Volume > 1000;
If close > 500 Then
condition11 = Volume > 100;
// Volume*close > VolumeCloseLimit-1 Then
condition7 = Volume > Average(Volume[1], 5) * 2;
condition12 = Volume > Volume[1] * 2;
//Else
//condition7 = Volume > Average(Volume[1], 5) * 2.5;
condition8 = Value1 > VolumeLimit-1;
condition9 = Volume*close > VolumeCloseLimit-1;
//if condition7 and (condition8 or condition9) then ret =1;
//=================================================================
//====後續篩選,均線糾結程度===============================================================
Value1 = average(close, 5);
Value2 = average(close, 10);
Value3 = average(close, 20);
value5 = MaxList(Value1, Value2, Value3); //均線取最大
value6 = MaxList2(Value1, Value2, Value3); //均線第二大
value7 = MinList(Value1, Value2, Value3);
value8 = MinList2(Value1, Value2, Value3);
input:DistMaxMin(1.0371);
input:DistMaxMid(1.026);
input:DistMidMin(1.026);
condition1 = close > value7; //收盤價大於最低的均線
value9 = value5/value7;
condition2 = value9 < DistMaxMin; //差距最大的兩條均線,差距需小於0.35
value10 = value5/value6;
condition3 = value10 < DistMaxMid; //最大均線跟第二大均線,差距小於0.26
value11 = value6/value7;
condition4 = value11 < DistMidMin; //第二大均線跟最小均線,差距小於0.26
input:DistCloseMax(1.04);
condition10 = close/value5 < DistCloseMax;
//condition11 = close
//=============================================================
//過去三個月是否有紅k棒 超過3%? 過濾平穩股票 //但會錯過鴻海 2317 03/04
//input:j(100);
//value12 = close/close[1];
//value13 = countif(value12 > 1.03, j);
//condition11 = value13 > 1;
//=============================================================
input:k(7);
condition999 = (condition5 and condition6) and ((condition7 or condition12) and (condition8 or condition9));
condition111 = TrueAny(condition999, k);
if condition1 and condition2 and (condition3 or condition4) and condition10 and condition111 then ret =1;
Hello 里歐,
小編不太確定您的條件為何,不過就您的描述來看應該是要分兩個階段來判斷。
且需要使用 BarsLast 或是用變數來記錄條件1的相對距離。
1.符合條件當日k棒收盤價,運用該close 再寫一個條件,比如兩日之間 最高價不得超過,符合突破當日k棒最高價的n%
=> 這邊的兩日除了當日以外是哪一日?
小編會如此來判斷:
condition1 = 符合條件 and simplehighest(high, 兩日間的距離) <= high * 1.0n;
2.需得知符合條件當日是哪一天,然後計算當日跟今日之間 法人/主力 買超的天數-賣超的天數>0
您可以使用 BarsLast 或變數來判斷上次條件的相對距離,在計算兩者間符合買超的天數。
value1 = BarsLast(condition1); //condition1 最近一次符合的相對距離
condition2 = value1 > 0 and countif(GetField("法人買賣超", "D") > 0, value1) > countif(GetField("法人買賣超", "D") < 0, value1); //相對距離內的法人買超天數大於賣超天數
condition3 = value1 > 0 and countif(GetField("主力買賣超", "D") > 0, value1) > countif(GetField("主力買賣超", "D") < 0, value1); //相對距離內的主力買超天數大於賣超天數
這樣只要condition2 和 condition3 成立就代表 condition1 在前 value1 根Bar有符合過,從該根Bar到現在這根Bar的買超大於賣超。
或是用變數來記錄條件符合後買超 - 賣超天數:
if condition1 then begin
//條件成立後如果當天買超的話變數等於1,賣超的話則等於-1,否則為0
if GetField("法人買賣超", "D") > 0 then value1 = 1 else if GetField("法人買賣超", "D") < 0 then valeu1 = -1 else value1 = 0;
if GetField("主力買賣超", "D") > 0 then value1 = 1 else if GetField("主力買賣超", "D") < 0 then valeu1 = -1 else value1 = 0;
value3 = 0;
end
else begin
//如果當天是買超變數加1,賣超的話減1
if GetField("法人買賣超", "D") > 0 then value1 += 1 else if GetField("法人買賣超", "D") < 0 then valeu1 -= 1;
if GetField("主力買賣超", "D") > 0 then value1 += 1 else if GetField("主力買賣超", "D") < 0 then valeu1 -= 1;
value3 += 1;
end;
condition2 = condition1[value3] and value1 > 0 and value2 > 0; //相對距離前條件1有成立,且這段時間內買超大於賣超
您好,想先提外問ㄧ下,如果我想用三天內法人買賣超張數 總合>0,要怎麼寫
4 評論