Keltner Channel SE#

這個策略利用 Keltner Channel 來判斷市場的進場機會。Keltner Channel 位於市場價格的上方(上通道)和下方(下通道),通道內的價格被認為是正常的。當市場價格跌破下通道時觸發進場,送出突破K棒的最低價減 1 點的賣空停損單。

原始碼#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
[IntrabarOrderGeneration = false]
Inputs: Price(Close), Length(20), NumATRs(1.5);
Variables: var0(0), var1(0), var2(0), var3(false), var4(0);

var0 = AverageFC(Price, Length);
var1 = NumATRs * AvgTrueRange(Length);
var2 = var0 - var1;

Condition1 = CurrentBar > 1 and Price crosses under var2;
If Condition1 Then Begin
  var3 = true;
  var4 = Low;
End
Else Begin
  Condition1 = var3 and (Price > var0 or Low <= var4 - 1 point);
  If Condition1 Then
    var3 = false;
End;

If var3 Then
  Sell Short ("KltChSE") next bar at var4 - 1 point stop;

程式碼說明#

1
[IntrabarOrderGeneration = false]

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

1
Inputs: Price(Close), Length(20), NumATRs(1.5);
  • Price: 用來計算的價格,預設使用收盤價。
  • Length: 用於計算 Keltner Channel 的K棒數量,預設 20。
  • NumATRs: ATR(平均真實範圍)的倍數,預設 1.5。
1
Variables: var0(0), var1(0), var2(0), var3(false), var4(0);
  • var0: 儲存移動平均線的值。
  • var1: ATR 值乘以 NumATRs 的結果。
  • var2: 移動平均線(var0)減去 ATR 距離(var1),即 Keltner Channel 的下通道。
  • var3: 布林變數,追蹤是否滿足進場條件。
  • var4: 儲存滿足條件時的最低價,用於計算進場停損價格。
1
2
3
var0 = AverageFC(Price, Length);
var1 = NumATRs * AvgTrueRange(Length);
var2 = var0 - var1;

計算移動平均線,並減去 ATR 的指定倍數,得到 Keltner Channel 的下通道(var2)。

1
2
3
4
5
Condition1 = CurrentBar > 1 and Price crosses under var2;
If Condition1 Then Begin
  var3 = true;
  var4 = Low;
End

檢查價格是否向下穿越下通道(var2)。如果是,將 var3 設為 true 並將 var4 設為當前K棒的最低價。

1
2
3
4
5
Else Begin
  Condition1 = var3 and (Price > var0 or Low <= var4 - 1 point);
  If Condition1 Then
    var3 = false;
End;

如果不是突破K棒,檢查是否需要重置進場條件: 價格回漲破移動平均線,或最低價達到 var4 減 1 點(表示已成功賣空)。如果是,將 var3 重置為 false

1
2
If var3 Then
  Sell Short ("KltChSE") next bar at var4 - 1 point stop;

如果 var3true(滿足進場條件且未被重置),在下一根K棒以 var4(突破時的最低價)減 1 點的價格放置賣空停損單。

© 2026 CodeReindeer. All rights reserved.