এই কৌশলটি HMA এবং CCI কে একত্রিত করে ট্রেডিংয়ের প্রবণতা সনাক্ত করতে এবং ট্রেড করার জন্য। বিশেষত, যখন HMA ঊর্ধ্বমুখী হয় এবং CCI নীচের ব্যান্ডের উপরে অতিক্রম করে তখন এটি দীর্ঘ হয় এবং যখন HMA ঊর্ধ্বমুখী হয় এবং CCI উপরের ব্যান্ডের নীচে অতিক্রম করে তখন এটি সংক্ষিপ্ত হয়। যখন HMA বিপরীত দিকে ফিরে আসে বা CCI আবার থ্রেশহোল্ড পরিসরে প্রবেশ করে তখন প্রস্থান ঘটে।
এই কৌশলটির সুবিধা হ'ল ট্রেন্ডের দিক নির্ধারণের জন্য এইচএমএ এবং ট্রেন্ডের সূচনা নিশ্চিত করতে সিসিআই ব্যবহার করা, কার্যকরভাবে হুইপস এবং পুলব্যাক ত্রুটিগুলি হ্রাস করা। তবে, এইচএমএ এবং সিসিআই উভয়েরই পিছনে থাকা সমস্যা রয়েছে, সম্ভাব্য অনুকূল প্রবেশের পয়েন্টগুলি অনুপস্থিত রয়েছে। এছাড়াও, জটিল বাজারের পরিস্থিতিতে সিসিআইয়ের সীমিত ক্ষমতা রয়েছে।
সংক্ষেপে, এইচএমএ এবং সিসিআই কম্বো ট্রেন্ড অনুসরণকারী কৌশল শক্তিশালী ট্রেন্ডিং পর্যায়ে শালীন ফলাফল দিতে পারে। তবে লাইভ ট্রেডিংয়ে, এলআইকিউআর ইভেন্টগুলি থেকে ক্ষতি কমাতে স্টপ লসগুলিতে এখনও মনোযোগ প্রয়োজন। কেবলমাত্র সঠিক পরামিতি অপ্টিমাইজেশনের সাথে এই কৌশলটি দীর্ঘমেয়াদে সফলভাবে প্রয়োগ করা যেতে পারে।
/*backtest start: 2023-08-11 00:00:00 end: 2023-09-10 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("HMA+CCI strategy", overlay=true) src = input(close) hmaLen = input(21) cciLen = input(10) cciLower = input(-50) cciUpper = input(50) cciLowerExit = input(-100) cciUpperExit = input(100) hmaExit = input(false) cciExit = input(true) //rciLower = input(-60) //rciUpper = input(60) // Backtest fromyear = input(2017, defval = 2018, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(21, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") leverage = input(100) term = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)) //itvs = input(9, "short interval") //itvm = input(36, "middle interval") //itvl = input(52, "long interval") //src = input(close, "source") //upperband=input(title="High line[%]",defval=80,type=integer) //lowerband=input(title="Low line[%]",defval=-80,type=integer) ord(seq, idx, itv) => p = seq[idx] o = 1 for i = 0 to itv - 1 if p < seq[i] o := o + 1 o d(itv) => sum = 0.0 for i = 0 to itv - 1 sum := sum + pow((i + 1) - ord(src, i, itv), 2) sum rci(itv) => (1.0 - 6.0 * d(itv) / (itv * (itv * itv - 1.0))) * 100.0 hullma = wma(2*wma(src, hmaLen/2)-wma(src, hmaLen), round(sqrt(hmaLen))) cci = cci(close, cciLen) plot(hullma, color=hullma[1]>hullma?red:green, linewidth=4) longCondition = hullma[1] < hullma and crossover(cci, cciLower) //rci < -60 // crossover(cci, cciLower) shortCondition = hullma[1] > hullma and crossunder(cci, cciUpper) //rci > 60 exitLong1 = hmaExit ? hullma[1] > hullma : false exitLong2 = cciExit ? cci > cciUpperExit : false exitShort1 = hmaExit ? hullma[1] < hullma : false exitShort2 = cciExit ? cci < cciLowerExit : false if (longCondition and term) strategy.entry("Long", strategy.long ) if (shortCondition and term) strategy.entry("Short", strategy.short) if strategy.position_size > 0 and term if (exitLong1 or exitLong2) strategy.close_all() if strategy.position_size < 0 and term if (exitShort1 or exitShort2) strategy.close_all()