এই কৌশলটি চ্যান্ডে ক্রল স্টপ লস সূচক এবং গড় দিকনির্দেশক আন্দোলন সূচক (এডিএক্স) সূচককে সংযুক্ত করে একটি তুলনামূলকভাবে সহজ প্রবণতা অনুসরণকারী কৌশল বাস্তবায়নের জন্য। চ্যান্ডে ক্রল স্টপ লস দীর্ঘ এবং সংক্ষিপ্ত এন্ট্রি সংকেত তৈরি করতে ব্যবহৃত হয়, যখন এডিএক্স একটি স্পষ্ট প্রবণতা ছাড়াই বাজার পরিস্থিতি ফিল্টার করে যাতে নন-দিকনির্দেশক অস্থিরতা থেকে whipsaws এড়ানো যায় যা বারবার স্টপ লস ট্রিগার করে।
কৌশলটি প্রথমে চ্যান্ডে ক্রল স্টপ লস এর লং স্টপ লং এবং শর্ট স্টপ শর্ট লাইন গণনা করে। দীর্ঘ লাইনটি গত পি সময়ের সর্বোচ্চ দামের ভিত্তিতে গণনা করা হয়। শর্ট লাইনটি গত পি সময়ের সর্বনিম্ন দামের ভিত্তিতে গণনা করা হয়। গত q সময়ের দীর্ঘ এবং সংক্ষিপ্ত লাইনের সর্বোচ্চ পয়েন্টটি বর্তমান দীর্ঘ এবং সংক্ষিপ্ত স্টপ লস লাইন হিসাবে ব্যবহৃত হয়। এটি স্বল্পমেয়াদী মূল্যের ওঠানামা ফিল্টার করে এবং কেবল প্রবণতা বিপরীত পয়েন্টগুলিতে স্টপ লস ট্রিগার করে।
যখন বন্ধের মূল্য শর্ট লাইন স্টপ_শর্টের উপরে অতিক্রম করে, তখন একটি দীর্ঘ সংকেত উৎপন্ন হয়। যখন বন্ধের মূল্য দীর্ঘ লাইন স্টপ_লং এর নীচে অতিক্রম করে, তখন একটি শর্ট সংকেত উৎপন্ন হয়।
এছাড়াও, এডিএক্স সূচকটি প্রবণতার শক্তি বিচার করতে ব্যবহৃত হয়। কেবলমাত্র যখন এডিএক্স প্রান্তিকের চেয়ে বড় হয় তখন স্টপ লস সিগন্যালটি প্রবেশকে ট্রিগার করবে। এটি সংহতকরণে নন-ডাইরেকশনাল উইপসা ফিল্টার করে।
এই কৌশলটি প্রবণতা সূচক এবং স্টপ লস সূচকগুলির সুবিধাগুলি একত্রিত করে। এটি অ-নির্দেশক বাজারে হুইপস এড়ানোর সময় প্রবণতা বিপরীতকরণগুলি সময়মতো ক্যাপচার করতে পারে। চ্যান্ডে ক্রল স্টপ লস পরামিতিগুলির অপ্টিমাইজেশন ফিল্টারিং মসৃণ করতে পারে এবং কেবল প্রবণতা বিপরীতকরণ পয়েন্টগুলিতে স্টপ লস নিশ্চিত করতে পারে। এডিএক্স সূচক কেবল প্রবণতা উল্লেখযোগ্য হলে প্রবেশ নিশ্চিত করে, বাজারের একীকরণের সময় স্টপ লস হুইপস এড়ানো।
ভুল ADX পরামিতি সেটিং ট্রেন্ডের শুরুতে সুযোগ মিস করতে পারে। যদি ADX প্রান্তিক খুব উচ্চ সেট করা হয়, এন্ট্রি সুযোগ ট্রেন্ডের শুরুতে মিস করা যেতে পারে যখন ADX মান এখনও কম।
স্টপ লস পয়েন্টগুলি খুব কাছাকাছি থাকা কৌশল পজিশনের ঘন ঘন খোলার এবং বন্ধের কারণ হতে পারে। এটি ট্রেডিং এবং স্লিপিংয়ের ব্যয় বাড়িয়ে তুলবে। স্টপ লস পয়েন্টগুলিকে প্রবণতার জন্য কিছু স্থান দেওয়ার জন্য যুক্তিসঙ্গতভাবে সেট করা দরকার।
স্টপ লস সিগন্যালগুলি কেবলমাত্র যখন এডিএক্স একটি প্রান্তিক সীমা অতিক্রম করে তখনই ট্রিগার করার বিষয়টি বিবেচনা করুন। এটি এন্ট্রি টাইমিংয়ের নির্ভরযোগ্যতা উন্নত করতে পারে। অন্যান্য প্রবণতা সূচকগুলিও সংযোজক অবস্থার জন্য একত্রিত করা যেতে পারে, যেমন এডিএক্স মানগুলিকে ইএমএর ঢালগুলির সাথে একত্রিত করা।
স্টপ লস লাইনগুলি এটিআর-এর উপর ভিত্তি করে গতিশীলভাবে সামঞ্জস্য করা যায়, যখন অত্যধিক সংবেদনশীলতা এড়ানোর জন্য বাজারের অস্থিরতা বৃদ্ধি পায় তখন বৃহত্তর স্টপগুলিকে অনুমতি দেয়। অথবা ট্রেন্ড শক্তি মূল্যায়ন করতে এবং গতিশীলভাবে স্টপ লস লাইনগুলি সামঞ্জস্য করতে এমএসিডি ব্যবহার করা যেতে পারে।
এই কৌশলটি চ্যান্ডে ক্রল স্টপ লস এবং এডিএক্স সূচকগুলির শক্তিগুলিকে সংহত করে একটি তুলনামূলকভাবে সহজ এবং ব্যবহারিক প্রবণতা অনুসরণকারী কৌশল তৈরি করে। প্যারামিটার অপ্টিমাইজেশনের মাধ্যমে কৌশলটির স্থিতিশীলতা এবং লাভজনকতা আরও উন্নত করা যেতে পারে। তবে অত্যধিক স্টপ লস সংবেদনশীলতা এবং অপর্যাপ্ত এডিএক্স ফিল্টারিংয়ের ঝুঁকিগুলি সম্পর্কে সতর্ক থাকতে হবে।
/*backtest start: 2022-10-30 00:00:00 end: 2023-06-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title = "Chande Kroll Stop", overlay=true) p = input.int(10, minval=1) x = input.int(1, minval=1) q = input.int(9, minval=1) first_high_stop = ta.highest(high, p) - x * ta.atr(p) first_low_stop = ta.lowest(low, p) + x * ta.atr(p) stop_short = ta.highest(first_high_stop, q) stop_long = ta.lowest(first_low_stop, q) plot(stop_long, color=color.blue) plot(stop_short, color=color.orange) adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") ADX_sig = input.int(20, title="minimum ADX threshold for signal") dirmov(len) => up = ta.change(high) down = -ta.change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = ta.rma(ta.tr, len) plus = fixnan(100 * ta.rma(plusDM, len) / truerange) minus = fixnan(100 * ta.rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) sig = adx(dilen, adxlen) if ta.crossunder(close, stop_long) and sig>ADX_sig strategy.entry("long", strategy.long) if ta.crossover(close, stop_short) and sig>ADX_sig strategy.entry("short", strategy.short)