এইচএমএ এবং সিসিআই কম্বো ট্রেন্ড অনুসরণকারী কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-০৯-১১ ১৫ঃ২৩ঃ৩৭
ট্যাগঃ

এই কৌশলটি 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()

আরো