
Strategi ini adalah strategi perdagangan forex garis pendek, dengan gagasan utama adalah untuk meningkatkan manajemen risiko dengan menyesuaikan ukuran posisi secara dinamis. Strategi ini menghitung ukuran posisi dinamis berdasarkan ekuitas akun saat ini dan proporsi risiko untuk setiap perdagangan. Strategi ini juga menetapkan kondisi stop loss dan stop loss yang ketat, untuk melunasi posisi dengan cepat ketika terjadi perubahan harga yang merugikan, untuk mengendalikan risiko; dan untuk mengunci keuntungan secara tepat waktu ketika harga bergerak ke arah yang menguntungkan.
Strategi ini mencapai keseimbangan antara pengendalian risiko dan mengejar keuntungan dalam perdagangan garis pendek melalui skala posisi yang dinamis dan penghentian kerugian yang ketat. Logika strategi sederhana dan jelas, cocok untuk pemula. Namun, dalam penerapan praktis, tetap berhati-hati, perhatikan pengendalian risiko, dan terus mengoptimalkan dan memperbaiki strategi sesuai dengan perubahan pasar.
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Short High-Grossing Forex Pair - Enhanced Risk Management", overlay=true)
// Parameters
shortDuration = input.int(7, title="Short Duration (days)")
priceDropPercentage = input.float(30, title="Price Drop Percentage", minval=0, maxval=100)
riskPerTrade = input.float(2, title="Risk per Trade (%)", minval=0.1, maxval=100) / 100 // Increased risk for short trades
stopLossPercent = input.float(2, title="Stop Loss Percentage", minval=0) // Tighter stop-loss for short trades
takeProfitPercent = input.float(30, title="Take Profit Percentage", minval=0) // Take Profit Percentage
// Initialize variables
var int shortEnd = na
var float entryPrice = na
// Calculate dynamic position size
equity = strategy.equity
riskAmount = equity * riskPerTrade
pipValue = syminfo.pointvalue
stopLossPips = close * (stopLossPercent / 100)
positionSize = riskAmount / (stopLossPips * pipValue)
// Entry condition: Enter short position at the first bar with calculated position size
if (strategy.opentrades == 0)
strategy.entry("Short", strategy.short, qty=positionSize)
shortEnd := bar_index + shortDuration
entryPrice := close
alert("Entering short position", alert.freq_once_per_bar_close)
// Exit conditions
exitCondition = (bar_index >= shortEnd) or (close <= entryPrice * (1 - priceDropPercentage / 100))
// Stop-loss and take-profit conditions
stopLossCondition = (close >= entryPrice * (1 + stopLossPercent / 100))
takeProfitCondition = (close <= entryPrice * (1 - takeProfitPercent / 100))
// Exit the short position based on the conditions
if (strategy.opentrades > 0 and (exitCondition or stopLossCondition or takeProfitCondition))
strategy.close("Short")
alert("Exiting short position", alert.freq_once_per_bar_close)
// Plot entry and exit points for visualization
plotshape(series=strategy.opentrades > 0, location=location.belowbar, color=color.red, style=shape.labeldown, text="Short")
plotshape(series=strategy.opentrades == 0, location=location.abovebar, color=color.green, style=shape.labelup, text="Exit")
// Add alert conditions
alertcondition(strategy.opentrades > 0, title="Short Entry Alert", message="Entering short position")
alertcondition(strategy.opentrades == 0, title="Short Exit Alert", message="Exiting short position")