
Chiến lược này là một hệ thống theo dõi xu hướng động kết hợp các chỉ số di chuyển trung bình ((EMA) và các chỉ số tương đối mạnh ((RSI)). Nó xác định hướng xu hướng thông qua sự giao thoa của 9 chu kỳ và 21 chu kỳ EMA, và sử dụng RSI như một chỉ số xác nhận xu hướng. Chiến lược này cũng bao gồm một hệ thống quản lý tiền hoàn chỉnh, bao gồm thiết lập các mục tiêu dừng động và lợi nhuận.
Logic cốt lõi của chiến lược này dựa trên các yếu tố chính sau:
Chiến lược này xây dựng một hệ thống theo dõi xu hướng hoàn chỉnh bằng cách kết hợp EMA và RSI xác nhận. Ưu điểm chính của nó là kết hợp phân tích kỹ thuật với quản lý rủi ro một cách hữu cơ, có khả năng mở rộng và thích ứng tốt. Mặc dù có một số rủi ro vốn có, chiến lược này có thể cung cấp cho các nhà giao dịch một khung giao dịch vững chắc thông qua việc tối ưu hóa liên tục và điều chỉnh tham số.
/*backtest
start: 2024-02-10 00:00:00
end: 2025-02-08 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Lukhi24
//@version=6
strategy("Lukhi EMA Crossover_TWL educational strategy", overlay=true)
// Input Parameters
capital = input.float(15000, title="Capital (₹)", tooltip="Total capital")
risk_per_trade = input.float(1000, title="Risk per Trade (₹)", tooltip="Risk per trade amount")
target_per_trade = input.float(5000, title="Take Profit per Trade (₹)", tooltip="Target profit per trade")
lot_size = input.int(1, title="Lot Size", tooltip="Nifty option lot size")
stop_loss_distance = input.float(30, title="Stop Loss Distance (Points)", tooltip="Fixed stop-loss in points")
// EMA Parameters
short_ema_length = input.int(9, title="Short EMA Length")
long_ema_length = input.int(21, title="Long EMA Length")
// RSI Parameters
rsi_length = input.int(14, title="RSI Length")
rsi_overbought = input.float(70, title="RSI Overbought Level")
rsi_oversold = input.float(30, title="RSI Oversold Level")
// Calculate EMAs and RSI
ema_short = ta.ema(close, short_ema_length)
ema_long = ta.ema(close, long_ema_length)
rsi = ta.rsi(close, rsi_length)
// Buy and Sell Signals
buy_signal = ta.crossover(ema_short, ema_long) and rsi > 50
sell_signal = ta.crossunder(ema_short, ema_long) and rsi < 50
// Plot EMAs
plot(ema_short, color=color.blue, title="EMA Short")
plot(ema_long, color=color.orange, title="EMA Long")
// Position Size Calculation
position_size = risk_per_trade / stop_loss_distance
// Stop Loss and Take Profit Levels
long_stop_loss = close - stop_loss_distance
long_take_profit = close + (target_per_trade / position_size)
short_stop_loss = close + stop_loss_distance
short_take_profit = close - (target_per_trade / position_size)
// Entry and Exit Logic
if buy_signal
strategy.entry("Buy", strategy.long, qty=lot_size)
strategy.exit("Exit Buy", "Buy", stop=long_stop_loss, limit=long_take_profit)
if sell_signal
strategy.entry("Sell", strategy.short, qty=lot_size)
strategy.exit("Exit Sell", "Sell", stop=short_stop_loss, limit=short_take_profit)
// Add Entry Signal Labels
var label long_label = na
var label short_label = na
if buy_signal
label.delete(long_label)
long_label := label.new(bar_index,close,text="BUY\nEntry: " + str.tostring(close, "#.##") + "\nTarget: " + str.tostring(long_take_profit, "#.##") + "\nSL: " + str.tostring(long_stop_loss, "#.##"),style=label.style_label_up,color=color.rgb(12, 90, 90, 73),textcolor=#010000)
if sell_signal
label.delete(short_label)
short_label := label.new(bar_index,close,text="SELL\nEntry: " + str.tostring(close, "#.##") + "\nTarget: " + str.tostring(short_take_profit, "#.##") + "\nSL: " + str.tostring(short_stop_loss, "#.##"),style=label.style_label_down,color=#5d371752,textcolor=#000000)
// Trade Failure Indicators
long_trade_loss = strategy.position_size > 0 and close <= long_stop_loss
short_trade_loss = strategy.position_size < 0 and close >= short_stop_loss
plotshape(long_trade_loss, location=location.belowbar, color=color.red, style=shape.cross, title="Long Trade Failed", text="SL Hit")
plotshape(short_trade_loss, location=location.abovebar, color=color.red, style=shape.cross, title="Short Trade Failed", text="SL Hit")