
Strategi ini adalah sistem perdagangan yang menggabungkan beberapa indikator teknis, terutama berdasarkan EMA linear crossover, RSI oversold dan MACD Gold Forks triple signal konfirmasi untuk membuka posisi, untuk mengelola risiko melalui harga batas dinamis single entry dan multi exit mekanisme. Strategi ini menggunakan 9 siklus dan 21 siklus indeks moving average (EMA) sebagai indikator tren utama, yang dikombinasikan dengan indeks yang relatif kuat (RSI) dan rata-rata bergerak tren di belakang indikator (MACD) untuk memfilter sinyal perdagangan, untuk mengendalikan risiko dengan menetapkan jarak batas harga tunggal dan nomor stop loss tetap.
Logika perdagangan inti dari strategi ini terdiri dari beberapa bagian penting:
Strategi ini mengadopsi cara masuk tunggal dengan harga terbatas, yang dapat menempatkan posisi di posisi harga yang lebih baik, dan meningkatkan akurasi perdagangan melalui kombinasi dari beberapa indikator teknis.
Ini adalah strategi perdagangan multi-indikator yang terstruktur, logis dan jelas, dengan identifikasi tren melalui sistem linier, sinyal filter RSI dan MACD, pesanan harga dan mekanisme pengendalian risiko multi-stop. Keuntungan dari strategi ini adalah keandalan sinyal yang tinggi, kontrol risiko yang sempurna, tetapi ada juga masalah seperti lag sinyal dan pengoptimalan parameter. Dengan memperkenalkan penyesuaian parameter dinamis dan menambahkan indikator tambahan, strategi ini memiliki ruang pengoptimalan yang lebih besar.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SMA 9 & 21 with RSI and MACD Buy Strategy", overlay=true)
// Inputs for Simple Moving Averages
sma_short = ta.ema(close, 9)
sma_long = ta.ema(close, 21)
// Plotting SMA
plot(sma_short, color=color.green, title="SMA 9")
plot(sma_long, color=color.red, title="SMA 21")
// RSI Calculation
rsi_length = input.int(14, title="RSI Length")
rsi_threshold = input.int(70, title="RSI Threshold")
rsi = ta.rsi(close, rsi_length)
// MACD Calculation
macd_fast = input.int(8, title="MACD Fast Length")
macd_slow = input.int(18, title="MACD Slow Length")
macd_signal = input.int(6, title="MACD Signal Length")
[macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal)
// Inputs for Limit Order Offset
limit_offset = input.int(50, title="Limit Order Offset", minval=1) // 50 points below 9 EMA
// User input for specific date
simulationStartDate = input(timestamp("2024-12-01 00:00"), title="Simulation Start Date", group = "Simulation Dates")
simulationEndDate = input(timestamp("2024-12-30 00:00"), title="Simulation End Date", group = "Simulation Dates")
// Declare limit_price as float
var float limit_price = na
// Calculate Limit Order Price
if (sma_short[1] < sma_long[1] and sma_short > sma_long) // 9 EMA crosses above 21 EMA
limit_price := sma_short - limit_offset
// Buy Signal Condition (only on the specified date)
buy_condition = not na(limit_price) and rsi < rsi_threshold and ta.crossover(macd_line, signal_line)
// Sell Signal Condition (MACD crossover down)
sell_condition = ta.crossunder(macd_line, signal_line)
// Track Entry Price for Point-Based Exit
var float entry_price = na
if (buy_condition )
strategy.order("Buy", strategy.long, comment="Limit Order at 9 EMA - Offset", limit=limit_price)
label.new(bar_index, limit_price, "Limit Buy", style=label.style_label_up, color=color.green, textcolor=color.white)
entry_price := limit_price // Set entry price
// Exit Conditions
exit_by_macd = sell_condition
exit_by_points = not na(entry_price) and ((close >= entry_price + 12) or (close <= entry_price - 12)) // Adjust as per exit points
// Exit all positions at the end of the day
if hour == 15 and minute > 10 and strategy.position_size > 0
strategy.close_all() // Close all positions at the end of the day
strategy.cancel_all()
// Exit based on sell signal or point movement
if (exit_by_macd or exit_by_points and strategy.position_size > 0 )
strategy.close("Buy")
label.new(bar_index, close, "Close", style=label.style_label_down, color=color.red, textcolor=color.white)