এই কৌশলটি তিনটি প্রধান সূচকের উপর ভিত্তি করেঃ প্রবণতা সূচক, কেল্টনার চ্যানেল এবং ডিএম সূচক।
প্রবণতা সূচকটি এসএমএ এবং ইএমএ নিয়ে গঠিত। কেল্টনার চ্যানেলটি মোমবাতিগুলির খোলা এবং বন্ধের মূল্য নির্ধারণ করতে ব্যবহৃত হয়। ডিএম সূচকটি দীর্ঘ এবং স্বল্পের দিক বিচার করার জন্য।
এন্ট্রি সিগন্যাল তখনই সক্রিয় হয় যখনঃ
এই কৌশলটিতে দুটি লাভের স্তর এবং একটি স্টপ লস স্তর রয়েছে। লাভের অনুকূলকরণের জন্য ট্রেইলিং স্টপ ব্যবহার করা যেতে পারে।
এসএমএ এবং ইএমএ ক্রসওভারগুলি প্রবণতা দিক নির্ধারণের জন্য ব্যবহৃত হয়। এসএমএ (46) এর উপরে ইএমএ (46) ক্রসিং একটি উত্থান প্রবণতা নির্দেশ করে।
চ্যানেলটির তিনটি লাইন রয়েছেঃ মাঝারি, উপরের এবং নীচের। মাঝারি লাইনটি 81-এর দৈর্ঘ্যের সাথে বন্ধ মূল্যের এসএমএ। উপরের এবং নীচের ব্যান্ডগুলি মাঝারি লাইনের উপরে এবং নীচে সত্য পরিসরের বহুগুণে স্থাপন করা হয়। এখানে আমরা সত্য পরিসরের 2.5 গুণ ব্যবহার করি।
কেল্টনার চ্যানেল সমর্থন এবং প্রতিরোধের মাত্রা দেখায়। চ্যানেলের সাথে সম্পর্কিত মূল্য আন্দোলন বিশ্লেষণ করা হয়।
ডিএম সূচক ADX, +DI এবং -DI ধারণ করে। +DI আপট্রেন্ড শক্তি পরিমাপ করে এবং -DI ডাউনট্রেন্ড শক্তি পরিমাপ করে। ADX প্রবণতা শক্তি দেখায়।
এখানে ADX (10), DI (19) ব্যবহার করা হয়। যখন +DI বেঞ্চমার্ক (ডিফল্ট ২৭) এর উপরে অতিক্রম করে, তখন এটি শক্তিশালী আপট্রেন্ডের সংকেত দেয় এবং দীর্ঘ প্রবেশের জন্য ভাল।
এই কৌশলটি প্রবণতা, চ্যানেল এবং গতির সূচকগুলিকে একত্রিত করে কার্যকরভাবে মূল্যের ক্রিয়াকলাপ এবং দীর্ঘ / সংক্ষিপ্ত দিক নির্ধারণ করে। সুবিধাগুলি হ'লঃ
ট্রেন্ড সনাক্তকরণ তুলনামূলকভাবে সঠিক, যাতে বিপরীত ট্রেন্ড ট্রেডিং এড়ানো যায়।
কেল্টনার চ্যানেল স্পষ্ট সমর্থন এবং প্রতিরোধের মাত্রা দেখায়।
ডিএম সূচকটি দিকনির্দেশ নিশ্চিত করার জন্য দীর্ঘ / সংক্ষিপ্ত গতিবেগ পরিমাপ করে।
কঠোর প্রবেশের নিয়মগুলো ভুয়া পলাতকদের ফিল্টার করতে সাহায্য করে।
লাভ এবং স্টপ লস পয়েন্টগুলি লাভ ক্যাপচার করার অনুমতি দেয়।
এছাড়াও কিছু ঝুঁকি রয়েছে যা বিবেচনা করা উচিতঃ
যখন ইএমএ এসএমএ এর নিচে চলে যায় তখন প্রবণতা বিপরীত হতে পারে, তাই সময়মতো বেরিয়ে আসুন।
চ্যানেল শক্তিশালী প্রবণতায় ব্যর্থ হতে পারে, কঠোর সমর্থন / প্রতিরোধের নয়।
ডিএম মিথ্যা সংকেত তৈরি করতে পারে, মূল্যের গতি পরীক্ষা করে।
মিথ্যা ব্রেকআউট এন্ট্রি ট্রিগার করতে পারে কিন্তু দ্রুত fallback, যুক্তিসঙ্গত স্টপ লস ব্যবহার করুন.
পরিবর্তনশীল বাজারের অবস্থার সাথে মানিয়ে নিতে লাভ এবং স্টপ লসকে ক্রমাগত অপ্টিমাইজেশনের প্রয়োজন।
কৌশলটি আরও উন্নত করার কিছু উপায়ঃ
পরামিতিগুলি সামঞ্জস্য করুন এবং বিভিন্ন ট্রেন্ড সনাক্তকরণ পদ্ধতি পরীক্ষা করুন।
চ্যানেলের প্যারামিটারগুলোকে সঠিক পরিসরে আনতে হবে।
বিভিন্ন ডিএম পরামিতি পরীক্ষা করুন এবং সর্বোত্তম সমন্বয় খুঁজে বের করুন।
ভলিউমের মত আরো এন্ট্রি ফিল্টার যোগ করুন।
আরও লাভের জন্য স্টপ লস ট্রেইল করার চেষ্টা করুন।
সেরা প্যারামিটার সেট খুঁজে পেতে বিভিন্ন পণ্যের জন্য পৃথকভাবে পরীক্ষা করুন।
কৌশলটি প্রবণতা, সমর্থন / প্রতিরোধ এবং গতি নির্ধারণের জন্য একাধিক সূচককে একীভূত করে, যা প্রবণতা কার্যকরভাবে ধরতে এবং ঝুঁকিগুলি নিয়ন্ত্রণ করতে দেয়। তবে ঝুঁকিগুলি লক্ষ্য করা দরকার এবং বাজারের পরিবর্তনের সাথে সাথে পরামিতিগুলির অপ্টিমাইজেশনের প্রয়োজন। সামগ্রিকভাবে, এটি শক্তিশালী ব্যবহারিকতার সাথে একটি কৌশল।
/*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")