移動停損

  •   306 
  • 最後發表   桂桂  2023 四月 18
桂桂 發文於   2023/04/11

小幫手  你好

能幫我看一下哪個部位出問題嗎?

他會停利停損

 

但不能執行移動停損

如 成本100  上漲到110  往下跌5%  應該出在104.5

但商品價位低於104.5也沒賣出呢

 

input: profit_point(10, "停利(%)");

input: loss_point(5, "停損(%)");

 

 

if loss_point = 0 then raiseruntimeerror("請設定停損(點)");

 

if Position = 1 and Filled = 1 then begin

{ 依照成本價格設定停損/停利 }

var: intrabarpersist stoploss_point(0);

 

{ 計算停損價格 }

if stoploss_point = 0 then begin

stoploss_point = FilledAvgPrice * (1 - (0.01 * loss_point));

end;

 

{ 如果價格上漲的話, 則往上挪動停損價格. 停損價格只會越來越高 }

if Close * (1 - (0.01 * loss_point)) > stoploss_point then begin

 

    stoploss_point = Close * (1 - (0.01 * loss_point));

 

    end;

 

 

 

if profit_point > 0 and Close >= FilledAvgPrice * (1 + (0.01 * profit_point))  and close <> getField("漲停價", "D") then begin

{ 停利 }

setposition(0, getfield("跌停價", "D"));

stoploss_point = 0;

end else if Close <= stoploss_point then begin

{ 停損 }

setposition(0, getfield("跌停價", "D"));

stoploss_point = 0;

end;

end;

 

範例

4/6號買進 美時269.75 

4/7號最高價280

4/10號跌破266(280-5%) 要賣出才對

 

 

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

Hello 桂桂,

 

小幫手這邊用回測測試,是可以正常移動停損出場。(參考附圖)

建議您可以搭配使用print確認 close 和 stoploss_point 是否有如您所想的運算。

需注意 setposition 同時間只會執行第一個觸發到的,所以若腳本中有其他的 setposition 先觸發可能會導致移動停損無法執行。

 

如果還是有問題的話,要麻煩您提供 交易腳本 並告知是如何使用的 (相關設定) 讓小幫手測試。

您可以直接將檔案上傳,也可以Mail至客服信箱 XQservice@XQ.com.tw 且務必附上 討論文章連結網址(小幫手才能盡早處理)。

感謝。

附加文件

桂桂 發文於   2023/04/13

以寄信箱給您~ 謝謝

桂桂 發文於   2023/04/14

小幫手如何在我這指令加上print

 

我買入根廷力都沒問題

就停損 實跑都無法順利

回測 

有的會移動停損  

有的不會  ...  很困擾

XQ小幫手 發文於   2023/04/14

Hello 桂桂,

 

您可以在腳本最後方加上

if stoploss_point <> 0 then print(date, currentTime, close, stoploss_point);

這樣就可以比對 stoploss_point 和 close 的值。

 

小幫手這邊測試在美時日頻率上並將相關數值print出,您 stoploss_point 是根據 close 來決定而不是 high。

所以實際上停損點是在 265.525,並不是 266。

唯一有觸發的時間點是在 4/10 的 13:29,而此時由於是當天的結算價,所以AT是不會下單的。

若您有勾選 觸發即判斷成交 的話,那麼就會成交在最後這個價格上。

桂桂 發文於   2023/04/15

謝謝您

我在研究一下~~  

辛苦了

桂桂 發文於   2023/04/15

小幫手你的意思是說  我的指令只會在收盤前一刻判斷是否到停損

但可是超過交易時間就不會交易

這樣我的停損不就等於都不會執行?

腦子有點卡住!  

如果希望有打到停損價位就出場該如何修改設定呢?

XQ小幫手 發文於   2023/04/18

Hello 桂桂,

 

小幫手並沒有說交易指令只會在收盤前一刻判斷停損,而是說您的出場條件觸發時剛好是當天最後一根Bar。

當最後一根Bar觸發時當天已經收盤,所以就不會下單,此時您的腳本把 stoploss_point 改回 0。

故隔天開盤腳本運算時又回到 if stoploss_point = 0 then begin 裡,將 stoploss_point 設回 FilledAvgPrice * (1 - (0.01 * loss_point))。

 

小幫手會建議您可以將腳本的 stoploss_point = 0; 改在其他地方,像是:

if loss_point = 0 then raiseruntimeerror("請設定停損(點)");

var: intrabarpersist stoploss_point(0);

if position = 0 then stoploss_point = 0;

這樣就只會在系統已經將 position 改為0 (出場) 的狀況下才將 stoploss_point 改為0。

發表回覆
Close