如何在分鐘頻率交易腳本內抓日頻率的最高收盤價?

  •   531 
  • 最後發表   Jeffrey  2024 九月 02
Jeffrey 發文於   2024/08/26

Hi 大大們好, 

我有一個盤後選股策略是日頻率執行, 我想要盤中監控價格是否有突破100天的最高收盤價

請問要如何做呢?因為盤中監控的話就會改成是分鐘頻率, Highest期數欄位會變成分鐘K的, 抓不到100天的資料

請問這種情況要如何做呢?

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

value1=highest(getField("收盤價","D"),100);

  • 按讚來自於
  • jeff0818rey
Jeffrey 發文於   2024/08/26

Hi 許教授, 

感謝提供資訊

但想請教一下 highest 後面的參數不是期數嗎? 如果用5分鐘頻率去跑的話, 不會拿到近期100根5分k的最高價嗎?

 

 

虎科大許教授 發文於   2024/08/26

5分鐘頻率下,以下的陳述式會傳回100個5分鐘收盤價最高者。

value1=highest(getField("收盤價"),100);

5分鐘頻率下,以下的陳述式會傳回100天收盤價最高者。

value1=highest(getField("收盤價","D"),100);

  • 按讚來自於
  • jeff0818rey
Jeffrey 發文於   2024/08/26

Hi 許教授,

input:period(200, "計算天數");

setBackBar(period, "D");

if position=0 and filled=0 and date<>date[1] then begin

condition1=currentTime>132500 and close>=Highest(getField("收盤價","D"), period) and volume>300;

condition2=closeD(1)>=Highest(getField("收盤價","D"), period) and getField("成交量","D")[1]>300;

if condition1 or condition2 then setposition(1, MARKET);

end;

if position=1 and filled=1 then begin

if DateDiff(date, filledrecordDate(filledrecordCount)) >= 28

then setposition(0, MARKET);

end;

 

這是我目前的交易腳本, 在回測交易紀錄下面發現有些股票不會被篩到, 像是附件這張圖

我用選股策略回測的結果, 均豪在2024/3/5的收盤價已經是近200天最高收盤價了,

但是沒有被我的交易腳本選到, 是不是哪邊有甚麼bug我忽略掉了呢?

附加文件

虎科大許教授 發文於   2024/08/26

將Highest(getField("收盤價","D"), period) 改成 Highest(getField("收盤價","D")[1], period) 看看

Jeffrey 發文於   2024/08/27

改成這樣好像就完全抓不到了, 不知道 highest 的判斷邏輯是甚麼

另外我是有觀察到沒選到的都有一條上引線

不知道是不是 highest 的比價是拿所有價格來比較而不是用收盤價

虎科大許教授 發文於   2024/08/28

均豪3/5的condition1及condition2都是false,並沒有高於200天的最高價。

setTotalBar(5000);

input:period(200, "計算天數");

setBackBar(period, "D");

condition1=currentTime>132500 and close>=Highest(getField("收盤價","D"), period) and volume>300;

condition2=closeD(1)>=Highest(getField("收盤價","D"), period) and getField("成交量","D")[1]>300;

 

print(date,time,condition1,condition2);

Jeffrey 發文於   2024/08/28

Hi 許教授, 

感謝資訊,這正好符合我想問的

請問有其他函數可以比較最高收盤價而不是最高價嗎?

 

虎科大許教授 發文於   2024/08/28

Highest(getField("收盤價","D"), period)傳回的就是最高的收盤價。

Highest(getField("最高價","D"), period)才是傳回最高的最高價。

XS小編 發文於   2024/09/02

Hello Jeffrey,

 

小編補充,highest 函數是使用節省效能的方式撰寫,並不支援跨頻率運算。

您可以使用 simplehighest 來取代。

 

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

發表回覆
Close