এই কৌশলটি বাজারের প্রবণতা বিচার করার জন্য বোলিংজার ব্যান্ড, আরএসআই, এডিএক্স, এমএসিডি এর মতো একাধিক সূচক গ্রহণ করে এবং এর শক্তিশালী প্রবণতা সনাক্তকরণের ক্ষমতা রয়েছে। এটি যখন একই সাথে সূচক সংকেতগুলি উত্থান হয় তখন এটি প্রবণতা অনুসরণকারী কৌশল গ্রহণ করে। যখন সূচক সংকেতগুলি একই সাথে হ্রাস পায় তখন এটি স্টপ লস পজিশন বন্ধ করে।
একাধিক সূচকের সমন্বিত মূল্যায়নের মাধ্যমে, এটি মূল্যের প্রবণতা সঠিকভাবে সনাক্ত করতে পারে এবং অতিরিক্ত রিটার্ন অর্জনের জন্য প্রবণতা ঘটলে তা সময়মতো ট্র্যাক করতে পারে।
এই কৌশলটির সবচেয়ে বড় সুবিধা হল যে, সূচক সমন্বয়ের মূল্যায়ন আরও ব্যাপক এবং সঠিক, যা মূল্যের প্রবণতা কার্যকরভাবে সনাক্ত করতে পারে এবং একক সূচক দ্বারা সৃষ্ট মিথ্যা সংকেতগুলি এড়াতে পারে।
বিশেষ করে, এর সুবিধাগুলি হলঃ
সূচক সংমিশ্রণের মাধ্যমে, এটি মিথ্যা সংকেত হ্রাস করতে এবং কৌশলটির স্থিতিশীলতা বাড়াতে পারে।
এই কৌশলটির প্রধান ঝুঁকিগুলি নিম্নলিখিত থেকে আসেঃ
ঝুঁকি ১-এর ক্ষেত্রে একাধিক সূচকের উপর নির্ভর করা একক সূচকের ব্যর্থতার সমস্যাকে কিছুটা হ্রাস করতে পারে, তবে ঝুঁকি ব্যবস্থাপনা প্রক্রিয়াগুলি এখনও উন্নত করতে হবে।
ঝুঁকি ২ এর জন্য, পরামিতিগুলি সংকীর্ণ ট্রেডিং ব্যাপ্তির জন্য উপযুক্তভাবে সামঞ্জস্য করা যেতে পারে এবং ঝুঁকি হ্রাস করার জন্য ট্রেডিং ফ্রিকোয়েন্সি হ্রাস করা যেতে পারে।
এই কৌশলটির প্রধান অপ্টিমাইজযোগ্য দিকগুলির মধ্যে রয়েছেঃ
ক্রমাগত অপ্টিমাইজেশনের মাধ্যমে, পরামিতির দৃঢ়তা ক্রমাগত উন্নত করুন এবং মিথ্যা সংকেতগুলির সম্ভাবনা হ্রাস করুন।
সামগ্রিকভাবে, এই কৌশলটি সূচক সমন্বয়ের মাধ্যমে প্রবণতা সংকেত চিহ্নিত করার তুলনামূলকভাবে শক্তিশালী ক্ষমতা রয়েছে যা কার্যকরভাবে মূল্য প্রবণতা সনাক্ত করতে পারে।
তবে এর কিছু ঝুঁকিও রয়েছে, স্থিতিশীল দীর্ঘমেয়াদী ক্রিয়াকলাপের জন্য ঝুঁকি ব্যবস্থাপনা এবং পরামিতি অপ্টিমাইজেশানকে ক্রমাগত উন্নত করা দরকার। যদি পরামিতিগুলির স্বয়ংক্রিয় অপ্টিমাইজেশান অর্জনের জন্য মেশিন লার্নিংয়ের মতো পদ্ধতিগুলি পরে চালু করা যায় তবে এটি কৌশলটির দৃust়তা এবং লাভজনকতাকে ব্যাপকভাবে বাড়িয়ে তুলবে।
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 00:00:00 period: 5h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © abilash.s.90 dIMinusCalc(adxLen) => smoothedTrueRange = 0.0 smoothedDirectionalMovementMinus = 0.0 dIMinus = 0.0 trueRange = 0.0 directionalMovementMinus = 0.0 trueRange := max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1]))) directionalMovementMinus := nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0 smoothedTrueRange := nz(smoothedTrueRange[1]) - (nz(smoothedTrueRange[1])/adxLen) + trueRange smoothedDirectionalMovementMinus := nz(smoothedDirectionalMovementMinus[1]) - (nz(smoothedDirectionalMovementMinus[1])/adxLen) + directionalMovementMinus dIMinus := smoothedDirectionalMovementMinus / smoothedTrueRange * 100 dIMinus dIPlusCalc(adxLen) => smoothedTrueRange = 0.0 smoothedDirectionalMovementPlus = 0.0 dIPlus = 0.0 trueRange = 0.0 directionalMovementPlus = 0.0 trueRange := max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1]))) directionalMovementPlus := high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0 smoothedTrueRange := nz(smoothedTrueRange[1]) - (nz(smoothedTrueRange[1])/adxLen) + trueRange smoothedDirectionalMovementPlus := nz(smoothedDirectionalMovementPlus[1]) - (nz(smoothedDirectionalMovementPlus[1])/adxLen) + directionalMovementPlus dIPlus := smoothedDirectionalMovementPlus / smoothedTrueRange * 100 dIPlus Adx(adxLen) => dIPlus = 0.0 dIMinus = 0.0 dX = 0.0 aDX = 0.0 dIPlus := dIPlusCalc(adxLen) dIMinus := dIMinusCalc(adxLen) dX := abs(dIPlus-dIMinus) / (dIPlus+dIMinus)*100 aDX := sma(dX, adxLen) aDX BarInSession(sess) => time(timeframe.period, sess) != 0 //@version=4 strategy("Bollinger Band + RSI + ADX + MACD", overlay=true) //Session session = input(title="Trading Session", type=input.session, defval="0930-1500") sessionColor = BarInSession(session) ? color.green : na bgcolor(color=sessionColor, transp=95) // Bollinger Bands src = input(high, title="Bollinger Band Source", type=input.source) length = input(3, minval=1, type=input.integer, title="Bollinger Band Length") mult = input(4.989, minval=0.001, maxval=50, step=0.001, type=input.float, title="Bollinger Band Std Dev") basis = sma(src, length) dev = mult * stdev(src, length) upper = basis + dev lower = basis - dev plot(upper, title="Bollinger Band Upper", color=color.red) plot(lower, title="Bollinger Band Lower", color=color.green) // RSI rsiSrc = input(close, title="RSI Source", type=input.source) rsiLength = input(16, minval=1, type=input.integer, title="RSI Length") rsiComparator = input(39.2, title="RSI Comparator", type=input.float, step=0.1) rsi = rsi(rsiSrc, rsiLength) // ADX adxLength = input(14, minval=1, type=input.integer, title="ADX Length") adxComparator = input(14, minval=1, type=input.integer, title="ADX Comparator") adx = Adx(adxLength) // Heikinashi haClose = security(heikinashi(syminfo.ticker), timeframe.period, close) haOpen = security(heikinashi(syminfo.ticker), timeframe.period, open) nextHaOpen = (haOpen + haClose) / 2 //MACD macdCalcTypeProcessed = input(title="MACD Source", type=input.source, defval=high) fast = input(12, title="MACD Fast") slow = input(20, title="MACD Slow") signalLen = input(15, title="MACD Signal") fastMA = ema(macdCalcTypeProcessed, fast) slowMA = ema(macdCalcTypeProcessed, slow) macd = fastMA - slowMA signal = sma(macd, signalLen) longCondition() => (low < lower) and (rsi[0] > rsiComparator) and (adx > adxComparator) and (close > nextHaOpen) and BarInSession(session) and macd > signal stop = (close - max((low - (low * 0.0022)), (close - (close * 0.0032)))) / syminfo.mintick target = (max(upper, (close + (close * 0.0075))) - close) / syminfo.mintick strategy.entry("SX,LE", strategy.long, when=longCondition(), comment="SX,LE") strategy.close_all(when=(not BarInSession(session))) strategy.exit("LX", from_entry="SX,LE", profit=target, loss=stop)