交易腳本回測能否以分鐘K棒結束的收盤價設定進場點,而後逐筆有碰到進場點才進場?

  •   342 
  • 最後發表   Nestort  2023 八月 24
Nestort 發文於   2023/08/15

如題,小弟遇到的問題是,假如說想回測 if 15分K棒的K值收盤值>80,此時的收盤價是17000,若繼續往上50點就送空單委託單1口,但是在回測的時候發現,如果是「沒有」開啟逐筆洗價的話,EX: 9:15的K棒收盤的K值是>80,收盤價是17000,那當9:18的時候指數漲到17050照理說要掛空單市價成交1口,但如果沒有逐筆洗價的話,他會等到9:30的時候,才判斷,但若是9:30收盤是17040,那這口委託單就不會送出,即使盤中曾經有達成條件。 (這是問題1)

反之,如果開啟逐筆洗價的功能的話,反而會遇到的問題是,9:00~9:15的任何1個K棒的K值只要有碰觸到80,那就會啟動條件,但這不是我想要的,我想要的是要在收盤那個moment有碰到80,我的條件才會成立,那有什麼解法可以去處理我遇到的這種狀況? (這是問題2)   

想問說有沒有這兩種可以合併的解法,或是我理解哪邊有出問題,再麻煩各位大神解惑!

排序方式: 標準 | 最新
XQ小幫手 發文於   2023/08/17

Hello Nestort,

 

如果您需要進場時等K棒完成在判定條件,而出場時則是需要逐筆洗價的話,您可以將策略設定為逐筆洗價,但進場條件是 "上一根Bar" 完成條件。

舉例來說:

condition1 = 進場條件;

condition2 = 出場條件;

if condition1[1] and position = 0 and filled = 0 then setposition(1, market);

if condition2 and position = 1 and filled = 1 then setposition(0, market);

 

這樣的話就會是進場時要K棒結束時的運算符合條件才會進場,而一符合出場條件就馬上出場。

Nestort 發文於   2023/08/21

感謝小幫手,已順利解決。
另外在跑回測的時候有遇到一個問題,想再請你幫忙。

就是跑回測的過程中(跑15分K),假設我9:00的K棒跑完,有達成進場條件,9:16立馬進場,那如果說在9:15這跟K棒裡面,9:23打到停損。但因為進場條件是選擇上一根K棒的條件,所以變成我9:24又會符合進場條件,再進場一次,那如果遇到這種情形,有函數可以讓我這筆停損之後,等到9:15這跟K棒跑完 (也就是9:30) 之後再開始監控進場條件嗎? 

或是小幫手有其他解法,可以再提供一下想法嗎? 感謝!

附加文件

XQ小幫手 發文於   2023/08/24

Hello Nestort,

 

您可以設變數控制,舉例來說:

var: intrabarpersist _barNum(0)

 

condition1 = 進場條件;

condition2 = 出場條件;

 

if condition1[1] and position = 0 and filled = 0 and _barNum <> currentbar then setposition(1, market);

 

if condition2 and position = 1 and filled = 1 then begin 

    setposition(0, market);

    _barNum = currentbar;

    end;

 

上面的腳本宣告了 _barNum 變數,記錄了出場當下的K棒序列編號,並以此當作進場條件。

只要跟出場還是同一根Bar,就不會再度進場 (不符合 _barNum <> currentbar)。

關於 intrabarpersist 的說明可參考連結。

發表回覆
Close