এই কৌশলটি অ্যারন, এমএ, বিবি, উইলিয়ামস, %আর, এডিএক্সের মতো বিভিন্ন সময়ের সাথে একাধিক শক্তিশালী সূচককে একত্রিত করে একটি বহুমাত্রিক শক্তিশালী ওপেন পজিশন সূচক সিস্টেম গঠন করে যা প্রবণতা স্পষ্ট হলে কার্যকরভাবে পজিশন খুলতে পারে।
কৌশলটি মূলত নিম্নলিখিত সূচকগুলির সংমিশ্রণ ব্যবহার করে শক্তিশালী উদ্বোধনী সংকেত তৈরি করেঃ
অ্যারন সূচক: একটি নির্দিষ্ট সময়ের মধ্যে সর্বোচ্চ এবং সর্বনিম্ন মূল্য গণনা করে একটি দোলনকারী সূচক গঠন করে। একাধিক চক্র দৈর্ঘ্যের সাথে অ্যারন সূচকগুলির সংমিশ্রণের মাধ্যমে প্রবণতার দিক বিচার করে।
এমএঃ প্রবণতার বাঁক পয়েন্ট নির্ধারণের জন্য স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী এমএ এর ক্রস গণনা করুন।
বিবি ব্যান্ডঃ যখন মূল্য বিবি ব্যান্ডের উপরের রেলটি ভেঙে যায়, তখন এটি একটি বিক্রয় সংকেত।
ADX: প্রবণতার শক্তি বিচার করে। একটি নির্দিষ্ট অবস্থানের উপরে ADX খোলার সংকেত তৈরি করে।
উপরের সূচকগুলি, বিভিন্ন চক্র দৈর্ঘ্যের পরামিতিগুলির সাথে, একটি বহু-মাত্রিক বিচার ব্যবস্থা গঠন করে যা প্রবণতা স্পষ্ট হলে শক্তিশালী উদ্বোধনী সংকেত তৈরি করতে পারে।
বিশেষ করে, ক্রয়ের শর্তাবলী হলঃ
পাঁচটি ক্রয় শর্তের মধ্যে তিনটি পূরণ হলে একটি শক্তিশালী ক্রয় সংকেত উৎপন্ন হয়।
বিক্রয় শর্তগুলি একই রকম, পাঁচটি বিক্রয় শর্ত রয়েছে। যখন এর মধ্যে তিনটি পূরণ হয়, তখন একটি বিক্রয় সংকেত উত্পন্ন হয়।
সুতরাং এই কৌশলটি বিভিন্ন সূচকের সংমিশ্রণের মাধ্যমে প্রবণতা স্পষ্ট হলে উচ্চ নিশ্চয়তার শক্তিশালী উদ্বোধনী সংকেত তৈরি করতে পারে।
এই কৌশলটির সবচেয়ে বড় সুবিধা হ'ল সূচক সংকেতগুলির বহু-মাত্রিক সংমিশ্রণ, যা একক সূচকের কারণে ভুল সংকেতগুলির সম্ভাবনাকে ব্যাপকভাবে হ্রাস করে, যার ফলে প্রবণতা স্পষ্ট হলে উচ্চমানের উদ্বোধনী সংকেত তৈরি করতে সক্ষম হয়। এটি এই কৌশলটির সবচেয়ে বড় হাইলাইট।
অন্যান্য সুবিধার মধ্যে রয়েছেঃ
বিভিন্ন বাজারের বৈশিষ্ট্য অনুসারে পরামিতিগুলি সামঞ্জস্য করা যেতে পারে
সূচকগুলির প্যারামিটার সেটিংস বৈজ্ঞানিকভাবে যুক্তিসঙ্গত এবং অত্যন্ত নির্ভরযোগ্য
বিচার সঠিকতা উন্নত করার জন্য একাধিক সময় চক্র সমন্বয় উপলব্ধি করা হয়
কোড কাঠামো স্পষ্ট এবং সহজেই বোঝা যায় এবং সেকেন্ডারি উন্নয়ন
এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ
যদিও একাধিক সূচকের সমন্বয় বিচার মানের উন্নতি করতে পারে, এটি কৌশল জটিলতা বৃদ্ধি এবং অত্যধিক অপ্টিমাইজেশান ঝুঁকি প্রসারিত।
প্যারামিটার সেটিংস ১০০% নিখুঁত নয় এবং নির্দিষ্ট বাজারের অবস্থার মধ্যে ব্যর্থ হতে পারে।
সূচক পদ্ধতির সংমিশ্রণে এখনও অপ্টিমাইজেশনের সুযোগ রয়েছে। সংমিশ্রণ যুক্তি আরও পরিমার্জন করা যেতে পারে।
সংশ্লিষ্ট সমাধানঃ
আরও বাজারে মানিয়ে নিতে কিছু পরামিতি সামঞ্জস্য করুন
বিচার মান উন্নত করার জন্য সূচকগুলির সমন্বয় পদ্ধতি অপ্টিমাইজ করুন
স্বল্পমেয়াদী সমন্বয়গুলিকে আরও বেশি করে ধরে রাখার জন্য কিছু সূচক পরামিতিকে যথাযথভাবে সংক্ষিপ্ত করা
এই কৌশলটির মূল অপ্টিমাইজেশান দিকটি হল সূচক সমন্বয় পদ্ধতির অপ্টিমাইজেশন, যার মধ্যে প্রধানত রয়েছেঃ
বিচার সঠিকতা আরও উন্নত করার জন্য একটি সূচক বন গঠনের জন্য আরও বিভিন্ন ধরণের সূচক যুক্ত করুন
ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ-লস কৌশল বাড়ানো
মনোভাবের সূচকগুলি একত্রিত করুন, বাজারের উত্তাপ বিচার করুন এবং গতিশীলভাবে পরামিতিগুলি সামঞ্জস্য করুন
আরও সূচক, স্বয়ংক্রিয়ভাবে প্যারামিটার এবং ইন্টিগ্রেশন স্কিম অপ্টিমাইজ করার মাধ্যমে এই কৌশলটির মূল্যায়নের গুণমান এবং দৃঢ়তার উন্নতির জন্য এখনও অনেক জায়গা রয়েছে।
এই কৌশলটির সবচেয়ে বড় হাইলাইট হ'ল একাধিক সূচকগুলির বৈজ্ঞানিক সংহতকরণ একটি শক্তিশালী উদ্বোধনী সংকেত গঠনের জন্য যা প্রবণতা সুস্পষ্ট হলে উল্লেখযোগ্যভাবে সম্পাদন করে। এই কৌশলটির সংহতকরণ পদ্ধতিতে অপ্টিমাইজেশনের জন্য প্রচুর জায়গা রয়েছে। আরও সূচক এবং প্যারামিটার এবং সংহতকরণ পদ্ধতিগুলির বুদ্ধিমান অপ্টিমাইজেশান প্রবর্তন করে, এই কৌশলটি একটি খুব শক্তিশালী পরিমাণগত ট্রেডিং কৌশল হয়ে উঠতে পারে।
/*backtest start: 2023-12-19 00:00:00 end: 2024-01-18 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="Aroon+Williams+MA2+ADX+Aroon Str.", shorttitle="Aroon+Williams+MA2+ADX+Aroon Str.", overlay=true) //https://cafe.naver.com/watchbot/1945 //<<빙썸 매각 기념>> 바이낸스 이오스 복합지표 //Aroon_1 length_1 = input(264, minval=1, title="Length Aroon_1") upper_1 = 100 * (highestbars(high, length_1+1) + length_1)/length_1 lower_1 = 100 * (lowestbars(low, length_1+1) + length_1)/length_1 midp_1 = 0 oscillator_1 = upper_1 - lower_1 //osc_1 = plot(oscillator_1, color=red) //Aroon_2 length_2 = input(72, minval=1, title="Length Aroon_2") upper_2 = 100 * (highestbars(high, length_2+1) + length_2)/length_2 lower_2 = 100 * (lowestbars(low, length_2+1) + length_2)/length_2 midp_2 = 0 oscillator_2 = upper_2 - lower_2 //osc_2 = plot(oscillator_2, color=red) //Aroon_3 length_3 = input(137, minval=1, title="Length Aroon_3") upper_3 = 100 * (highestbars(high, length_3+1) + length_3)/length_3 lower_3 = 100 * (lowestbars(low, length_3+1) + length_3)/length_3 midp_3 = 0 oscillator_3 = upper_3 - lower_3 //osc_3 = plot(oscillator_3, color=red) //Aroon_4 length_4 = input(62, minval=1, title="Length Aroon_4") upper_4 = 100 * (highestbars(high, length_4+1) + length_4)/length_4 lower_4 = 100 * (lowestbars(low, length_4+1) + length_4)/length_4 midp_4 = 0 oscillator_4 = upper_4 - lower_4 //osc_4 = plot(oscillator_4, color=red) //Ma double short_ma_1 = sma(close, 9) long_ma_1 = sma(close, 21) // plot(short_ma_1, color = red) // plot(long_ma_1, color = green) // plot(cross(short_ma_1, long_ma_1) ? short_ma_1 : na, style = cross, linewidth = 4) short_ma_2 = sma(close, 9) long_ma_2 = sma(close, 21) // plot(short_ma_2, color = red) // plot(long_ma_2, color = green) plot(cross(short_ma_2, long_ma_2) ? short_ma_2 : na, transp= 100, title = "ma cross_2", style = cross, linewidth = 4) //BB length_bb = input(270, minval=1, title="BB length") src_bb = input(close, title="Source") mult_bb = input(2.0, minval=0.001, maxval=50, title="BB mult") basis_bb = sma(src_bb, length_bb) dev_bb = mult_bb * stdev(src_bb, length_bb) upper_bb = basis_bb + dev_bb lower_bb = basis_bb - dev_bb // plot(basis_bb, color=red) // p1 = plot(upper_bb, color=blue) // p2 = plot(lower_bb, color=blue) // fill(p1, p2) //Williams length_wil = input(130, minval=1, title="Length Williams %R") upper_wil = highest(length_wil) lower_wil = lowest(length_wil) out_wil = 100 * (close - upper_wil) / (upper_wil - lower_wil) // plot(out_wil) // band1 = hline(-20) // band0 = hline(-80) // fill(band1, band0) //ADX adxlen = input(14, title="ADX Smoothing") dilen = input(145, title="DI Length") dirmov(len) => up_adx = change(high) down_adx = -change(low) plusDM = na(up_adx) ? na : (up_adx > down_adx and up_adx > 0 ? up_adx : 0) minusDM = na(down_adx) ? na : (down_adx > up_adx and down_adx > 0 ? down_adx : 0) truerange = rma(tr, len) plus_adx = fixnan(100 * rma(plusDM, len) / truerange) minus_adx = fixnan(100 * rma(minusDM, len) / truerange) [plus_adx, minus_adx] adx(dilen, adxlen) => [plus_adx, minus_adx] = dirmov(dilen) sum_adx = plus_adx + minus_adx adx = 100 * rma(abs(plus_adx - minus_adx) / (sum_adx == 0 ? 1 : sum_adx), adxlen) sig_adx = adx(dilen, adxlen) // plot(sig_adx, color=red, title="ADX") //ADX 2 adxlen_2 = input(14, title="ADX Smoothing") dilen_2 = input(150, title="DI Length") dirmov_2(len) => up_adx_2 = change(high) down_adx_2 = -change(low) plusDM_2 = na(up_adx_2) ? na : (up_adx_2 > down_adx_2 and up_adx_2 > 0 ? up_adx_2 : 0) minusDM_2 = na(down_adx_2) ? na : (down_adx_2 > up_adx_2 and down_adx_2 > 0 ? down_adx_2 : 0) truerange_2 = rma(tr, len) plus_adx_2 = fixnan(100 * rma(plusDM_2, len) / truerange_2) minus_adx_2 = fixnan(100 * rma(minusDM_2, len) / truerange_2) [plus_adx_2, minus_adx_2] adx_2(dilen_2, adxlen_2) => [plus_adx_2, minus_adx_2] = dirmov_2(dilen_2) sum_adx_2 = plus_adx_2 + minus_adx_2 adx_2 = 100 * rma(abs(plus_adx_2 - minus_adx_2) / (sum_adx_2 == 0 ? 1 : sum_adx_2), adxlen_2) sig_adx_2 = adx(dilen_2, adxlen_2) // plot(sig_adx_2, color=red, title="ADX_2") //Input Position //buy position pos_aroon1 = input(-85, title="Aroon_1 Position Index_Down") pos_madouble1_short = input(117, title="ma double_1 wma_Short") pos_madouble1_long = input(86, title="ma double_1 sma_Long") pos_wil = input(-99, title="Williams Position Index_Down") pos_adx= input(14, title="ADX Position Index_Up") pos_aroon2 = input(-39, title="Aroon_2 Position Index_Up") //sell position pos_bb = input(120, title="BB Position Index_Up") pos_aroon_3 = input(99, title="Aroon_3 Position Index_Up") pos_madouble2_short= input(88, title="ma double_2 ema_Short") pos_madouble2_long= input(96, title="ma double_2 sma_Long") pos_adx_2= input(9, title="ADX_2 Position Index_Up") pos_aroon_4 = input(35, title="Aroon_4 Position Index_Down") //Condition longCondition_aroon_1 = (oscillator_1 <= pos_aroon1) longCondition_ma2 = (pos_madouble1_short > pos_madouble1_long) longCondition_wil = (out_wil <= pos_wil) longCondition_adx = (sig_adx >= pos_adx) longCondition_aroon_2 = (oscillator_2 >= pos_aroon2) shortCondition_bb = (close > basis_bb) shortCondition_aroon_3 = (oscillator_3 >= pos_aroon_3) shortCondition_ma2 = (pos_madouble2_short < pos_madouble2_long) shortCondition_adx = (sig_adx_2 >= pos_adx_2) shortCondition_aroon_4 = (oscillator_4 <= pos_aroon_4) vl_aroon_1 = 0 vl_ma2 = 0 vl_wil = 0 vl_adx = 0 vl_aroon_2 = 0 if longCondition_aroon_1 vl_aroon_1 := 1 if longCondition_ma2 vl_ma2 := 3 if longCondition_wil vl_wil := 1 if longCondition_adx vl_adx := -1 if longCondition_aroon_2 vl_aroon_2 := -1 vs_bb = 0 vs_aroon_3 = 0 vs_ma2 = 0 vs_adx = 0 vs_aroon_4 = 0 if shortCondition_bb vs_bb := 1 if shortCondition_aroon_3 vs_aroon_3 := 1 if shortCondition_ma2 vs_ma2 := 3 if shortCondition_adx vs_adx := -2 if shortCondition_aroon_4 vs_aroon_4 := -1 // plotshape(vl_aroon_1, title= "vl_aroon_1", location=location.belowbar, color=green, text="vl_aroon_1") // plotshape(vl_ma2, title= "vl_ma2", location=location.belowbar, color=green, text="\nvl_ma2") // plotshape(vl_wil, title= "vl_wil", location=location.belowbar, color=green, text="\n\nvl_wil") // plotshape(vl_adx, title= "vl_adx", location=location.belowbar, color=green, text="\n\n\nvl_adx") // plotshape(vl_aroon_2, title= "vl_aroon_2", location=location.belowbar, color=green, text="\n\n\n\nvl_aroon_2") // plotshape(vs_bb, title= "vs_bb", location=location.abovebar, color=orange, text="vs_bb") // plotshape(vs_aroon_3, title= "vs_aroon_3", location=location.abovebar, color=orange, text="vs_aroon_3\n") // plotshape(vs_ma2, title= "vs_ma2", location=location.abovebar, color=orange, text="vs_ma2\n\n") // plotshape(vs_adx, title= "vs_adx", location=location.abovebar, color=orange, text="vs_adx\n\n\n") // plotshape(vs_aroon_4, title= "vs_aroon_4", location=location.abovebar, color=orange, text="vs_aroon_4\n\n\n\n") longCondition = (vl_aroon_1 + vl_ma2 + vl_wil + vl_adx + vl_aroon_2) >= 3 ? true : na shortCondition = (vs_bb + vs_aroon_3 + vs_ma2 + vs_adx + vs_aroon_4) >= 3 ? true : na buy = longCondition == 1 ? longCondition : na sell = shortCondition == 1? shortCondition : na // plotshape(buy, title= "buy", location=location.bottom, color=green, text="buy") // plotshape(sell, title= "sell", location=location.top, color=orange, text="sell") // === BACKTEST RANGE === FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 2014) ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2018, title = "To Year", minval = 2014) strategy.entry("L", strategy.long, when=(buy)) strategy.close("L", when=(sell)) // strategy.entry("S", strategy.short, when=(sell and (time >= timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time <= timestamp(ToYear, ToMonth, ToDay, 23, 59)))) // strategy.close("S", when=(buy and (time <= timestamp(ToYear, ToMonth, ToDay, 23, 59))))