請問%數停損這樣寫是否正確?似乎都會過早停損

  •   118 
  • 最後發表   白中發  2024 四月 05
白中發 發文於   2024/03/29

請教橘子大:

主要操作:

一、五分K。
二、當沖。
三、入場為收K,出場為逐筆洗價觸發出場。

有一組放空停損(同時包括移動停損)用很久了,但是經過數月的觀察,似乎都未能在達到所設定的3.9%成本價停損,都是提早停損(大約2%),如下: 

input: loss_percent1(3.9, "停損(%)") ; 

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

value1 =  FilledAvgPrice * (1 + (0.01 * loss_percent)) ;          

if loss_percent = value1 then raiseruntimeerror("請設定停損(點)") ;    

if Position <= -1 and Filled <= -1 then begin   

{ 依照成本價格設定停損點位}  

{ 計算停損價格 }  

  if stoploss_point = 0 then begin  

   stoploss_point = value1 ;  

       end ;

 //移動停損    

{ 如果價格下跌的話, 則往下挪動停損價格. 停損價格只會越來越低 } 

if Close < FilledAvgPrice then begin //如果當根K收盤小於成本價 

if Close + (1 + (0.01 * loss_percent) ) < stoploss_point then begin// 

stoploss_point = Close + (1 + (0.01 * loss_percent) ) ; //則停損點(價)為當根K加停損趴數 

end;  

end;    

//如果最高價碰到停損點,則市價回補   //一分K跌2%會造成回補是因為High的關係  

    if   close >= stoploss_point then begin   

SetPosition( 0 , getfield("漲停價","D")) ;  { 停損 } 

stoploss_point = 0 ;

  end ;  

end ; 

 

     以上是小弟參考內建移動停損+自己粗淺的認知所產生的,不知哪裡有問題,導致過早停損(大約都是在成本價,或入場後底部起算的2%上下觸發回補),再請橘子大指教。

排序方式: 標準 | 最新
XS小編 發文於   2024/04/02

 Hello 白中發,

 

小編不是橘子大,不過建議您可以重新瀏覽下內建的交易腳本,裡面有空方移動停損的撰寫方式,並將相關數值印出,這樣會比較容易理解錯誤原因。

 

這邊在計算 stoploss_point 的算是應該是錯誤的:

if Close + (1 + (0.01 * loss_percent) ) < stoploss_point then begin

    stoploss_point = Close + (1 + (0.01 * loss_percent) ) ; //則停損點(價)為當根K加停損趴數 

    end;  

小編認為應該是 Close * (1 + (0.01 * loss_percent) )。

 

另外這個寫法也怪怪的,雖然運算上不會有錯 (設為0的時候value1會等於0沒錯)。

if loss_percent = value1 then raiseruntimeerror("請設定停損(點)") ;

建議您改為 if loss_percent = 0 then raiseruntimeerror("請設定停損(點)");。

  • 按讚來自於
  • u2591215
白中發 發文於   2024/04/05

致    管理員大:

        謝謝您的詳細解說!!我再來修改~~

發表回覆
Close