請問,KD低檔黃金交叉的警示腳本和交易腳本,在一樣的條件語法產生"回測結果不同?想把交易腳本調成跟警示腳本一樣的回測結果,謝謝

  •   129 
  • 最後發表   W_M  2021 七月 13
W_M 發文於   2021/07/11

以神達3076回測近6個月為範本,作多,停損7%,停利10%,警示腳本出現三筆,交易腳本出現一筆,一樣的設定條件,卻產生不同的回測結果, 可以把交易腳本調成跟警示腳本一樣嗎?也就是交易腳本的回測也要出現三筆,謝謝

 

// 警示腳本如下:

input: Length(9), RSVt(3), Kt(3), LowBound(40);

 

SetTotalBar(maxlist(Length,6) * 3 + 8);

 

SetInputName(1, "計算期數");

SetInputName(2, "RSVt權數");

SetInputName(3, "Kt權數");

setInputName(4, "低檔區");

 

variable: rsv(0), k(0), _d(0);

 

Stochastic(Length, RSVt, Kt, rsv, k, _d);

 

if k<LowBound and k cross over _d

then ret=1;

 

===============================================================================

 

// 交易腳本如下:

// 宣告參數

input: Length(9, "計算期數"), RSVt(3, "RSVt權數"), Kt(3, "Kt權數"), LowBound(40, "低檔區"),

       profit_percent(10, "停利(%)"), loss_percent(7, "停損(%)");

variable: _rsv(0), _k(0), _d(0);

 

// 資料讀取筆數設定

SetTotalBar(maxlist(Length,6) * 3 + 8);

Stochastic(Length, RSVt, Kt, _rsv, _k, _d);

 

// 多方進場策略:K在低檔區由下往上突破D值。

if _k < LowBound and _k crosses above _d 

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

 

{多單停損停利(%)}

if filled = 1 and position = 1 and (high >= (filledAvgPrice + profit_percent){停利} 

or low <= (filledAvgPrice - loss_percent){停損}) 

then setposition(0, market);

XQ小幫手 發文於   2021/07/13

Hello W_M,

 

您交易腳本停損停利的部分有誤。

正確應該為:

if filled = 1 and position = 1 and (high >= (filledAvgPrice * (1+(profit_percent / 100))){停利}  

or low <= (filledAvgPrice * (1-(loss_percent/100))){停損}) 

您原本的寫法是價格+10停利與價格-7停損。

 

另外需注意,自動交易中心腳本回測的停損停利是純粹看價格變動的,而策略雷達回測的停損停利會把除權息納入考量。

小幫手用日頻率逐筆作測試得到的回測報告兩筆交易觸發進場的時間都相同,但第一筆出場會有差就是除權息的影響所造成。

策略雷達的因為除權息的關係導致獲利有超過10%而出場。但自動交易因為是看價格變動,最高價沒有到達10%所以沒有出場。

附上修改過的交易腳本以及回測報告供您參考。

 

如果還有問題的話,麻煩您提供兩者的回測報告和腳本讓小幫手看問題原因為何。

感謝。

附加文件

發表回覆
Close