1分K的起始點

  •   1.4K 
  • 最後發表   pon404  2022 十一月 10
pon404 發文於   2022/03/24

Hello 小幫手

目前的策略架構如下:

if barfreq <>"Min" or  barinterval<> 1 then raiseruntimeerror("1分K"); 

variable:count(0); 

if date<>date[1] then count=0; 

count=count+1; 

 if  count >= 0 and count <= 30 

and 判定條件

then ret=1;

這樣的架構下,開盤後的第幾分鐘就是count的數字,例如0902的count為2。

請問count的起始可以加上成交量的判定嗎?

例如0900成交量為0,直到0902才有第一筆成交,也就是說0902才是當天的第一根1分K,

我希望把0902的這根1分K改成count為0,即使0902以後再出現成交量為0,count也會繼續累加下去,不再從0重新開始。

請提供協助,謝謝。

排序方式: 標準 | 最新
貓老大 發文於   2022/03/24

參考看看

var: isSessionOpend (False), Count (0);
if isSessionFirstBar then
 begin
  Count = 0;
  isSessionOpend = Volume > 0;
 end
else
 begin
  if isSessionOpend then
   Count = Count + 1
  else
   isSessionOpend = Volume > 0;
 end;

 

 

pon404 發文於   2022/03/24

感謝貓老大協助,已順利完成,謝謝。

另外再請教一題,希望在上述架構再增加一個功能。

假設時間已經到了0915,請問要如何回頭在0910的當下取得0900到0910之間的最低價,

即使0911到0915出現比0900到0910更低的價格,依然需要0900到0910之間的最低價,

請提供協助,謝謝。

貓老大 發文於   2022/03/25

試試看這各方式

var: H910(0), L910(0);

if Time = 0910 then
 begin
  H910 = GetField ("High", "D");
  L910 = GetField ("Low", "D");
 end;

if Time >= 0915 then
 begin
   // 在此直接取用 H910, L910 的值
 end;

pon404 發文於   2022/03/25

十分感謝貓老大的協助,策略已經順利完成,謝謝。

XQ小幫手 發文於   2022/03/30

Hello pon404,

 

您可以參考 貓老大 的回覆。

另外需注意 貓老大 第一次回覆中的腳本沒有宣告變數 isSessionFirstBar。

所以您需要另行處理。

 

非常感謝 貓老大 的熱心回覆。

XQ小幫手 發文於   2022/04/11

Hello pon404,

 

小幫手更正,IsSessionFirstBar 是內建函數,用來判斷是否為當日第一根K棒,小幫手一時沒注意搞混。

XQ小幫手 發文於   2022/11/10

 Hello pon404,

 

照您這種用法,您是要抓取當日前31根Bar的最高價的話,直接使用變數紀錄即可。

用highest(high,count+1)取到前一根的話,應該是只有在暫緩開盤的狀況才會發生。

建議您可以搭配 isSessionOpend 來做判斷。

舉例來說:

if isSessionOpend then value1 = highest(high,count+1) else value1 = 0;

 

另外您可以參考 系統參數 => 策略洗價設定 => 不揭示未成交分鐘 的功能,此選項會讓成交量為0的K棒不顯示及運算。

 

發表回覆
Close