Channel Trailing SX#

這個策略在空頭持倉獲利達到一定門檻時,利用過去一定時間內的最高價作為買入平倉的價格,以鎖定獲利並減少損失。透過調整 LengthFloorAmtPositionBasis 等參數,交易者可以靈活適應市場條件,優化自己的交易策略。

原始碼#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[IntrabarOrderGeneration = false]
Inputs: Length(3), FloorAmt(1), PositionBasis(false);
Variables: var0(0), var1(0);

var0 = HighestFC(High, Length);

If PositionBasis = false Then
  var1 = CurrentShares * FloorAmt
Else
  var1 = FloorAmt;

Condition1 = MarketPosition = -1 and MaxPositionProfit >= var1;
If Condition1 Then
  Buy To Cover ("ChTrSX") next bar at var0 stop;

程式碼說明#

1
[IntrabarOrderGeneration = false]

確保在同一根K棒內不會生成多個委託單,僅在K棒完成時才生成委託單。

1
Inputs: Length(3), FloorAmt(1), PositionBasis(false);
  • Length: 用於計算最高價的過去K棒數量。
  • FloorAmt: 達到或超過此獲利金額後才會放置委託單。
  • PositionBasis: 設定獲利的計算方式。false 表示以每股為單位計算,true 表示以整個倉位為單位計算。透過設定 FloorAmtPositionBasis,可以選擇以每股獲利或每倉獲利作為獲利門檻。
1
Variables: var0(0), var1(0);
  • var0: 儲存過去 Length 根K棒中的最高價。
  • var1: 根據 PositionBasis 的設定,計算出場的獲利門檻。
1
var0 = HighestFC(High, Length);

使用 HighestFC 計算過去 Length 根K棒的最高價。

1
2
3
4
If PositionBasis = false Then
  var1 = CurrentShares * FloorAmt
Else
  var1 = FloorAmt;

如果 PositionBasisfalsevar1 計算為當前持有數量乘以 FloorAmt。如果為 true,直接使用 FloorAmt

1
2
3
Condition1 = MarketPosition = -1 and MaxPositionProfit >= var1;
If Condition1 Then
  Buy To Cover ("ChTrSX") next bar at var0 stop;

判斷是否處於空頭持倉(MarketPosition = -1)且最大持倉獲利達到或超過 var1 設定的門檻。如果滿足,在下一根K棒以 var0(即過去最高價)作為價格送出買入停損單。當市場漲到這個價格時,觸發買入平倉。

© 2026 CodeReindeer. All rights reserved.