यह रणनीति ट्रेंड ट्रैकिंग ट्रेडिंग को प्राप्त करने के लिए चैनलों और गति संकेतक की गणना करके प्रवृत्ति संरचनाओं की पहचान करती है। विशेष रूप से, यह गति संकेतक और संतुलन चैनल संकेतक को जोड़ती है, और दीर्घकालिक रुझानों में हस्तक्षेप करने के लिए दोनों का लाभ उठाती है जबकि संतुलन चैनलों का उपयोग लंबे लाभ क्षेत्रों में लॉक करने के लिए करती है।
रणनीति में मुख्य रूप से निम्नलिखित दो संकेतकों का उपयोग किया जाता हैः
गति संकेतक (डीएमआई): बाजार में लंबी और छोटी प्रवृत्ति का आकलन करता है और जब सूचकांक निर्धारित सीमा से अधिक होता है तो ट्रेडिंग संकेत उत्पन्न करता है।
इक्विलिब्रिटी चैनल (केल्टनर चैनल): ट्रेंड क्षेत्र का निर्धारण करता है। जब कीमत ऊपरी रेल के माध्यम से टूटती है, तो यह खरीदने का समय होता है, और जब कीमत मध्य रेल से नीचे गिरती है, तो यह स्थिति को बंद करने का संकेत होता है।
विशिष्ट ट्रेडिंग तर्क हैः जब +डीआई गति संकेतक सेट सीमा (डिफ़ॉल्ट 32) से अधिक होता है, तो यह निर्धारित किया जाता है कि एक तेजी की प्रवृत्ति बन गई है। इस समय, यदि कीमत संतुलन चैनल की ऊपरी रेल के माध्यम से टूट जाती है, तो एक खरीद संकेत उत्पन्न होता है; उसके बाद, संतुलन चैनल का उपयोग किया जाता है। मध्य रेल का उपयोग स्टॉप लॉस को ट्रैक करने और लाभ संरक्षण प्राप्त करने के लिए स्टॉप लॉस लाइन के रूप में किया जाता है।
यह रणनीति दो संकेतकों के लाभों को जोड़ती है, प्रवृत्ति की दिशा निर्धारित करने के लिए गति संकेतकों का उपयोग करती है, और प्रवेश समय और स्टॉप लॉस क्षेत्रों को निर्धारित करने के लिए संतुलन चैनलों का उपयोग करती है। डबल संकेतक संयोजन रणनीति को एक प्रवृत्ति की खोज में जल्दी कुशलता से प्रवेश करने की अनुमति देता है, जबकि लाभ और स्टॉप में लॉक करने के लिए चैनल संकेतकों का उपयोग करता है।
यह रणनीति बाजार के रुझानों के प्रारंभिक चरण को निर्धारित करने के लिए गति संकेतकों का उपयोग करती है, जो सरल चलती औसत जैसे पिछड़े संकेतकों की तुलना में अधिक कुशल है।
विशिष्ट व्यापार सीमा निर्धारित करने के लिए संतुलन चैनल का उपयोग करके लाभ क्षेत्र को प्रभावी ढंग से लॉक किया जा सकता है।
संकेतक मापदंड और व्यापार नियम कठोर और उचित हैं, और बैकटेस्ट डेटा अच्छा प्रदर्शन करता है और वास्तविक मुकाबला प्रभाव की पुष्टि करता है।
रणनीति अपेक्षाकृत सरल और स्पष्ट है, इसे समझना और लागू करना आसान है, और मात्रात्मक व्यापार के शुरुआती लोगों के लिए सीखने के लिए उपयुक्त है।
रणनीति का जोखिम नियंत्रित किया जा सकता है, और यह एकल हानि को प्रभावी ढंग से नियंत्रित करने के लिए मध्य रेखा के साथ गतिशील स्टॉप लॉस को अपनाता है।
यह रणनीति केवल ट्रेंडिंग बाजारों के लिए उपयुक्त है और समेकन और उतार-चढ़ाव वाले बाजारों के लिए उपयुक्त नहीं है। यदि QtCore चैनल बढ़ता है और मध्य रेल स्टॉप नुकसान बहुत ढीला है, तो यह नुकसान को नियंत्रित नहीं कर सकता है।
डीएमआई संकेतक में एक निश्चित विलंब होता है और यह प्रवृत्ति की पुष्टि का निर्धारण नहीं कर सकता है। यह प्रवृत्ति में पहले हस्तक्षेप करके नुकसान का कारण बन सकता है।
फिक्स्ड प्रतिशत स्टॉप लॉस पद्धति में जोखिम है। यह एक तेज उतार-चढ़ाव के बाद रुझानों में फिर से हस्तक्षेप करने में असमर्थ है, इस प्रकार बाद के रुझानों को याद करता है।
पर्याप्त बैकटेस्ट डेटा हैं, लेकिन वास्तविक व्यापार में पैरामीटर स्थिरता की पुष्टि करने के लिए अभी भी दीर्घकालिक संचालन की आवश्यकता है।
अलग-अलग स्टॉप लॉस विधियों का परीक्षण किया जा सकता है, जैसे कि एटीआर स्टॉप लॉस, मूविंग स्टॉप लॉस और इसी तरह फिक्स्ड प्रतिशत स्टॉप लॉस की जगह लेने के लिए।
प्रवृत्ति की पुष्टि के बाद प्रवेश सुनिश्चित करने के लिए वॉल्यूम एम्पलीफिकेशन जैसे द्वितीयक पुष्टिकरण संकेतक जोड़े जा सकते हैं।
इष्टतम पैरामीटर संयोजन खोजने के लिए विभिन्न पैरामीटर संयोजनों का परीक्षण किया जा सकता है।
मापदंडों की मजबूती का सत्यापन चरणबद्ध अनुकूलन और आगे की जांच के माध्यम से किया जा सकता है।
यह रणनीति डबल इंडिकेटर जजमेंट का उपयोग करके ट्रेंडिंग बाजारों की कुशल कैप्चर प्राप्त करती है। यह रणनीति स्पष्ट तर्क और अच्छे बैकटेस्ट प्रदर्शन के साथ अपेक्षाकृत सरल और सहज है। यह मात्रात्मक ट्रेडिंग के लिए प्रवेश रणनीतियों में से एक के रूप में कार्य कर सकती है। लेकिन वास्तविक ट्रेडिंग डेटा का पर्याप्त सत्यापन और पैरामीटर अनुकूलन अभी भी वास्तविक ट्रेडिंग नुकसान को कम करने के लिए आवश्यक है। यह भविष्य के काम का ध्यान केंद्रित करेगा।
/*backtest start: 2023-11-11 00:00:00 end: 2023-12-11 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Original Idea by: @Wunderbit //@version=4 strategy("Keltner Channel [LINKUSDT] 1H", overlay=true, initial_capital=3000,pyramiding = 0, currency="USD", default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent,commission_value=0.1) /// TREND trend_cond = input(true, title="Enable Ribbon Filter") ribbon_period = input(30, "Ribbon Period", step=1) leadLine1 = ema(close, ribbon_period) leadLine2 = sma(close, ribbon_period) // p3 = plot(leadLine1, color= #53b987, title="EMA", transp = 50, linewidth = 1) // p4 = plot(leadLine2, color= #eb4d5c, title="SMA", transp = 50, linewidth = 1) // fill(p3, p4, transp = 60, color = leadLine1 > leadLine2 ? #53b987 : #eb4d5c) //Upward Trend UT=leadLine2 < leadLine1 DT=leadLine2 > leadLine1 ///////////////////////////////////////INDICATORS // KELTNER // source = close useTrueRange = input(true) length = input(80, "KELTNER Period", step=1, minval=1) mult = input(3.0,"KELTNER Multiple", step=0.1) // Calculate Keltner Channel ma = ema(source, length) range = useTrueRange ? tr : high - low rangema = ema(range, length) upper = ma + rangema * mult lower = ma - rangema * mult plot(ma, title="Middle", color=color.orange) p1=plot(upper, title="Upper", color=color.orange) p2=plot(lower, title="Lower", color=color.orange) fill(p1,p2) // DMI INDICATOR // lensig = input(14, title="ADX Smoothing", minval=1, maxval=50) len = input(14, minval=1, title="DI Length") up = change(high) down = -change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) trur = rma(tr, len) plus = fixnan(100 * rma(plusDM, len) / trur) minus = fixnan(100 * rma(minusDM, len) / trur) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), lensig) trig_level=input(title="+DI Trigger Level", defval=32, minval=1,step=1) //trig_level_adx=input(title="ADX Trigger Level", defval=30, minval=1,step=1) //plot(adx, color=#FF006E, title="ADX") //plot(plus, color=#0094FF, title="+DI") //plot(minus, color=#FF6A00, title="-DI") // plot(trig_level, color=color.white, title="Key Level") /////////////////////////////////////////////////////////// ////////////////////////////////////////////////////Component Code Start testStartYear = input(2019, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2030, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false ///// Component Code Stop ////////////////////////////////////////// //////////////// STRATEGY EXECUTION ////////////////////////// // STRATEGY CONDITION // LONG long = ((open > lower and open < upper) and close > upper) and plus > minus and plus > trig_level and volume[0] > volume[1] entry_long = trend_cond ? long and UT : long exit_long = (close < ma) //or low < SL_long //LONG SET UP // Take Profit / Stop Loss entry_price_long=valuewhen(entry_long,close,0) //SL_long = entry_price_long * (1 - long_sl_inp) long_tp1_inp = input(8, title='Long Take Profit 1 Target %', step=0.1)/100 long_tp1_qty = input(20, title="Long Take Profit 1 Qty %", step=1) long_tp2_inp = input(16, title='Long Take Profit 2 Target %', step=0.1)/100 long_tp2_qty = input(30, title="Long Take Profit 2 Qty %", step=1) long_take_level_1 = strategy.position_avg_price * (1 + long_tp1_inp) long_take_level_2 = strategy.position_avg_price * (1 + long_tp2_inp) //long_sl_inp = input(4, title='Long Stop Loss %', step=0.1)/100 //long_stop_level = strategy.position_avg_price * (1 - long_sl_inp) // STRATEGY EXECUTION if testPeriod() // LONG strategy.entry(id="Long", long=true, when=entry_long, comment = "INSERT ENTRY LONG COMMAND") strategy.exit("TP1","Long", qty_percent=long_tp1_qty, limit=long_take_level_1) // PLACE TAKE PROFIT IN WBT BOT SETTINGS strategy.exit("TP2","Long", qty_percent=long_tp2_qty, limit=long_take_level_2) // PLACE TAKE PROFIT IN WBT BOT SETTINGS strategy.close(id="Long", when=exit_long, comment= "INSERT EXIT LONG COMMAND") //PLOT FIXED SLTP LINE // LONG POSITION plot(strategy.position_size > 0 ? long_take_level_1 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="1st Long Take Profit") plot(strategy.position_size > 0 ? long_take_level_2 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="2nd Long Take Profit") //plot(strategy.position_size > 0 ? long_stop_level : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Stop Loss")