請問如何在還沒收k時就觸價停損呢

  •   469 
  • 最後發表   中年小東東  2023 五月 12
中年小東東 發文於   2023/05/08

您好,目前的停損語法如下,但這是收k後的下一根才會執行,請問這要如何改為還沒收k,只要觸價就停損呢??

 

 

if loss_point > 0 and Close <= FilledAvgPrice - loss_point then begin   { 如果停損大於0 and 收k價小於(留倉成本-停損點) 即執行停損, }

{ 停損 }

SetPosition(0);

max_profit_point = 0;

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

Hello 中年小東東,

 

您可以在設定自動交易策略時勾選逐筆洗價,這樣策略就會在每次商品交易(洗價)時運算,符合條件的話就會下單。

需注意快市的時候並不一定每個Tick都能洗到。

附加文件

中年小東東 發文於   2023/05/10

感謝小幫手的回覆。

另外想請教,我在停損時作觸價停損(勾逐筆洗價),但我在停利時是否可單獨寫移動停利呢??

也就是  停損:觸價停損   停利:移動停利。

 

感謝您。

XQ小幫手 發文於   2023/05/11

Hello 中年小東東,

 

您可以參考內建的移動停利交易腳本。

裡面有同時包含觸價停損跟移動停利。

中年小東東 發文於   2023/05/11

hi 小幫手,

但我第一個問題的語法就是從移動停利的腳本copy來的,但這語法是要收k才會停損,不是嗎??

但為了能觸價停損,模擬勾逐筆洗價,那停利也會觸價時就停利,不會移動停利,是嗎??

請看以下語法。

另外還有個問題:執行回測裡有個  觸發即判斷成交 ,上面還有個 模擬逐筆洗價 ,我們在跑模擬時勾逐筆洗價,不就是會觸價成交了。那這2個不是一樣的意思嗎??還是它在回測時有不同的功能。

再麻煩小幫手解惑了,感謝^^

 

input: profit_point(35, "停利(點)");

input: profit_drawback_point(8, "停利回跌(點)");

input: loss_point(15, "停損(點)");

 

var: long_condition(false); { 進場買進作多 }

var: short_condition(false); { 進場買空 }

 

 

if profit_point = 0 then raiseruntimeerror("請設定停利(點)");

if profit_drawback_point = 0 then raiseruntimeerror("請設定停利回跌(點)");

if profit_drawback_point > profit_point then raiseruntimeerror("停利(點)需大於停利回跌(點)");

 

 

 

{ 以下為均線往上作多 }

long_condition = Average(Close, 5) cross over Average(Close, 10);  { 5均往上穿10均 }

 

if Position = 0 and long_condition then begin    { 如果庫存為0就執行以下 }

SetPosition(1); { 買進1張 }

end;

 

 

 

 

if Position = 1 and Filled = 1 then begin        { 如果庫存為1,而且有成交 }

var: intrabarpersist max_profit_point(0); { 啟動停利後最大獲利點 }

 

if loss_point > 0 and Close <= FilledAvgPrice - loss_point then begin   { 如果停損大於0 and 收k價小於(留倉成本-停損點) 即執行停損, }

{ 停損 }

SetPosition(0);

max_profit_point = 0;

 

end else begin

 

{ 判斷是否要啟動停利 }

if max_profit_point = 0 and Close >= FilledAvgPrice + profit_point then begin

max_profit_point = Close;

end;

 

if max_profit_point <> 0 then begin

if Close <= max_profit_point - profit_drawback_point then begin

{ 停利 }

SetPosition(0);

max_profit_point = 0;

end else if Close > max_profit_point then begin

{ 移動最大獲利點 }

max_profit_point = Close;

end;

end;

end;

end;

XQ小幫手 發文於   2023/05/12

 Hello 中年小東東,

 

小幫手建議您先閱覽網站上的教學區,另外您也不清楚移動停利是如何運作。

 

1.在即時的狀況下,有勾選逐筆洗價 => 每次商品有洗價(交易)時,腳本會運算。

沒勾選逐筆洗價 => K棒結束時才運算。

 

腳本要運算後,條件符合的狀況下才會下單。

所以沒勾選的話就是每根K棒結束時才會判斷是否要進出場。

 

2.回測的狀況下,1分鐘頻率的逐筆洗價是OHLC各洗一次。

其他頻率則是用1分鐘頻率的收盤價洗價。

 

觸發即判斷成交的功能則是勾選的狀況下會先用洗價的那個價格來判斷進出場委託是否有成交。

沒有勾選的話則是用下一個洗價價格來判斷是否有成交。

 

3.移動停利是依據設定好的觸發點,當價格上漲到觸發點時啟動移動停利,接著只要價格繼續往上漲,停利點也會跟著向上。

但價格下跌時停利點是不會移動的。

不論是否有勾選逐筆洗價,移動停利的運作邏輯都是相同的,並不會因為您勾選了逐筆洗價就不移動停利。

您可以參考其他網站關於移動停利的說明

 

如果您還是有問題,建議您可以將相關數值印出確認,會比較容易理解。

發表回覆
Close