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