開盤10鐘 取 5分鐘跟10分鐘的兩根K

  •   269 
  • 最後發表   為了誰  2019 三月 14
為了誰 發文於   2019/02/19

我的問題 9:10 跳出時 但是兩根K棒的值是 9:00 跟 9:05

參考範例程式改的

variable:KBarOfDay(0); 

 

if Date <> Date[1] then  KBarOfDay=1 else  KBarOfDay+=1;

if KBarOfDay = 2 then

begin       

value1 = bollingerband(Close[2], 20, 2);

value2 = bollingerband(Close[2], 20, -2); 

value3 = bollingerband(Close[1], 20, 2);

value4 = bollingerband(Close[1], 20, -2); 

value5 = bollingerband(Close, 20, 2);

value6 = bollingerband(Close, 20, -2);

print(file("d:\print\Ten.log"), currenttime, symbol,"0 BB", KBarOfDay, close[2], value1, value2);

print(file("d:\print\Ten.log"), currenttime, symbol,"5 BB", KBarOfDay, close[1], value3, value4);

print(file("d:\print\Ten.log"), currenttime, symbol,"10 BB", KBarOfDay, close, value5, value6);

end;

91001.000000 3533.TW 0 BB 2.000000 228.000000 228.174456 223.575544 => 抓到 昨天

91001.000000 3533.TW 5 BB 2.000000 234.500000 230.721499 221.978501  => 抓到 9:00

91001.000000 3533.TW 10 BB 2.000000 238.500000 233.831593 220.268407 => 抓到 9:10

回測的時候  KBarOfDay = 3 數值才會正常

我的問題

1. 頻率5分鐘 回測的時候 9:00 9:05 9:10 會分別個進來一次 這不符合邏輯 所以KBarOfDay 2 改 3 才正常

2. 實際上跑程式 9:10 有跳出  但是都抓到 上一檔的5分K

3. 是我的程式有問題 還是甚麼地方沒注意到

4. 已經參考範例程式  還是有其他驗證過的範例可以參考

感謝

排序方式: 標準 | 最新
XQ小幫手 發文於   2019/02/19

Hi 為了誰,

您好,請您提供

1. 雷達匯出檔案,記得匯出時勾選包含自訂腳本。

2. Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)壓縮檔。

並附上此討論串網址,最後 Mail 至 XQservice@XQ.com.tw,以利小幫手查看問題的原因,謝謝。

為了誰 發文於   2019/03/06

小幫手, 

          程式 log 也給了, 你們跑一下就知道結果, 我不清楚是我問題 還是你們系統問題, 一問題拖那麼久, 請你們提供一個確認沒問題

可以取得 5分K 收盤價的範例給我, 我自己來debug, 也沒回應, 有勞小幫手幫忙, 感謝.

XQ小幫手 發文於   2019/03/06

Hi 為了誰,

您好,謝謝您的回饋,

請你們提供一個確認沒問題可以取得 5分K 收盤價的範例給我

猜想您是想取得回測5分K收盤價的範例,若是的話,請您提供回測相關設定畫面,

若不方便提供相關畫面,

請問您的回測設定是否有勾選「模擬逐筆洗價」的選項?

以利小幫手提供您撰寫方向參考,謝謝。

為了誰 發文於   2019/03/07

沒有使用逐筆洗價 , 我用你們的範例 來測試 還是慢一檔

variable:KBarOfDay(0); KBarOfDay+=1; if date<>date[1] then  KBarOfDay=1; 

if KBarOfDay = 2 then

   begin

value1 = bollingerband(Close[2], 20, 2);

value2 = bollingerband(Close[2], 20, -2); 

value3 = bollingerband(Close[1], 20, 2);

value4 = bollingerband(Close[1], 20, -2); 

value5 = bollingerband(Close, 20, 2);

value6 = bollingerband(Close, 20, -2);

print(file("d:\print\zzz.log"), currenttime, symbol,"0 BB", KBarOfDay, close[2], value1, value2);

print(file("d:\print\zzz.log"), currenttime, symbol,"5 BB", KBarOfDay, close[1], value3, value4);

print(file("d:\print\zzz.log"), currenttime, symbol,"10 BB", KBarOfDay, close, value5, value6);   

   end;

        91011.000000 2393.TW 0 BB 2.000000 31.950000 32.013623 31.706377      

        91011.000000 2393.TW 5 BB 2.000000 32.100000 32.058030 31.691970       close = 32.15 不是 32.1

        91011.000000 2393.TW 10 BB 2.000000 32.150000 32.104523 31.685477     

        所以才請你們提供正確的可以取得5分K 我來驗證一下 上面是今天的2393

        

XQ小幫手 發文於   2019/03/08

Hi 為了誰,

您好,以下這兩段程式碼

KBarOfDay+=1; 
if date<>date[1] then KBarOfDay=1; 

的意思是在頻率 5 分鐘無模擬逐筆洗價的回測狀況下,

KbarofDay = 1 為 09:00 那根K棒,

KbarofDay = 2 為 09:05 那根K棒,所以您設 if KBarOfDay = 2 then begin ... 的判斷下,

其實是僅在 09:05 那根K棒,列印出相關資料,

09:05 那根K棒 close[2] 是03/06 13:25 的收盤價

09:05 那根K棒 close[1] 是03/07 09:00 的收盤價

09:05 那根K棒 close     是03/07 09:05 的收盤價

以上說明,謝謝。

 


P.S. 為了查看問題的原因,小幫手有將以下 Print 程式碼

print(file("d:\print\zzz.log"), currenttime, symbol,"0 BB", KBarOfDay, close[2], value1, value2);
print(file("d:\print\zzz.log"), currenttime, symbol,"5 BB", KBarOfDay, close[1], value3, value4);
print(file("d:\print\zzz.log"), currenttime, symbol,"10 BB", KBarOfDay, close, value5, value6);

改為

print(file("d:\print\zzz.log"), date, time, symbol,"0 BB", KBarOfDay, close[2], value1, value2);
print(file("d:\print\zzz.log"), date, time, symbol,"5 BB", KBarOfDay, close[1], value3, value4);
print(file("d:\print\zzz.log"), date, time, symbol,"10 BB", KBarOfDay, close, value5, value6);

並回測 03/07 的 2393.TW 5 分鐘無勾選模擬逐筆洗價,Print 的出來的資料為以下,

以利驗證對照,相關腳本與回測設定如附檔。

...
20190307.000000 90500.000000 2393.TW 0 BB 2.000000 31.950000 32.013623 31.706377 20190307.000000 90500.000000 2393.TW 5 BB 2.000000 32.100000 32.058030 31.691970 20190307.000000 90500.000000 2393.TW 10 BB 2.000000 32.150000 32.104523 31.685477

 

所以才請你們提供正確的可以取得5分K

您好,假設您的回測相關設定無誤的話,

這個語法其實您已經有寫到了,小幫手覺得就是以下這行程式碼,就能取到當下的5分K

print(file("d:\print\zzz.log"), date, time, symbol, close);

可能您還會想問,那要取得前幾筆的5分K怎麼做,就是使用序列資料來取,例如:

close[1] 前一根5分K的收盤價

close[2] 前二根5分K的收盤價

 

P.S. 無法取得未來的 5 分K 收盤價。


 

若仍有疑問,請您提供以下資訊至此:

1. 回測警示腳本

2. 回測報告儲存檔案(*.BTReport)

3. 有問題的相關畫面或詳述

以利小幫手查看問題的原因,謝謝。

附加文件

為了誰 發文於   2019/03/13

感謝, 

另外 問一下 所以 我的KbarofDay = 2 理論上 是取到 9:05 的資料 如果有條件符合 也是在9:05後跳出是嗎?

另外 問一下 所以 我的KbarofDay = 3 就是 9:10 跳出

我印象中好像 會慢5分鐘才跳出 我在測試看看

 

為了誰 發文於   2019/03/14

小幫手

取得的值是正確 

20190314.000000 91000.000000 3017.TW 0 BB 3.000000 33.650000 33.205681 32.369319 

20190314.000000 91000.000000 3017.TW 5 BB 3.000000 34.000000 33.523053 32.176947 

20190314.000000 91000.000000 3017.TW 10 BB 3.000000 34.100000 33.780793 32.054207 

20190314.000000 91000.000000 3017.TW 布林高軌(高高) 3.000000 34.100000 

但是 9:15 才跳出, 理論上 應該是 9:10 要跳出 逐筆洗價 要打勾嗎?

為了誰 發文於   2019/03/14

好像是我理解錯誤

9:00 第1根 5分K 9:00 - 9:05

9:05 第2根 5分K 9:05 - 9:10

9:10 第3根 5分K 9:10 - 9:15

所以 KBarOfDay = 3 9:15 分跳出 抓9:10 K 

這要我清楚了, 這要解釋應該對吧 

抱歉 這段時間搞烏龍 感謝您的幫助 

  • 按讚來自於
  • b24524658
發表回覆
Close