この戦略は,移動平均線と組み合わせたケルトナーチャネル指標を使用して,ダイナミックなブレイクアウト購入と販売価格を設定し,低購入高販売ブレイクアウト操作を達成します. 戦略は自動的にチャネルブレイクアウト購入と販売機会を特定することができます.
総合戦略は,動的チャネル指標を通じて価格動向と方向性を判断するための科学的で合理的な方法を使用して,突破信号を捕捉するために合理的なパラメータを設定し,低買い高売りを達成し,過剰収益を得ます.同時に,戦略のリスクを継続的に最適化して,さまざまな市場で安定的に実行することができます.
/*backtest start: 2024-01-27 00:00:00 end: 2024-02-26 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="Keltner Strategy", overlay=true) length = input.int(20, minval=1) mult = input.float(2.0, "Multiplier") src = input(close, title="Source") exp = input(true, "Use Exponential MA") BandsStyle = input.string("Average True Range", options = ["Average True Range", "True Range", "Range"], title="Bands Style") atrlength = input(10, "ATR Length") esma(source, length)=> s = ta.sma(source, length) e = ta.ema(source, length) exp ? e : s ma = esma(src, length) rangema = BandsStyle == "True Range" ? ta.tr(true) : BandsStyle == "Average True Range" ? ta.atr(atrlength) : ta.rma(high - low, length) upper = ma + rangema * mult lower = ma - rangema * mult crossUpper = ta.crossover(src, upper) crossLower = ta.crossunder(src, 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 (src < ma or high >= bprice ) cancelScond = crossScond and (src > 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")