Channel Trailing LX
這個策略在多頭持倉獲利達到一定門檻時,利用過去一定時間內的最低價作為賣出平倉的價格,以期鎖定獲利並減少損失。
通過調整 Length
、FloorAmt
和 PositionBasis
等參數,交易者可以靈活適應市場條件,優化自己的交易策略。
Source Code
[IntrabarOrderGeneration = false]
inputs: Length( 3 ), FloorAmt( 1 ), PositionBasis( false ) ;
variables: var0( 0 ), var1( 0 ) ;
var0 = LowestFC( Low, Length ) ;
if PositionBasis = false then
var1 = CurrentShares * FloorAmt
else
var1 = FloorAmt ;
condition1 = MarketPosition = 1 and MaxPositionProfit >= var1 ;
if condition1 then
Sell ( "ChTrLX" ) next bar at var0 stop ;
程式碼說明
[IntrabarOrderGeneration = false]
這行確保在同一K棒內不會生成多個委託單,僅在K棒完成時才生成委託單。
inputs: Length( 3 ), FloorAmt( 1 ), PositionBasis( false ) ;
Length
:用於計算最低價的過去K棒數量。FloorAmt
:達到或超過此獲利金額後才會放置委託單。PositionBasis
:允許按持倉還是按股計算獲利。設置為false
表示以股為單位計算獲利,設置為 True
表示以倉為單位計算獲利。
透過設定FloorAmt
和PositionBasis
,可以選擇要以每股獲利或每倉獲利來當作獲利門檻。
variables: var0( 0 ), var1( 0 ) ;
var0
用於儲存過去Length
個K棒中的最低價。var1
根據PositionBasis
的設定,計算出場的獲利門檻。
var0 = LowestFC( Low, Length ) ;
使用 LowestFC
函數根據指定的 Length
計算過去一段時間內的最低價。
if PositionBasis = false then
var1 = CurrentShares * FloorAmt
else
var1 = FloorAmt ;
如果 PositionBasis
為 false
,則 var1
的值計算為當前持有股份數量乘以 FloorAmt
。
如果為 true
,則直接使用 FloorAmt
。
condition1 = MarketPosition = 1 and MaxPositionProfit >= var1 ;
if condition1 then
Sell ( "ChTrLX" ) next bar at var0 stop ;
條件判斷是否處於多頭持倉(MarketPosition = 1
)並且最大持倉獲利達到或超過 var1
設定的獲利門檻。
如果滿足,則在下一K棒以 var0
(即過去最低價)作為價格送出賣出停損單。
這意味著如果市場跌到這個價格,將會觸發賣出平倉。