এটি একটি প্রবণতা অনুসরণকারী কৌশল যা এডিএক্স এবং আরএসআই সূচকগুলিকে একত্রিত করে। এটি ট্রেডিং সংকেত তৈরির জন্য ওভারকোপড এবং ওভারসোল্ড স্তরগুলি সনাক্ত করতে আরএসআই ব্যবহার করে এবং প্রবণতাটি অস্পষ্ট হলে ট্রেডগুলি ফিল্টার করার জন্য প্রবণতা নির্ধারণ করতে এডিএক্স ব্যবহার করে, এইভাবে ব্যাপ্তি-সীমাবদ্ধ বাজারে উইপস এড়ানো যায়।
ক্রয়/বিক্রয় ফাঁদ এড়াতে RSI কার্যকরভাবে অতিরিক্ত ক্রয় এবং অতিরিক্ত বিক্রয় স্তর চিহ্নিত করে
এডিএক্স হুইপস এড়ানোর জন্য রেঞ্জ-বান্ধব বাজারগুলি ফিল্টার করে
বেছে নেওয়া মুনাফা/স্টপ লস পদ্ধতি ঝুঁকি নিয়ন্ত্রণে সহায়তা করে
সহজ এবং সহজেই বোঝা যায়, অ্যালগরিদম ট্রেডিং শিখতে নতুনদের জন্য ভাল
প্যারামিটার অপ্টিমাইজেশান এবং পরিমার্জন জন্য অনেক জায়গা
RSI overbought/oversold এর pullbacks এবং reversals থাকতে পারে
এডিএক্স ট্রেন্ড নির্ধারণে বিলম্ব রয়েছে, ট্রেন্ড টার্নিং পয়েন্টগুলি মিস করতে পারে
ভুল স্টপ লস প্লেসমেন্ট ক্ষতির কারণ হতে পারে
সরলতার কারণে অতিরিক্ত অপ্টিমাইজেশনের ঝুঁকি
আরও ভাল পারফরম্যান্সের জন্য প্রয়োজনীয় প্যারামিটার অপ্টিমাইজেশন
আরএসআই প্যারামিটার এবং ওভারকুপ/ওভারসোল্ড লেভেল অপ্টিমাইজ করুন
সর্বোত্তম সেটিং খুঁজে পেতে বিভিন্ন ADX সময়ের পরীক্ষা করুন
বিভিন্ন লাভ/স্টপ লস পদ্ধতি পরীক্ষা করুন
বিপরীত ট্রেডিং এড়াতে ট্রেন্ড ফিল্টার যুক্ত করুন
উন্নত পারফরম্যান্সের জন্য অন্যান্য সূচকগুলির সাথে একত্রিত করুন
এই কৌশলটি প্রবণতা সনাক্ত করতে এবং whipsaws এড়াতে ক্লাসিক আরএসআই এবং এডিএক্স সূচকগুলির শক্তির সংমিশ্রণ করে। এটি আরও ভাল পারফরম্যান্স অর্জনের জন্য অপ্টিমাইজেশনের জন্য অনেক জায়গা রয়েছে। সামগ্রিকভাবে, এটি একটি শিক্ষানবিশদের ভূমিকা অ্যালগরিদম ট্রেডিং কৌশল হিসাবে ভাল কাজ করে এবং আরও জটিল ট্রেডিং সিস্টেমে অন্তর্ভুক্ত করা যেতে পারে।
/*backtest start: 2023-09-19 00:00:00 end: 2023-09-26 00:00:00 period: 15m basePeriod: 5m 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/ // © tweakerID // This is a strategy that uses the 7 Period RSI to buy when the indicator is shown as oversold (OS) and sells when // the index marks overbought (OB). It also uses the ADX to determine whether the trend is ranging or trending // and filters out the trending trades. Seems to work better for automated trading when the logic is inversed (buying OB // and selling the OS) wihout stop loss. //@version=4 strategy("ADX + RSI Strat", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, commission_value=0.04, calc_on_every_tick=false) direction = input(0, title = "Strategy Direction", type=input.integer, minval=-1, maxval=1) strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long)) //SL & TP Inputs i_SL=input(false, title="Use Swing Lo/Hi Stop Loss & Take Profit") i_SwingLookback=input(20, title="Swing Lo/Hi Lookback") i_SLExpander=input(defval=0, step=.2, title="SL Expander") i_TPExpander=input(defval=0, step=.2, title="TP Expander") i_reverse=input(true, title="Reverse Trades") //SL & TP Calculations SwingLow=lowest(i_SwingLookback) SwingHigh=highest(i_SwingLookback) bought=strategy.position_size != strategy.position_size[1] LSL=valuewhen(bought, SwingLow, 0)-((valuewhen(bought, atr(14), 0))*i_SLExpander) SSL=valuewhen(bought, SwingHigh, 0)+((valuewhen(bought, atr(14), 0))*i_SLExpander) lTP=strategy.position_avg_price + (strategy.position_avg_price-(valuewhen(bought, SwingLow, 0))+((valuewhen(bought, atr(14), 0))*i_TPExpander)) sTP=strategy.position_avg_price - (valuewhen(bought, SwingHigh, 0)-strategy.position_avg_price)-((valuewhen(bought, atr(14), 0))*i_TPExpander) islong=strategy.position_size > 0 isshort=strategy.position_size < 0 SL= islong ? LSL : isshort ? SSL : na TP= islong ? lTP : isshort ? sTP : na //RSI Calculations RSI=rsi(close, 7) OS=input(30, step=5) OB=input(80, step=5) //ADX Calculations adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") dirmov(len) => up = change(high) down = -change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = rma(tr, len) plus = fixnan(100 * rma(plusDM, len) / truerange) minus = fixnan(100 * rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) sig = adx(dilen, adxlen) adxlevel=input(30, step=5) //Entry Logic BUY = sig < adxlevel and (RSI < OS) SELL = sig < adxlevel and (RSI > OB) //Entries strategy.entry("long", strategy.long, when=i_reverse?SELL:BUY) strategy.entry("short", strategy.short, when=not i_reverse?SELL:BUY) //Exits if i_SL strategy.exit("longexit", "long", stop=SL, limit=TP) strategy.exit("shortexit", "short", stop=SL, limit=TP) //Plots plot(i_SL ? SL : na, color=color.red, style=plot.style_cross, title="SL") plot(i_SL ? TP : na, color=color.green, style=plot.style_cross, title="TP") plotshape(BUY ? 1 : na, style=shape.triangleup, location=location.belowbar, color=color.green, title="Bullish Setup") plotshape(SELL ? 1 : na, style=shape.triangledown, location=location.abovebar, color=color.red, title="Bearish Setup")