এই কৌশলটি কেল্টনার চ্যানেল সূচকের উপর ভিত্তি করে ডিজাইন করা হয়েছে যখন দাম চ্যানেলের উপরের এবং নীচের ব্যান্ডগুলি ভেঙে দেয় তখন ট্রেডিং সংকেত তৈরি করতে। কৌশলটি কেবল দীর্ঘ হয়, যদি কোনও বিক্রয় সংকেত উপস্থিত হয় তবে এটি অবস্থানকে নিরপেক্ষ করে তুলবে।
কৌশলটি কেল্টনার চ্যানেল তৈরি করতে এসএমএ এবং এটিআর ব্যবহার করে। উপরের এবং নীচের ব্যান্ডগুলি গণনা করা হয়ঃ
উপরের ব্যান্ড = এসএমএ + এটিআর * মাল্টিপ্লায়ার নিম্ন ব্যাণ্ড = এসএমএ - এটিআর * মাল্টিপ্লায়ার
যখন দাম উপরের ব্যান্ডের উপরে ভেঙে যায়, তখন একটি ক্রয় সংকেত উৎপন্ন হয়। যখন দাম নিম্ন ব্যান্ডের নীচে ভেঙে যায়, তখন একটি বিক্রয় সংকেত উৎপন্ন হয়।
যেহেতু এটি কেবল দীর্ঘ হয়, যদি একটি বিক্রয় সংকেত প্রদর্শিত হয়, এটি পূর্ববর্তী আদেশ বাতিল করবে এবং অবস্থান সমতল করবে।
এর যুক্তি হচ্ছে:
এই কৌশলটির সুবিধাঃ
এছাড়াও কিছু ঝুঁকি আছেঃ
সমাধান:
কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ
এই কৌশল কার্যকরভাবে সহজ কেল্টনার চ্যানেল নিয়ম সঙ্গে বাজার প্রবণতা ধরা. যুক্তি পরিষ্কার এবং সহজেই বোঝা যায়. যদিও প্রস্থান এবং সংক্ষিপ্ত মডিউল অভাব, এটি প্যারামিটার টিউনিং মত উন্নতির জন্য মহান সম্ভাবনা আছে, স্টপ যোগ, সংক্ষিপ্ত ইত্যাদি যাচ্ছে. সামগ্রিকভাবে একটি মূল্যবান পরিমাণ কৌশল গভীর গবেষণা এবং প্রয়োগ মূল্য।
/*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)