設定移動停損,盤中卻頻繁出現賣出訊號

  •   418 
  • 最後發表   T343638  2021 四月 07
T343638 發文於   2021/03/30

input:ratio(1.095,"倍數");

var: intrabarpersist stoploss_point(0);

if stoploss_point = 0 then begin

stoploss_point = getfield("close","1")[1] - getfield("close","1")[1]*0.02;

 

end;

if getfield("close","1") > getfield("close","1")[1] then begin

if getfield("close","1") - getfield("close","1")*0.02 > stoploss_point then begin

stoploss_point = getfield("close","1") - getfield("close","1")*0.02;

end;

if 

close<close[1]*ratio 

or

Close <= stoploss_point

 

then ret=1;  end;

以上我按照自動交易中心的移動停損範本修改的警示腳本出場條件

我希望的出場條件是當盤中跌破平盤或是盤中達到移動停利/停損時(最高價向下2%)執行出場,但回測的結果在有些個股已經漲停了,卻還是會頻繁的賣出,是我移動停利腳本的什麼地方出問題嗎??

附加文件

排序方式: 標準 | 最新
T343638 發文於   2021/03/30

 出場腳本

附加文件

XQ小幫手 發文於   2021/04/01

Hello T343638,

 

根據您提供的腳本,stoploss_point並不是依據您進場的價格,而會因為價格上漲就跟著上調。

換句話說,如果股價先有一波高點後回跌,接著才進場的話,進場價格就有可能低於您設的stoploss_point。

您在圖上的範例,進場價是51.6,但是 stoploss_point 卻是 53.9。

 

建議您改採用交易腳本搭配使用 FilledAvgPrice 函數來抓出適合的 stoploss_point。

附上將您的腳本修改過後的自動交易中心匯出檔供您參考

附加文件

T343638 發文於   2021/04/03

那如果我將出場的資料讀取筆數改成1,是不是就只會讀取昨天的日k以及今日的1分k?

又因為進場腳本是漲停才進場,這樣照理來說股價先有一波高點後回跌,接著才進場的話,進場價格就有可能低於設的stoploss_point的情形就不存在了呀,但我回測後還是會有一樣頻繁出現賣出訊號的問題啊

(因為自動交易中心的回測跑太慢,所以還是希望用策略雷達跑回測)

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

Hello T343638,

 

將出場的資料讀取筆數改成1並不會有影響,這是因為您的stoploss_point並沒有歸0,而是保持著之前運算的值走平或往上升。

您stoploss_point的計算起點應該要是進場價格才行,但是在回測時會依照您回測的開始日期開始計算,而不是進場後才開始算。

所以如果您需要用策略雷達來回測的,那您需要將進場的條件也寫在出場的腳本,讓出場腳本知道什麼時候該開始計算stoploss_point才行。

附上策略雷達範例供您參考。

附加文件

發表回覆
Close