यह रणनीति गतिशील ब्रेकआउट खरीद और बिक्री की कीमतों को निर्धारित करने के लिए चलती औसत रेखाओं के साथ संयोजन में केल्टनर चैनल संकेतक का उपयोग करती है। यह रणनीति स्वचालित रूप से चैनल ब्रेकआउट खरीद और बिक्री के अवसरों की पहचान कर सकती है।
समग्र रणनीति गतिशील चैनल संकेतकों के माध्यम से मूल्य प्रवृत्तियों और दिशाओं का न्याय करने के लिए वैज्ञानिक और उचित तरीकों का उपयोग करती है, सफलता संकेतों को पकड़ने के लिए उचित मापदंड निर्धारित करती है, कम खरीद-उच्च बिक्री प्राप्त करती है, और अतिरिक्त रिटर्न प्राप्त करती है। साथ ही, रणनीति के जोखिमों को लगातार अनुकूलित करती है ताकि यह विभिन्न बाजारों में स्थिर रूप से चल सके।
/*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")