এই কৌশলটি দ্বিগুণ চলমান গড়ের ক্রসওভারকে ট্রেডিং সিগন্যাল হিসাবে ব্যবহার করে, ট্রেডিংয়ের পরে ট্রেন্ডের জন্য এটিআর স্টপগুলির সাথে মিলিত হয়। মূল ধারণাটি হ'ল দ্রুত চলমান গড়টি ধীর চলমান গড়ের উপরে অতিক্রম করার সময় দীর্ঘ এবং নীচে অতিক্রম করার সময় শর্ট, যখন এটিআর ব্যবহার করে গতিশীলভাবে ট্রেইলিং স্টপগুলির জন্য স্টপ লস স্তর সেট করা হয়।
কৌশলটি মূলত প্রবণতা দিক নির্ধারণের জন্য চলমান গড়ের দুটি সেট ব্যবহার করে। দ্রুত চলমান গড়ের দৈর্ঘ্য 25 দিন এবং ধীর চলমান গড়ের দৈর্ঘ্য 100 দিন। যখন দ্রুত এমএ ধীর এমএ এর উপরে অতিক্রম করে তখন একটি ক্রয় সংকেত উত্পন্ন হয় এবং নীচে অতিক্রম করার সময় একটি বিক্রয় সংকেত উত্পন্ন হয়।
কিছু মিথ্যা সংকেত ফিল্টার করার জন্য, কৌশলটি ক্রসকাউন্ট নামে একটি ক্রসওভার কাউন্টার যুক্ত করে। সংকেতগুলি কেবল তখনই ট্রিগার করা হয় যখন লুকব্যাক সময়কালে দ্রুত এমএ (ডিফল্ট 25 দিন) এর জন্য ক্রসগুলির সংখ্যা maxNoCross (ডিফল্ট 10) এর চেয়ে কম হয়।
এছাড়াও, কৌশলটির একটি নিশ্চিতকরণ প্রক্রিয়া রয়েছে, যেখানে প্রাথমিক সংকেত দেওয়ার পরে যদি মূল্য দুটি চলমান গড়ের মধ্যে পুনরায় প্রবেশ করে তবে সংকেতটিও নিশ্চিত হয়।
পজিশন প্রবেশ করার পরে, কৌশলটি স্টপ লস স্তর সেট করতে এটিআর ব্যবহার করে। এটিআর একটি নির্দিষ্ট সময়ের মধ্যে মূল্যের ওঠানামা পরিসীমা পরিমাপ করে এবং এখানে এর 14x স্টপ দূরত্ব হিসাবে ব্যবহৃত হয়। স্টপ স্তর মূল্য আন্দোলনের অনুযায়ী ভাসমান।
এই কৌশলটির নিম্নলিখিত সুবিধা রয়েছে:
ফিল্টারিং সহ দ্বৈত এমএ ক্রস ব্যবহার করে, এটি মিথ্যা সংকেত এড়ানোর সময় শক্তিশালী প্রবণতা আন্দোলন কার্যকরভাবে ক্যাপচার করতে পারে।
নিশ্চিতকরণ প্রক্রিয়াটি ভুয়া ব্রেকআউট দ্বারা জালিয়াতি করা থেকে বিরত রাখে।
ফ্লোটিং এটিআর স্টপ লস লাভকে সর্বাধিক করতে সাহায্য করে এবং ড্রাউনডাউনকে সীমাবদ্ধ করে।
এটিতে কয়েকটি অপ্টিমাইজযোগ্য পরামিতি রয়েছে এবং এটি বাস্তবায়ন করা সহজ।
ক্রিপ্টো এবং ঐতিহ্যবাহী সম্পদ সহ সমস্ত বাজারে প্রযোজ্য।
এটি স্থিতিশীলতার জন্য একাধিক প্রযুক্তিগত সূচককে একত্রিত করে।
কৌশলটির প্রধান ঝুঁকিগুলির মধ্যে রয়েছেঃ
পরিসীমা সীমাবদ্ধ সময়ের মধ্যে প্রায়শই এমএ ক্রসিং একাধিক ক্ষতি হতে পারে।
এটিআর পরামিতিগুলির ভুল সেটিং এর ফলে স্টপগুলি খুব প্রশস্ত বা খুব টাইট হতে পারে।
বড় ফাঁক সরাসরি স্টপ ট্রিগার করতে পারে।
বিপুল অস্থিরতা সৃষ্টি করে এমন বড় সংবাদ ঘটনাও পজিশন বন্ধ করে দিতে পারে।
অযথা এমএ পরামিতিগুলি অনুপস্থিত প্রবণতা বা খুব বেশি মিথ্যা সংকেত হতে পারে।
সাম্প্রতিক মূল্যের ক্রিয়াকলাপ এটিআর স্টপগুলিকে পুরানো করে তুলতে পারে।
কৌশলটি নিম্নলিখিত দিকগুলিতে আরও অনুকূলিত করা যেতে পারেঃ
বিভিন্ন সময়কাল এবং ওজনযুক্ত গড়ের পরীক্ষা করে আরও ভাল সমন্বয় খুঁজে পেতে এমএ পরামিতিগুলি অনুকূল করুন।
আরও ভাল স্টপ দূরত্ব খুঁজে পেতে বিভিন্ন এটিআর সময় পরীক্ষা করুন।
অতিরিক্ত ফিল্টার যোগ করুন যেমন ভলিউম স্পাইক, ভোল্টেবিলিটি সূচক সিগন্যালের গুণমান উন্নত করতে।
অস্থির বাজারে হুইপস এড়াতে ট্রেন্ড মেট্রিক অন্তর্ভুক্ত করুন।
ব্যাকটেস্টিং এর মাধ্যমে স্বয়ংক্রিয়ভাবে প্যারামিটার অপ্টিমাইজ করার জন্য মেশিন লার্নিং অ্যালগরিদম যোগ করুন।
স্বল্পমেয়াদী গোলমাল এড়ানোর জন্য উচ্চতর সময়সীমার উপর আরও নিশ্চিতকরণ সন্ধান করুন।
লাভজনক পজিশনের বাইরে স্কেল করার জন্য ধাপে ধাপে মুনাফা গ্রহণের নিয়ম বাস্তবায়ন করুন।
এই কৌশলটি শক্তিশালী প্রবণতা অনুসরণের জন্য দ্বৈত এমএ ক্রস, প্রবণতা ফিল্টারিং, নিশ্চিতকরণ এবং গতিশীল এটিআর স্টপকে একত্রিত করে। অপ্টিমাইজেশন এবং ঝুঁকি নিয়ন্ত্রণে উন্নতির সুযোগ থাকলেও, ট্রেডিং লজিকটি সহজ এবং সহজেই প্রতিলিপি করা যায়, এটিকে একটি স্থিতিশীল প্রবণতা ট্রেডিং সিস্টেম করে তোলে।
/*backtest start: 2023-10-02 00:00:00 end: 2023-11-01 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("QuantCat Intraday Strategy (15M)", overlay=true) //MA's for basic signals, can experiment with these values fastEMA = sma(close, 25) slowEMA = sma(close, 100) //Parameters for validation of position lookback_value = 25 maxNoCross=10 //value used for maximum number of crosses on a certain MA to mitigate noise and maximise value from trending markets //Amount of crosses on MA to filter out noise ema25_crossover = (cross(close, fastEMA)) == true ? 1 : 0 ema25_crossover_sum = sum(ema25_crossover, lookback_value) ///potentially change lookback value to alter results crossCount = (ema25_crossover_sum <= maxNoCross) //Entries long agrLong = ((crossover(fastEMA, slowEMA)) and (crossCount == true)) ? true : false consLong = ((close < fastEMA) and (close > slowEMA) and (fastEMA > slowEMA) and (crossCount == true)) ? true : false //Entries short agrShort = ((crossunder(fastEMA, slowEMA)) and (crossCount == true)) ? true : false consShort = ((close > fastEMA) and (close < slowEMA) and (fastEMA < slowEMA) and (crossCount == true)) ? true : false //ATR atrLkb = input(14, minval=1, title='ATR Stop Period') atrRes = input("15", title='ATR Resolution') atr = request.security(syminfo.tickerid, atrRes, atr(atrLkb)) //Strategy longCondition = ((agrLong or consLong) == true) if (longCondition) strategy.entry("Long", strategy.long) shortCondition = ((agrShort or consShort) == true) if (shortCondition) strategy.entry("Short", strategy.short) //Stop multiplier stopMult = 4 //horizontal stoplosses longStop = na longStop := shortCondition ? na : longCondition and strategy.position_size <=0 ? close - (atr * stopMult) : longStop[1] shortStop = na shortStop := longCondition ? na : shortCondition and strategy.position_size >=0 ? close + (atr * stopMult) : shortStop[1] //Strategy exit functions strategy.exit("Long ATR Stop", "Long", stop=longStop) strategy.exit("Short ATR Stop", "Short", stop=shortStop) //Plots redgreen = (fastEMA > slowEMA) ? green : red p1 = plot(fastEMA, title="Fast EMA", color=redgreen, linewidth=2) p2 = plot(slowEMA, title="Slow EMA", color=redgreen, linewidth=2) fill(p1, p2, color=redgreen) s1 = plot(longStop, style=linebr, color=red, linewidth=2, title='Long ATR Stop') s2 = plot(shortStop, style=linebr, color=red, linewidth=2, title='Short ATR Stop') fill(p2, s1, color=red, transp=95) fill(p2, s2, color=red, transp=95)