यह रणनीति केल्टनर चैनल संकेतक के आधार पर बनाई गई है ताकि जब कीमत चैनल के ऊपरी और निचले बैंडों के माध्यम से टूटती है तो ट्रेडिंग सिग्नल उत्पन्न हो सके। यह रणनीति केवल लंबी जाती है, यदि कोई बिक्री संकेत दिखाई देता है, तो यह स्थिति को तटस्थ तक सपाट कर देगा।
इस रणनीति में केल्टनर चैनल के निर्माण के लिए एसएमए और एटीआर का उपयोग किया गया है। ऊपरी और निचले बैंड की गणना इस प्रकार की जाती हैः
ऊपरी बैंड = 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)