यह रणनीति तीन मुख्य संकेतकों पर आधारित हैः प्रवृत्ति सूचक, केल्टनर चैनल और डीएम सूचक।
ट्रेंड इंडिकेटर में एसएमए और ईएमए शामिल हैं। केल्टनर चैनल का उपयोग मोमबत्तियों के खुले और बंद मूल्य को निर्धारित करने के लिए किया जाता है। डीएम इंडिकेटर लंबे और छोटे की दिशा का न्याय करने के लिए है।
प्रवेश सिग्नल तब ट्रिगर किया जाता है जबः
इस रणनीति में दो ले लाभ स्तर और एक स्टॉप हानि स्तर है। लाभ अनुकूलन के लिए ट्रेलिंग स्टॉप का उपयोग किया जा सकता है।
एसएमए और ईएमए क्रॉसओवर का उपयोग प्रवृत्ति की दिशा निर्धारित करने के लिए किया जाता है। एसएमए (46) पर ईएमए (46) क्रॉसिंग एक ऊपर की प्रवृत्ति को इंगित करती है।
चैनल में तीन लाइनें हैंः मध्य, ऊपरी और निचली। मध्य रेखा 81. की लंबाई के साथ बंद मूल्य की एसएमए है। ऊपरी और निचले बैंड को मध्य रेखा के ऊपर और नीचे सच्ची सीमा के गुणक पर रखा गया है। यहां हम सच्ची सीमा के 2.5 गुना का उपयोग करते हैं।
केल्टनर चैनल समर्थन और प्रतिरोध स्तर दिखाता है। चैनल के संबंध में मूल्य आंदोलनों का विश्लेषण किया जाता है।
डीएम संकेतक में एडीएक्स, +डीआई और -डीआई शामिल हैं। +डीआई अपट्रेंड की ताकत को मापता है जबकि -डीआई डाउनट्रेंड की ताकत को मापता है। एडीएक्स ट्रेंड की ताकत दिखाता है।
यहां ADX (10), DI (19) का प्रयोग किया जाता है। जब +DI बेंचमार्क (डिफ़ॉल्ट 27) से ऊपर जाता है, तो यह एक मजबूत अपट्रेंड और लंबी प्रविष्टि के लिए अच्छा संकेत देता है।
यह रणनीति प्रवृत्ति, चैनल और गति संकेतकों को प्रभावी ढंग से मूल्य क्रियाओं और लंबी/छोटी दिशा को निर्धारित करने के लिए जोड़ती है। इसके फायदे हैंः
ट्रेंड पहचान अपेक्षाकृत सटीक है ताकि काउंटर ट्रेंड ट्रेडों से बचा जा सके।
केल्टनर चैनल स्पष्ट समर्थन और प्रतिरोध स्तर दिखाता है।
दिशा सुनिश्चित करने के लिए डीएम संकेतक लंबी/छोटी गति को मापता है।
सख्त प्रवेश नियम झूठी पलायन को फ़िल्टर करने में मदद करते हैं।
लाभ लेने और हानि रोकने के बिंदु लाभ प्राप्त करने की अनुमति देते हैं।
कुछ जोखिमों पर भी विचार किया जाना चाहिए:
जब ईएमए एसएमए से नीचे जाता है तो प्रवृत्ति उलट सकती है, इसलिए समय पर बाहर निकलें।
चैनल मजबूत रुझानों में विफल हो सकता है, सख्त समर्थन/प्रतिरोध नहीं।
डीएम झूठे संकेत उत्पन्न कर सकता है, मूल्य कार्रवाई की जांच करता है।
झूठी ब्रेकआउट प्रवेश को ट्रिगर कर सकती है लेकिन जल्दी से फॉलबैक करें, उचित स्टॉप लॉस का उपयोग करें।
लाभ लेने और स्टॉप लॉस को बाजार की बदलती परिस्थितियों के अनुकूल करने के लिए निरंतर अनुकूलन की आवश्यकता होती है।
रणनीति को और अधिक अनुकूलित करने के कुछ तरीके:
मापदंडों को समायोजित करें और प्रवृत्ति पहचान के विभिन्न तरीकों का परीक्षण करें।
सही सीमा के अनुरूप चैनल मापदंडों का अनुकूलन करें।
विभिन्न डीएम मापदंडों का परीक्षण करें और इष्टतम संयोजन खोजें।
वॉल्यूम जैसे अधिक प्रविष्टि फ़िल्टर जोड़ें.
अधिक लाभ प्राप्त करने के लिए स्टॉप लॉस को ट्रेल करने का प्रयास करें।
सर्वोत्तम पैरामीटर सेट खोजने के लिए विभिन्न उत्पादों के लिए अलग से परीक्षण करें।
रणनीति में प्रवृत्ति, समर्थन/प्रतिरोध और गति निर्धारित करने के लिए कई संकेतकों को एकीकृत किया गया है, जो प्रवृत्तियों को प्रभावी ढंग से पकड़ने और जोखिमों को नियंत्रित करने की अनुमति देता है। लेकिन जोखिमों को ध्यान में रखने की आवश्यकता है और बाजार में बदलाव के रूप में मापदंडों को अनुकूलित करने की आवश्यकता है। कुल मिलाकर, यह एक रणनीति है जिसमें मजबूत व्यावहारिकता है।
/*backtest start: 2022-10-27 00:00:00 end: 2023-11-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Original Idea by: Wunderbit Trading //@version=4 strategy("Keltner Channel ETH/USDT 1H", overlay=true, initial_capital=1000,pyramiding = 0, currency="USD", default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent,commission_value=0.07) /// TREND ribbon_period = input(46, "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(81, step=1, minval=1) mult = input(2.5, step=0.1) // Calculate Keltner Channel ma = sma(source, length) range = useTrueRange ? tr : high - low rangema = sma(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 // adxlen = 10 // input(10, title="ADX Smoothing") dilen = input(19, title="DI Length") keyLevel = 23// input(23, title="key level for ADX") dirmov(len) => up = change(high) down = -change(low) truerange = rma(tr, len) plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange) minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) [adx, plus, minus] [sig, up, down] = adx(dilen, adxlen) benchmark=input(title="DMI Benchmark", defval=27, minval=1,step=1) // plot(sig, color=color.red, title="ADX") // plot(up, style=plot.style_histogram, color=color.green, title="+DI") // plot(down, style=plot.style_histogram, color=color.red, title="-DI") // plot(keyLevel, 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(9999, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriod() => true ///// Component Code Stop ////////////////////////////////////////// //////////////// STRATEGY EXECUTION ////////////////////////// //LONG SET UP // Take Profit / Stop Loss long_tp1_inp = input(4.5, title='Long Take Profit 1 %', step=0.1)/100 long_tp1_qty = input(15, title="Long Take Profit 1 Qty", step=1) long_tp2_inp = input(20, title='Long Take Profit 2%', step=0.1)/100 long_tp2_qty = input(100, 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 CONDITION // LONG entry_long = ((open > lower and open < upper) and close > upper) and up > down and up > benchmark // and volume[0] > volume[1] entry_price_long=valuewhen(entry_long,close,0) SL_long = entry_price_long * (1 - long_sl_inp) exit_long = (close < lower) or low < SL_long // STRATEGY EXECUTION if testPeriod() // LONG if UT strategy.entry(id="Long", long=true, when=entry_long, comment = "INSERT ENTER 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")