資源の読み込みに... 荷物...

ケルトナーチャンネル追跡戦略

作者: リン・ハーンチャオチャン開催日:2023年12月25日 13:14:24
タグ:

img

概要

この戦略は,ケルトナーチャネルインジケーターに基づいて設計されており,価格がチャネルの上下帯を突破したときの取引信号を生成します.この戦略は,売り信号が表示された場合,中立にポジションを平らにする場合のみ,長引きます.

戦略の論理

この戦略では,SMAとATRを使用してケルトナーチャンネルを構築する.上部と下部帯は以下のように計算される.

上部帯 = SMA + ATR * マルチプリキュア 下帯 = SMA - ATR * マルチプリキュア

価格が上位帯を超えると,購入信号が生成されます.価格が下位帯を超えると,販売信号が生成されます.

売り信号が表示されたら,前回の注文をキャンセルし,ポジションを平らにする.

論理的には

  1. SMAとATRでケルトナーチャネルを構築する
  2. 価格が上位帯を超えると,エントリー価格を設定し,ロングに行く
  3. 価格が下帯を下回ると,前のロングポジションを平らにする.

利点分析

この戦略の利点は

  1. シンプルで明快な論理,理解し実行しやすい
  2. Keltner Channel は,トレンドの識別に直感的です.
  3. ストップ・ロスのリスクを追いかけるのを避けます
  4. 精度記入の条件付き命令

リスク分析

リスクもあります:

  1. 市場変動中の頻繁なオープン/閉鎖取引
  2. 短期間での機会を利用できない
  3. 出口メカニズムの欠如,手動的な介入が必要

解決策:

  1. 誤った信号を減らすためにチャネルパラメータを最適化
  2. 双方向取引のためのショートモジュールを追加
  3. 移動ストップ損失,トレーリングストップなどの出口メカニズムを追加

オプティマイゼーションの方向性

戦略は以下の側面で最適化できます.

  1. チャンネル期間,ATR倍数などパラメータを最適化
  2. 低帯域のブレイクアウトに基づいて短いモジュールを追加
  3. ATR トレイリングストップのようなストップ・ロスのメカニズムを組み込む
  4. 誤った信号を避けるためにより多くのフィルターを考慮してください
  5. 異なる製品における試験効果

結論

この戦略は,簡単なケルトナーチャネルルールで市場動向を効果的に捉える.論理は明確で理解しやすい.出口やショートモジュールの欠如にもかかわらず,パラメータチューニング,ストップを追加,ショートに行くなど,改善の可能性が大きい.全体的に,深い研究と適用に値する価値のある量子戦略です.


/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Keltner Channel Strategy", overlay=true)
source = close

useTrueRange = input(true)
length = input(20, minval=1)
mult = input(1.0)

ma = sma(source, length)
range = useTrueRange ? tr : high - low
rangema = sma(range, length)
upper = ma + rangema * mult
lower = ma - rangema * mult

crossUpper = crossover(source, upper)
crossLower = crossunder(source, lower)

bprice = 0.0
bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1])

sprice = 0.0
sprice := crossLower ? low -syminfo.mintick : nz(sprice[1]) 

crossBcond = false
crossBcond := crossUpper ? true 
 : na(crossBcond[1]) ? false : crossBcond[1]

crossScond = false
crossScond := crossLower ? true 
 : na(crossScond[1]) ? false : crossScond[1]

cancelBcond = crossBcond and (source < ma or high >= bprice )
cancelScond = crossScond and (source > ma or low <= sprice )

if (cancelBcond)
    strategy.cancel("KltChLE")

if (crossUpper)
    strategy.entry("KltChLE", strategy.long, stop=bprice, comment="KltChLE")

if (cancelScond)
    strategy.cancel("KltChSE")

if (crossLower)
    strategy.entry("KltChSE", strategy.short, stop=sprice, comment="KltChSE")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

もっと