
Chiến lược này kết hợp chỉ số tương đối mạnh (RSI) và nguyên tắc tăng vị thế của Martin Gill. Mua và mở vị thế đầu tiên khi RSI thấp hơn đường bán vượt; sau đó, nếu giá tiếp tục giảm, sẽ tăng vị thế bằng chỉ số 2 để lấy lợi nhuận. Chiến lược này được áp dụng cho giao dịch tiền mặt với các loại tiền có giá trị thị trường cao, có thể thu được lợi nhuận ổn định trong thời gian dài.
Chiến lược này kết hợp các chỉ số RSI và nguyên tắc đặt cược của Martin, đặt cược nhiều hơn khi đánh giá điểm bán quá mức, để thu lợi nhuận với một mức dừng nhỏ. Nó có thể thu được lợi nhuận ổn định liên tục, nhưng cũng có một số rủi ro. Có thể được tối ưu hóa hơn nữa bằng cách thiết lập dừng lỗ, điều chỉnh tham số và vân vân.
/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
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/
// © Stavolt
//@version=5
strategy("RSI Martingale Strategy", overlay=true, default_qty_type=strategy.cash, currency=currency.USD)
// Inputs
rsiLength = input(14, title="RSI Length")
oversoldThreshold = input(30, title="Oversold Threshold") // Keeping RSI threshold
profitTargetPercent = input(0.5, title="Profit Target (%)") / 100
initialInvestmentPercent = input(5, title="Initial Investment % of Equity")
// Calculating RSI
rsiValue = ta.rsi(close, rsiLength)
// State variables for tracking the initial entry
var float initialEntryPrice = na
var int multiplier = 1
// Entry condition based on RSI
if (rsiValue < oversoldThreshold and na(initialEntryPrice))
initialEntryPrice := close
strategy.entry("Initial Buy", strategy.long, qty=(strategy.equity * initialInvestmentPercent / 100) / close)
multiplier := 1
// Adjusting for errors and simplifying the Martingale logic
// Note: This section simplifies the aggressive position size adjustments without loops
if (not na(initialEntryPrice))
if (close < initialEntryPrice * 0.995) // 0.5% drop from initial entry
strategy.entry("Martingale Buy 1", strategy.long, qty=((strategy.equity * initialInvestmentPercent / 100) / close) * 2)
multiplier := 2 // Adjusting multiplier for the next potential entry
if (close < initialEntryPrice * 0.990) // Further drop
strategy.entry("Martingale Buy 2", strategy.long, qty=((strategy.equity * initialInvestmentPercent / 100) / close) * 4)
multiplier := 4
// Additional conditional entries could follow the same pattern
// Checking for profit target to close positions
if (strategy.position_size > 0 and (close - strategy.position_avg_price) / strategy.position_avg_price >= profitTargetPercent)
strategy.close_all(comment="Take Profit")
initialEntryPrice := na // Reset for next cycle