
এটি একটি ইন-ডে ট্রেডিং কৌশল যা একাধিক প্রযুক্তিগত সূচকের উপর ভিত্তি করে তৈরি করা হয় এবং মূলত ইএমএ চ্যানেল, আরএসআই ওভারবয় ওভারসেল এবং এমএসিডি ট্রেন্ড কনফার্মেশন ইত্যাদির মতো একাধিক সংকেত ব্যবহার করে ট্রেড করা হয়। কৌশলটি 3 মিনিটের চক্রের উপর চালিত হয়, ইএমএ উচ্চ-নিম্ন ট্র্যাক্টের সাথে আরএসআই এবং এমএসিডি এর ক্রস কনফার্মেশন দ্বারা বাজার প্রবণতা ক্যাপচার করে এবং এটিআর-ভিত্তিক গতিশীল স্টপ লস স্টপ সেট করে এবং স্থির সমাপ্তি সমতল সময়।
কৌশলটি 20 টি চক্রের ইএমএ ব্যবহার করে সর্বোচ্চ এবং সর্বনিম্ন দামের জন্য পৃথকভাবে গণনা করে একটি চ্যানেল তৈরি করে, যখন দাম চ্যানেলটি ভেঙে দেয় এবং নিম্নলিখিত শর্তগুলি পূরণ করে তখন প্রবেশ করেঃ
এই কৌশলটি একাধিক প্রযুক্তিগত সূচকগুলির সমন্বয় ব্যবহার করে একটি অপেক্ষাকৃত সম্পূর্ণ ট্রেডিং সিস্টেম তৈরি করে। কৌশলটির সুবিধা হ’ল ঝুঁকি নিয়ন্ত্রণের আরও নিখুঁততা, যেমন গতিশীল স্টপ লস, স্থির ঝুঁকি এবং সমাপ্তি পজিশন ইত্যাদি। যদিও কিছু পিছিয়ে পড়া ঝুঁকি রয়েছে, তবে প্যারামিটার অপ্টিমাইজেশন এবং সহায়ক সূচক যুক্ত করে কৌশলটির কার্যকারিতা আরও বাড়ানো যেতে পারে। কৌশলটি বিশেষত অস্থির দিনের ব্যবসায়ের বাজারের জন্য উপযুক্ত, কঠোর ঝুঁকি নিয়ন্ত্রণ এবং একাধিক সংকেত নিশ্চিতকরণের মাধ্যমে স্থিতিশীল উপার্জন অর্জন করতে পারে।
/*backtest
start: 2024-02-21 00:00:00
end: 2024-09-09 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Intraday 3min EMA HL Strategy v6",
overlay=true,
margin_long=100,
margin_short=100,
initial_capital=100000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
commission_type=strategy.commission.percent,
commission_value=0.05,
calc_on_every_tick=false,
process_orders_on_close=true,
pyramiding=0)
// Input Parameters
i_emaLength = input.int(20, "EMA Length", minval=5, group="Strategy Parameters")
i_rsiLength = input.int(14, "RSI Length", minval=5, group="Strategy Parameters")
i_atrLength = input.int(14, "ATR Length", minval=5, group="Risk Management")
i_rrRatio = input.float(2.5, "Risk:Reward Ratio", minval=1, maxval=10, step=0.5, group="Risk Management")
i_riskPercent = input.float(1, "Risk % per Trade", minval=0.1, maxval=5, step=0.1, group="Risk Management")
// Time Exit Parameters (IST)
i_exitHour = input.int(15, "Exit Hour (IST)", minval=0, maxval=23, group="Session Rules")
i_exitMinute = input.int(0, "Exit Minute (IST)", minval=0, maxval=59, group="Session Rules")
// Indicator Calculations
emaHigh = ta.ema(high, i_emaLength)
emaLow = ta.ema(low, i_emaLength)
rsi = ta.rsi(close, i_rsiLength)
atr = ta.atr(i_atrLength)
fastMA = ta.ema(close, 12)
slowMA = ta.ema(close, 26)
macdLine = fastMA - slowMA
signalLine = ta.ema(macdLine, 9)
// Time Calculations (UTC to IST Conversion)
istHour = (hour(time) + 5) % 24 // UTC+5
istMinute = minute(time) + 30 // 30 minute offset
istHour += istMinute >= 60 ? 1 : 0
istMinute := istMinute % 60
// Exit Condition
timeExit = istHour > i_exitHour or (istHour == i_exitHour and istMinute >= i_exitMinute)
// Entry Conditions (Multi-line formatting fix)
longCondition = close > emaHigh and
rsi > 50 and
rsi < 70 and
ta.crossover(macdLine, signalLine)
shortCondition = close < emaLow and
rsi < 50 and
rsi > 30 and
ta.crossunder(macdLine, signalLine)
// Risk Calculations
var float entryPrice = na
var float stopLoss = na
var float takeProfit = na
var float posSize = na
// Strategy Logic
if longCondition and not timeExit and strategy.position_size == 0
entryPrice := close
stopLoss := math.min(low, entryPrice - atr)
takeProfit := entryPrice + (entryPrice - stopLoss) * i_rrRatio
posSize := strategy.equity * i_riskPercent / 100 / (entryPrice - stopLoss)
strategy.entry("Long", strategy.long, qty=posSize)
strategy.exit("Long Exit", "Long", stop=stopLoss, limit=takeProfit)
if shortCondition and not timeExit and strategy.position_size == 0
entryPrice := close
stopLoss := math.max(high, entryPrice + atr)
takeProfit := entryPrice - (stopLoss - entryPrice) * i_rrRatio
posSize := strategy.equity * i_riskPercent / 100 / (stopLoss - entryPrice)
strategy.entry("Short", strategy.short, qty=posSize)
strategy.exit("Short Exit", "Short", stop=stopLoss, limit=takeProfit)
// Force Close at Session End
if timeExit
strategy.close_all()
// Visual Components
plot(emaHigh, "EMA High", color=color.rgb(0, 128, 0), linewidth=2)
plot(emaLow, "EMA Low", color=color.rgb(255, 0, 0), linewidth=2)
plotshape(longCondition, "Long Signal", shape.triangleup,
location.belowbar, color=color.green, size=size.small)
plotshape(shortCondition, "Short Signal", shape.triangledown,
location.abovebar, color=color.red, size=size.small)
// Debugging Table
var table infoTable = table.new(position.top_right, 3, 3)
if barstate.islast
table.cell(infoTable, 0, 0, "EMA High: " + str.tostring(emaHigh, "#.00"))
table.cell(infoTable, 0, 1, "EMA Low: " + str.tostring(emaLow, "#.00"))
table.cell(infoTable, 0, 2, "Current RSI: " + str.tostring(rsi, "#.00"))