
এই কৌশলটি একটি পরিমাণগত ট্রেডিং সিস্টেম যা রিলেটিভ স্ট্রেংথ ইনডেক্স (RSI) এবং মুভিং এভারেজ (MA) কে একত্রিত করে বাজারের প্রবণতা এবং দুটি সূচকের সমন্বয়ের মাধ্যমে ট্রেডিং সুযোগ সনাক্ত করতে। ট্রেডিং সিগন্যালের নির্ভরযোগ্যতা বাড়ানোর জন্য সিস্টেমটি ভলিউম এবং অস্থিরতা ফিল্টারকেও একীভূত করে। কৌশলটির মূল ধারণা হল দ্রুত গতিশীল গড় এবং ধীর গতির গড়কে ছেদ করার মাধ্যমে প্রবণতার দিক নির্ধারণ করা, যখন RSI ব্যবহার করে ভরবেগ নিশ্চিত করা এবং শেষ পর্যন্ত একটি সম্পূর্ণ ট্রেডিং সিদ্ধান্ত নেওয়ার কাঠামো তৈরি করা।
কৌশলটি একটি দ্বি-স্তর সংকেত নিশ্চিতকরণ প্রক্রিয়া গ্রহণ করে:
এই কৌশলটি ব্যাপকভাবে প্রবণতা এবং গতির সূচক ব্যবহার করে একটি অপেক্ষাকৃত সম্পূর্ণ ট্রেডিং সিস্টেম প্রতিষ্ঠা করে। সিস্টেমের সুবিধা মাল্টি-লেভেল সিগন্যাল কনফার্মেশন মেকানিজম এবং সম্পূর্ণ রিস্ক ম্যানেজমেন্ট সিস্টেমের মধ্যে নিহিত আছে তবে, ব্যবহারিক প্রয়োগে, কৌশলের কার্যকারিতার উপর বাজারের পরিবেশের প্রভাবের দিকে মনোযোগ দেওয়া এবং প্রকৃত পরিস্থিতি অনুযায়ী পরামিতিগুলি অপ্টিমাইজ করা প্রয়োজন। . ক্রমাগত উন্নতি এবং অপ্টিমাইজেশনের মাধ্যমে, এই কৌশলটি বিভিন্ন বাজারের পরিবেশে স্থিতিশীল কর্মক্ষমতা বজায় রাখার আশা করা হচ্ছে।
/*backtest
start: 2024-01-17 00:00:00
end: 2025-01-16 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
// © Boba2601
//@version=5
strategy("RSI-MA Synergy", overlay=true, margin_long=100, margin_short=100)
// === Налаштування індикаторів ===
length_rsi = input.int(14, title="RSI Period", group="Індикатори")
fastMALength = input.int(9, title="Fast MA Length", group="Індикатори")
slowMALength = input.int(21, title="Slow MA Length", group="Індикатори")
// === Налаштування стоп-лосу і тейк-профіту ===
useStopLossTakeProfit = input.bool(true, title="Використовувати стоп-лос і тейк-профіт", group="Стоп-лос і Тейк-профіт")
stopLossPercent = input.float(2.0, title="Стоп-лос (%)", minval=0.1, step=0.1, group="Стоп-лос і Тейк-профіт")
takeProfitPercent = input.float(4.0, title="Тейк-профіт (%)", minval=0.1, step=0.1, group="Стоп-лос і Тейк-профіт")
// === Налаштування об'єму та волатильності ===
useVolumeFilter = input.bool(false, title="Використовувати фільтр об'єму", group="Об'єм та Волатильність")
volumeThreshold = input.int(50000, title="Мінімальний об'єм", group="Об'єм та Волатильність")
useVolatilityFilter = input.bool(false, title="Використовувати фільтр волатильності", group="Об'єм та Волатильність")
atrLength = input.int(14, title="Період ATR для волатильності", group="Об'єм та Волатильність")
volatilityThreshold = input.float(1.5, title="Мінімальна волатильність (ATR)", step=0.1, group="Об'єм та Волатильність")
// === Розрахунок індикаторів ===
rsiValue = ta.rsi(close, length_rsi)
fastMA = ta.sma(close, fastMALength)
slowMA = ta.sma(close, slowMALength)
// === Розрахунок об'єму та волатильності ===
averageVolume = ta.sma(volume, 20)
atrValue = ta.atr(atrLength)
// === Умови входу в позицію ===
longCondition = ta.crossover(fastMA, slowMA) and rsiValue < 50
if useVolumeFilter
longCondition := longCondition and volume > volumeThreshold
if useVolatilityFilter
longCondition := longCondition and atrValue > volatilityThreshold
shortCondition = ta.crossunder(fastMA, slowMA) and rsiValue > 50
if useVolumeFilter
shortCondition := shortCondition and volume > volumeThreshold
if useVolatilityFilter
shortCondition := shortCondition and atrValue > volatilityThreshold
// === Логіка входу та виходу з позиції ===
if (longCondition)
strategy.entry("Long", strategy.long)
if (useStopLossTakeProfit)
stopLossPrice = close * (1 - stopLossPercent / 100)
takeProfitPrice = close * (1 + takeProfitPercent / 100)
strategy.exit("Exit Long", "Long", stop = stopLossPrice, limit = takeProfitPrice)
if (shortCondition)
strategy.entry("Short", strategy.short)
if (useStopLossTakeProfit)
stopLossPrice = close * (1 + stopLossPercent / 100)
takeProfitPrice = close * (1 - takeProfitPercent / 100)
strategy.exit("Exit Short", "Short", stop = stopLossPrice, limit = takeProfitPrice)
// === Закриття позицій за зворотнім сигналом ===
if (strategy.position_size > 0 and (ta.crossunder(fastMA, slowMA) or rsiValue > 50))
strategy.close("Long", comment="Закрито по сигналу")
if (strategy.position_size < 0 and (ta.crossover(fastMA, slowMA) or rsiValue < 50))
strategy.close("Short", comment="Закрито по сигналу")