এই কৌশলটি ট্রেডিং সিগন্যাল তৈরির জন্য আরএসআই সূচককে চলমান গড় (এমএ) এর সাথে একত্রিত করে। আরএসআই নির্ধারণ করতে ব্যবহৃত হয় যে বাজারটি অতিরিক্ত ক্রয় বা অতিরিক্ত বিক্রয় হয়েছে কিনা, যখন এমএ দামের প্রবণতা নির্ধারণ করতে ব্যবহৃত হয়। যখন আরএসআই অতিরিক্ত ক্রয় করা হয় এবং দাম এমএ এর উপরে থাকে তখন একটি ক্রয় সংকেত উত্পন্ন হয়; যখন আরএসআই অতিরিক্ত বিক্রয় হয় বা যখন এমএ একটি মৃত্যু ক্রস উত্পাদন করে তখন একটি বিক্রয় সংকেত উত্পন্ন হয়। এছাড়াও, কৌশলটি সহায়ক রায় হিসাবে স্টোক্যাস্টিক আরএসআই সূচক (স্টোকআরএসআই) প্রবর্তন করে এবং স্টোকআরএসআই যখন একটি সংকেত উত্পন্ন করে তখন একটি প্রম্পট চার্টে চিহ্নিত হবে।
RSI এবং MA এর দুটি ক্লাসিকাল সূচককে একত্রিত করে, এই কৌশলটি প্রবণতা আন্দোলন এবং অতিরিক্ত ক্রয় / oversold সুযোগগুলি ক্যাপচার করতে পারে। একই সাথে, এটি একটি সহায়ক রায় হিসাবে স্টকআরএসআই সূচকটি প্রবর্তন করে এবং সামগ্রিক ধারণাটি সহজ এবং পরিষ্কার। তবে, কৌশলটির কিছু ত্রুটিও রয়েছে, যেমন ঝুঁকি নিয়ন্ত্রণের ব্যবস্থাগুলির অভাব এবং সংকেতের নির্ভুলতা উন্নত করার প্রয়োজন। ভবিষ্যতে, আরও বেশি সূচক প্রবর্তন করে, সংকেতের নিয়মগুলি অনুকূল করে, ঝুঁকি নিয়ন্ত্রণ মডিউলগুলি যুক্ত করে ইত্যাদি উন্নত করা যেতে পারে, যাতে আরও শক্তিশালী রিটার্ন পাওয়া যায়।
/*backtest start: 2023-05-22 00:00:00 end: 2024-05-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("RSI Strategy with Customizable MA and StochRSI Alert", overlay=true) // กำหนดค่า RSI สำหรับการเปิดสัญญาณซื้อและขาย rsiOverbought = input(70, title="RSI Overbought Level") rsiOversold = input(30, title="RSI Oversold Level") // เลือกชนิดของเส้นค่าเฉลี่ยเคลื่อนที่ maType = input.string("EMA", title="MA Type", options=["EMA", "SMA", "HMA", "WMA"]) // กำหนดค่าเส้นค่าเฉลี่ยเคลื่อนที่ maShortLength = input(12, title="MA Short Length") maLongLength = input(26, title="MA Long Length") // เลือกการแสดงผลของเส้นค่าเฉลี่ยเคลื่อนที่ showShortMA = input(true, title="Show Short Moving Average") showLongMA = input(true, title="Show Long Moving Average") // ฟังก์ชันสำหรับเลือกชนิดของเส้นค่าเฉลี่ยเคลื่อนที่ f_ma(src, length, type) => switch type "SMA" => ta.sma(src, length) "EMA" => ta.ema(src, length) "HMA" => ta.hma(src, length) "WMA" => ta.wma(src, length) // คำนวณค่าเส้นค่าเฉลี่ยเคลื่อนที่ maShort = showShortMA ? f_ma(close, maShortLength, maType) : na maLong = showLongMA ? f_ma(close, maLongLength, maType) : na // คำนวณค่า RSI rsiValue = ta.rsi(close, 14) // สร้างสัญญาณซื้อและขาย buySignal = (rsiValue > rsiOverbought and ((showShortMA and showLongMA and close > maShort and maShort > maLong) or (showShortMA and not showLongMA and close > maShort) or (showLongMA and not showShortMA and close > maLong))) sellSignal = (showShortMA and showLongMA and ta.crossover(maLong, maShort)) or (showShortMA and not showLongMA and ta.crossover(maShort, close)) or (showLongMA and not showShortMA and ta.crossover(maLong, close)) // แสดงค่าเส้นค่าเฉลี่ยเคลื่อนที่บนกราฟ plot(maShort, color=color.red, title="MA Short") plot(maLong, color=color.green, title="MA Long") // คำนวณค่า Stochastic RSI smoothK = 3 smoothD = 3 RSIlen = 14 STOlen = 14 SRsrc = close OSlevel = 30 OBlevel = 70 rsi1 = ta.rsi(SRsrc, RSIlen) k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, STOlen), smoothK) d = ta.sma(k, smoothD) stochRSIOverbought = OBlevel stochRSIOversold = OSlevel stochRSIBuyAlert = ta.crossover(k, stochRSIOversold) stochRSISellAlert = ta.crossunder(k, stochRSIOverbought) // สร้างคำสั่งซื้อและขายเมื่อมีสัญญาณจาก RSI และ MA เท่านั้น if (buySignal) strategy.entry("Buy", strategy.long) if (sellSignal) strategy.close("Buy") // แสดงสัญญาณเตือนจาก Stochastic RSI บนกราฟ plotshape(series=stochRSIBuyAlert, location=location.belowbar, color=color.green, style=shape.labelup, title="StochRSI Buy Alert") plotshape(series=stochRSISellAlert, location=location.abovebar, color=color.red, style=shape.labeldown, title="StochRSI Sell Alert") // แสดงสัญญาณซื้อและขายจาก RSI และ MA บนกราฟ plotshape(series=buySignal, location=location.top, color=color.green, style=shape.triangleup, title="RSI>70") plotshape(series=sellSignal, location=location.top, color=color.red, style=shape.triangledown, title="MA crossoverDown")