期間的累計成交量

  •   258 
  • 最後發表   小韭菜  2021 三月 05
小韭菜 發文於   2021/03/01

Hi 小幫手,

請問一下,我想寫10點到11點間的累積成交量是否有到300張,然後回測時會跑3天,也就是如果訊號是2/4號出現,那程式實際會從2/1開始跑,請問這個要怎麼寫?

另外,我想問

1 每根k棒都會重新執行一次程式,所以宣告變數並給初始值的話,那每根新的k棒都會被初始化一次嗎?

2 我底下的寫法cVol看起來會是累計3天的值?那要怎麼讓他只累計有出訊號的那天的10點到11點的成交量就好了呢?

3 condition1是內建變數,請問他如果在2/1被設成true,那之後也都會是true嗎? 

ps:我的執行頻率是10分鐘執行一次。

variable: cVol(0);

if Time >= 100000 and Time <= 110000 

then begin 

cVol=cVol+volume;

end

else if cVol > 300 

then begin 

condition1=True;

end;

 

謝謝 小幫手

排序方式: 標準 | 最新
小韭菜 發文於   2021/03/03

hi 小幫手,

我發現用cVol=cVol+volume;會得到錯誤的 成交量,我預期是要累計從100000開始的成交量,滿足300張就不再累計。

所以想再問一下:

1這裡的volume是指每一根k棒(10分鐘)的成交量還是今天到目前為止的成交量呢?

2 我在某一篇文章有看到 cVol=cVol[1]+volume;這種寫法,請問跟cVol=cVol+volume;在結果上有何差別呢?

謝謝小幫手

XQ小幫手 發文於   2021/03/05

Hi 小韭菜,

Q:期間的累計成交量,撰寫的語法不符合預期。

A:因為沒有初始化的關係,請加上以下程式碼初始化 cVol,沒有初始化的話,隔天在期間就會繼續累加。

P.S. 回測預設會跑 200 筆資料讀取,所以要初始化。

//當交易日更新時,初始化每天紀錄的變數
if getfieldDate("date") <> getfieldDate("date")[1] then cVol = 0;

修改好的完整範例雷達匯出檔案如附檔,一併提供給您參考,謝謝。

附加文件

發表回覆
Close