Keltner Channel LE
這個策略利用Keltner Channel來判斷市場的進場機會。
Keltner Channel會位於市場價格的上方(上通道)和下方(下通道),通道內的價格被認為是“正常”的。
當市場價格跌破下通道時,則觸發進場,送出突破K棒的最低價再減一點的價格的賣空停損單。
Source Code
[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 ;
程式碼說明
[IntrabarOrderGeneration = false]
這行確保在同一K棒內不會生成多個委託單,僅在K棒完成時才生成委託單。
inputs: Price( Close ), Length( 20 ), NumATRs( 1.5 );
Price
:被用來計算的價格,預設使用收盤價。Length
:用於計算Keltner Channel的K棒數量,預設20。NumATRs
:用於Keltner Channel計算的平均真實範圍的倍數,預設1.5。
variables: var0( 0 ), var1( 0 ), var2( 0 ), var3( false ), var4( 0 ) ;
var0
儲存移動平均線的值。var1
計算ATR值乘以NumATRs
。var2
是移動平均線(var0
)和ATR距離(var1
)的和,確定了設定在移動平均線下方的進場點。var3
是一個布爾變數,用於跟踪是否滿足進場條件。var4
儲存滿足條件時的價格,用於進場止損價格。
var0 = AverageFC( Price, Length ) ;
var1 = NumATRs * AvgTrueRange( Length ) ;
var2 = var0 - var1 ;
這幾行計算移動平均線並從中減去ATR的指定倍數,以確定Keltner Channel的下帶(var2
)。
condition1 = CurrentBar > 1 and Price crosses under var2;
if condition1 then
begin
var3 = true;
var4 = Low;
end
條件檢查價格是否向下穿越進場點(var2
)。
如果是,則將var3
設為true
並將var4
設為最高價。
else
begin
condition1 = var3 and ( Price > var0 or Low <= var4 - 1 point ) ;
if condition1 then
var3 = false ;
end;
這部分檢查在滿足初始條件後,價格是否回漲破移動平均線,或價格是否超過滿足條件時的最低價減1點(表示已賣空成功)。
如果是,則將var3
重置為false
。
if var3 then
Sell Short ( "KltChSE" ) next bar at var4 - 1 point stop ;
如果var3
為true
,表示滿足初始進場條件且未被重置,在下一K棒以var4
(即滿足條件時的最低價)減1點的價格放置賣空停損單。