この戦略は,ケルトナーチャネルインジケーターに基づいて設計されており,価格がチャネルの上下帯を突破したときの取引信号を生成します.この戦略は,売り信号が表示された場合,中立にポジションを平らにする場合のみ,長引きます.
この戦略では,SMAとATRを使用してケルトナーチャンネルを構築する.上部と下部帯は以下のように計算される.
上部帯 = SMA + ATR * マルチプリキュア 下帯 = SMA - ATR * マルチプリキュア
価格が上位帯を超えると,購入信号が生成されます.価格が下位帯を超えると,販売信号が生成されます.
売り信号が表示されたら,前回の注文をキャンセルし,ポジションを平らにする.
論理的には
この戦略の利点は
リスクもあります:
解決策:
戦略は以下の側面で最適化できます.
この戦略は,簡単なケルトナーチャネルルールで市場動向を効果的に捉える.論理は明確で理解しやすい.出口やショートモジュールの欠如にもかかわらず,パラメータチューニング,ストップを追加,ショートに行くなど,改善の可能性が大きい.全体的に,深い研究と適用に値する価値のある量子戦略です.
/*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)