教授好,想請問如果想要篩選出指定時間內(時間基數至少5年起跳,比如20000101-20260101這一段時間)
這一段時間股票的最低點到最高點漲幅超過100%的篩選出來(最低點跟最高點的定義是盤中的最低跟最高不是指收盤價)也就是股價漲了兩倍以上的意思,這個要怎麼寫呢
一段時間內的最低點高最高點的漲幅篩選
- 21
- 最後發表 小萌新 10 小時前
小萌新
發文於
2026/03/29
虎科大許教授
發文於
2026/03/29
(1)設定代表開始日期與結束日期的參數,並確認是否有準備足夠的資料筆數。
(2)判斷最低點(使用Lowest及LowestBar函數)與最高點(使用Highest及HighestBar函數)的相對位置,最高點要出現在最低點之後。
(3)接著判斷100*(最高價/最低價-1)是否大於100。
小萌新
發文於
2026/03/29
setTotalBar(2000); var: myH(0), Lowest(0), Highest(0) ; value1=getbarOffset(20210102); value2=getbarOffset(20260327); value2-value1 請問到這邊對嗎,不知道怎麼取日期間的價格
虎科大許教授
發文於
2026/03/29
(1)Lowest, Highest是系統函數,不可當作變數名稱。
(2)myH=simplehighest(h[value2], value2-value1+1);
小萌新
發文於
2026/03/30
setTotalBar(2000); var: myH(0), myL(0), LowestBar(0), HighestBar(0) ;
value1=getbarOffset(20210102);
value2=getbarOffset(20260327);
myH=simplehighest(h[value2], value2-value1+1);
myL=simplelowest(l[value2], value2-value1+1);
if 100*(myH/myL-1)>100 then ret=1;
你好,我到這邊卡住了
虎科大許教授
發文於
2026/03/30
請刪除LowestBar(0), HighestBar(0) ;這是內建的函數,不能當作變數。
小萌新
發文於
2026/03/30
你好,可以編譯沒問題了,但是篩不出任何股票

虎科大許教授
發文於
2026/03/30
setTotalBar(2000);
var: myH(0), myL(0);
if isLastBar then
begin
value1=getbarOffset(20210102);
value2=getbarOffset(20260327);
myH=simplehighest(h[value2], value1-value2+1);
myL=simplelowest(l[value2], value1-value2+1);
if 100*(myH/myL-1)>100 then ret=1;
outputField1(myH,"myH");
outputField2(myL,"myL");
outputField3(100*(myH/myL-1),"漲跌幅");
end;
上述程式還需要加上判斷低點先出現才出現高點。
小萌新
發文於
2026/03/30
感謝教授 !
8 評論