
Chiến lược này là một hệ thống giao dịch tự động dựa trên chỉ số tương đối mạnh (RSI), chủ yếu để nắm bắt các cơ hội hồi phục tiềm năng bằng cách xác định các điều kiện bán tháo thị trường. Chiến lược này sử dụng phương pháp tạo vị trí tiến bộ, xây dựng nhiều vị trí khi RSI vượt quá mức thấp và kiểm soát rủi ro bằng cách đặt mục tiêu lợi nhuận. Hệ thống được thiết kế với cơ chế quản lý tiền linh hoạt, sử dụng 6,6% tổng tài khoản cho mỗi giao dịch, cho phép tối đa 15 lần tăng vị trí theo kiểu kim tự tháp.
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ác định cơ hội bán tháo thông qua chỉ số RSI, kết hợp tăng cường theo kiểu kim tự tháp và tỷ lệ cố định để kiếm lợi nhuận, xây dựng một hệ thống giao dịch hoàn chỉnh. Ưu điểm của chiến lược là hoạt động có hệ thống và phân tán rủi ro, nhưng cần chú ý đến tác động của xu hướng thị trường và cài đặt tham số đối với hiệu suất chiến lược. Bằng cách thêm các biện pháp tối ưu hóa như điều chỉnh tham số động, cơ chế dừng lỗ và lọc thị trường, bạn có thể nâng cao hơn nữa sự ổn định và khả năng sinh lợi của chiến lược.
/*backtest
start: 2024-09-15 00:00:00
end: 2024-12-10 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("RSI Cross Under Strategy", overlay=true, initial_capital=1500, default_qty_type=strategy.percent_of_equity, default_qty_value=6.6)
// Input parameters
rsiLength = input(14, "RSI Length")
rsiOversold = input(28.5, "RSI Oversold Level")
profitTarget = input(900, "Profit Target (%)")
maxPyramiding = input(15, "Max Pyramiding")
// Calculate RSI
rsi = ta.rsi(close, rsiLength)
// Detect RSI crossunder
rsiCrossunder = ta.crossunder(rsi, rsiOversold)
// Calculate the profit target price
entryPrice = strategy.position_avg_price
targetPrice = entryPrice * (1 + profitTarget / 100)
// Buy condition
if (rsiCrossunder and strategy.position_size <= maxPyramiding * strategy.equity * 0.066)
strategy.entry("Buy", strategy.long)
// Take profit condition
if (strategy.position_size > 0 and high >= targetPrice)
strategy.close("Buy", qty_percent = 50)
// Plot buy signals
plotshape(rsiCrossunder, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
// Plot sell signals (when position is partially closed)
plotshape(strategy.position_size > 0 and high >= targetPrice, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// Plot RSI
plot(rsi, "RSI", color=color.blue, linewidth=2)
hline(rsiOversold, "RSI Oversold", color=color.red, linestyle=hline.style_dashed)
// Plot entry and target prices
plot(strategy.position_size > 0 ? entryPrice : na, "Entry Price", color=color.green, linewidth=2, style=plot.style_linebr)
plot(strategy.position_size > 0 ? targetPrice : na, "Target Price", color=color.red, linewidth=2, style=plot.style_linebr)
// Display strategy information
var table infoTable = table.new(position.top_right, 3, 6, border_width=1)
table.cell(infoTable, 0, 0, "Strategy Info", bgcolor=color.blue, text_color=color.white)
table.cell(infoTable, 0, 1, "RSI Length: " + str.tostring(rsiLength))
table.cell(infoTable, 0, 2, "RSI Oversold: " + str.tostring(rsiOversold))
table.cell(infoTable, 0, 3, "Profit Target: " + str.tostring(profitTarget) + "%")
table.cell(infoTable, 0, 4, "Order Size: 6.6% of total")
table.cell(infoTable, 0, 5, "Max Pyramiding: " + str.tostring(maxPyramiding) + " times")