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