
এই কৌশলটি বাজারের ওভারবয় এবং ওভারসেল সনাক্ত করার জন্য স্টোক্যাস্টিক ওসিলিয়েটর ব্যবহার করে এবং একটি পূর্বনির্ধারিত ঝুঁকি এবং রিটার্ন প্যারামিটারে লেনদেনকে ট্রিগার করে যাতে লেনদেনের মধ্যে লাভের আশা করা যায়। এই কৌশলটির মূল ধারণাটি হ’ল লেনদেনের অঞ্চলের নিম্নতম সময়ে কেনা এবং লেনদেনের অঞ্চলের উচ্চতম সময়ে বিক্রি করা, যখন ঝুঁকি কঠোরভাবে নিয়ন্ত্রণ করা হয়।
এলোমেলোভাবে ওজিল্যান্ট সূচকের উপর ভিত্তি করে ওভার-বই এবং ওভার-সেল সংকেত ব্যবহার করে পূর্ব নির্ধারিত ট্রেডিং ব্যাংকের মধ্যে লেনদেনের চেষ্টা করে। এই কৌশলটি কঠোর ঝুঁকি ব্যবস্থাপনা এবং লেনদেনের ব্যবধানের মাধ্যমে ঝুঁকি নিয়ন্ত্রণ করে। যদিও এই কৌশলটির কিছু সুবিধা রয়েছে তবে এর সাফল্যটি মূলত লেনদেনের ব্যাংকের সঠিক সনাক্তকরণের উপর নির্ভর করে। ভবিষ্যতের অপ্টিমাইজেশনের দিকনির্দেশনাগুলির মধ্যে রয়েছে অন্যান্য প্রযুক্তিগত সূচকগুলির সাথে মিলিত হওয়া, গতিশীল স্টপ লস পয়েন্ট প্রবর্তন করা, উন্নত ব্যাংকের সনাক্তকরণ প্রযুক্তি ব্যবহার করা এবং প্রবণতা ফিল্টার যুক্ত করা। বাস্তবে, ব্যক্তিগত পছন্দ এবং ঝুঁকি গ্রহণের ক্ষমতার ভিত্তিতে কৌশল প্যারামিটার এবং ঝুঁকি পরিচালনার নিয়মগুলি সামঞ্জস্য করা প্রয়োজন।
/*backtest
start: 2023-06-11 00:00:00
end: 2024-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Range Trading with Stochastic", overlay=true)
// Input Parameters
overboughtLevel = input.int(80, title="Overbought Level", minval=1, maxval=100)
oversoldLevel = input.int(20, title="Oversold Level", minval=1, maxval=100)
stochLength = input.int(14, title="Stochastic Length", minval=1)
riskPerTrade = input.float(0.01, title="Risk per Trade (%)", minval=0.01, maxval=100, step=0.01)
barsBetweenTrades = input.int(20, title="Bars Between Trades", minval=1)
// Calculate Stochastic Oscillator
k = ta.sma(ta.stoch(close, high, low, stochLength), 3)
d = ta.sma(k, 3)
// Variables to Track Time Since Last Trade
var lastTradeBar = 0
barsSinceLastTrade = bar_index - lastTradeBar
// Risk Management
atr = ta.atr(14)
stopLoss = 2 * atr
takeProfit = 2 * atr
riskAmount = strategy.equity * riskPerTrade / 100
positionSize = 1
// Entry Conditions
longCondition = k < oversoldLevel and strategy.position_size == 0 and barsSinceLastTrade >= barsBetweenTrades
shortCondition = k > overboughtLevel and strategy.position_size == 0 and barsSinceLastTrade >= barsBetweenTrades
// Entry/Exit Orders
if longCondition
strategy.entry("Long", strategy.long, qty=positionSize)
strategy.exit("Long Exit", "Long", stop=close - stopLoss, limit=close + takeProfit)
lastTradeBar := bar_index // Update last trade bar
if shortCondition
strategy.entry("Short", strategy.short, qty=positionSize)
strategy.exit("Short Exit", "Short", stop=close + stopLoss, limit=close - takeProfit)
lastTradeBar := bar_index // Update last trade bar
// Plot Stochastic
plot(k, color=color.blue, title="%K")
plot(d, color=color.orange, title="%D")
hline(overboughtLevel, color=color.red, title="Overbought")
hline(oversoldLevel, color=color.green, title="Oversold")