
Strategi perdagangan yang beradaptasi dengan banyak faktor adalah sistem perdagangan komprehensif yang menggabungkan analisis struktur pasar, indikator momentum, dan pengukuran volatilitas. Strategi ini didasarkan pada Heikin Ashi Graphing Technology, yang mengintegrasikan beberapa moving average (EMA, WMA, SMA, VWAP), indikator RSI, dan konfirmasi volume transaksi untuk mengidentifikasi titik-titik perubahan tren potensial dan melakukan perdagangan dengan probabilitas tinggi.
Prinsip inti dari strategi ini adalah untuk menangkap titik-titik perubahan struktur pasar melalui konfirmasi multi-indikator, sambil secara ketat mengendalikan risiko.
Heikin Ashi berubahStrategi: Pertama, mengubah garis K standar menjadi grafik Heikin Ashi untuk mengurangi kebisingan pasar dan menonjolkan arah tren. Rumus perhitungan Heikin Ashi adalah sebagai berikut:
Kompleksitas rata-rata bergerak gandaStrategi ini menghitung dan mengintegrasikan 34 rata-rata bergerak periode dari empat jenis yang berbeda:
Logika perdagangan dua mode:
Sistem Manajemen StatusStrategi: Menggunakan variabel status (“NEUTRAL”, “WAIT_ENTRY”, “BUY”, “SELL”) untuk melacak dan mengelola status transaksi, menghindari transaksi yang sering dan sinyal palsu.
Smart Stop Loss dan Target Keuntungan:
Dengan analisis kode yang mendalam, strategi ini menunjukkan keuntungan yang signifikan:
Konfirmasi multi-faktor mengurangi sinyal palsuDengan kombinasi Moving Average, RSI, volume transaksi, dan konfirmasi harga, kemungkinan terjadinya false breakout sangat berkurang dan kualitas transaksi meningkat.
AdaptifDengan dua logika perdagangan yang berbeda (RSI dan garis pendek), strategi dapat beradaptasi dengan lingkungan pasar yang berbeda, baik pasar tren maupun pasar bergolak.
Manajemen risiko yang jelas: Menggunakan rasio risiko-keuntungan tetap dan posisi stop loss berdasarkan struktur pasar, setiap transaksi memiliki kontrol risiko yang jelas, menghindari kerugian berlebihan yang disebabkan oleh penilaian subjektif.
Manajemen status mengurangi overtrading: Melalui variabel status, pelacakan dan pengelolaan status transaksi, menghindari sering masuk dan keluar dari pasar, mengurangi biaya transaksi dan fluktuasi emosi.
Pengolahan halus Heikin AshiHeikin Ashi: Menggunakan teknologi Heikin Ashi untuk mengurangi kebisingan pasar, membuat tren lebih jelas, dan membantu mengidentifikasi titik balik pasar yang sebenarnya.
Pengaturan parameter yang fleksibelParameter utama seperti siklus revisi yang bergoyang dan rasio risiko-keuntungan dapat disesuaikan dengan pasar yang berbeda dan preferensi risiko pribadi.
Multiple Moving Average IntegrasiDengan mengintegrasikan empat jenis rata-rata bergerak yang berbeda, mengurangi kemungkinan penyimpangan dari satu indikator, memberikan referensi harga yang lebih stabil.
Meskipun strategi ini dirancang dengan baik, ada beberapa risiko potensial:
Overtrading di Pasar yang BergolakDalam pasar horizontal yang tidak memiliki tren yang jelas, strategi dapat menghasilkan terlalu banyak sinyal perdagangan, yang menyebabkan sering masuk dan keluar dari pasar dan meningkatkan biaya perdagangan. Solusinya adalah menambahkan kondisi penyaring atau menghentikan perdagangan ketika pasar horizontal teridentifikasi.
Stop loss mungkin terlalu jauh.: Menggunakan shocker high low sebagai posisi stop dalam beberapa kasus dapat menyebabkan posisi stop berada terlalu jauh dari titik masuk, meningkatkan risiko perdagangan tunggal. Anda dapat mempertimbangkan untuk mengatur batas jarak stop maksimum atau menggunakan ATR multiplier untuk mengoptimalkan posisi stop.
Keterbatasan rasio risiko-keuntungan tetapRasio risiko / keuntungan yang optimal mungkin berbeda dalam lingkungan pasar yang berbeda. Dalam pasar tren yang kuat, rasio risiko / keuntungan 1: 3 mungkin terlalu kecil; dan dalam pasar yang kurang berfluktuasi, mungkin sulit untuk dicapai.
Bergantung pada Titik Guncangan SejarahTergantung pada titik getaran historis, strategi dapat terbelakang dalam pasar yang berubah dengan cepat. Pada saat volatilitas tinggi, titik getaran masa lalu mungkin tidak lagi memiliki nilai referensi.
Kurangnya mekanisme adaptasi volatilitasStrategi tidak memiliki mekanisme untuk menyesuaikan parameter berdasarkan fluktuasi pasar, dan mungkin tidak konsisten dalam lingkungan fluktuasi tinggi dan rendah. Pertimbangan dapat diberikan untuk memperkenalkan indikator ATR untuk menyesuaikan parameter perdagangan secara dinamis.
Berdasarkan analisis mendalam dari kode tersebut, berikut adalah arah optimasi yang mungkin:
Rasio risiko-keuntungan dinamisRasio risiko-penghasilan disesuaikan secara otomatis dengan tingkat fluktuasi pasar (misalnya ATR), rasio yang lebih kecil digunakan dalam lingkungan fluktuasi rendah, rasio yang lebih besar digunakan dalam lingkungan fluktuasi tinggi, untuk menyesuaikan dengan kondisi pasar yang berbeda.
Tambahkan filter trenIntroduksi filter tren untuk siklus yang lebih lama, hanya melakukan perdagangan ketika sesuai dengan arah tren utama, menghindari risiko yang ditimbulkan oleh perdagangan berlawanan.
Optimalkan parameter moving averageStrategi saat ini menggunakan 34 siklus tetap, dan dapat mempertimbangkan untuk menguji pengaturan siklus yang berbeda atau menggunakan siklus adaptasi untuk lebih beradaptasi dengan lingkungan pasar yang berbeda.
Memperkenalkan mekanisme penguncian keuntungan parsialKetika harga mencapai tingkat keuntungan tertentu, stop loss dipindahkan ke tingkat biaya atau mengunci sebagian keuntungan untuk melindungi keuntungan yang telah dicapai dari dampak penarikan pasar.
Tambahkan filter waktuMenghindari perdagangan pada saat volatilitas pasar sangat rendah (misalnya di bursa Asia) atau sebelum dan sesudah siaran pers besar, mengurangi risiko yang tidak perlu.
Optimalkan kondisi konfirmasi pengirimanStrategi saat ini menggunakan ambang batas transaksi yang sederhana ((1.5 kali rata-rata 20 siklus), dan dapat mempertimbangkan identifikasi pola transaksi yang lebih kompleks, seperti konsistensi tren transaksi atau karakteristik transaksi yang tiba-tiba.
Menambahkan modul manajemen posisi: Ubah ukuran posisi sesuai dengan fluktuasi pasar saat ini dan dinamika intensitas sinyal, meningkatkan posisi pada sinyal kepastian tinggi, mengurangi posisi pada sinyal kabur.
Optimisasi siklus pengembalian: Melakukan pengujian komprehensif terhadap berbagai siklus revisi getaran untuk menemukan pengaturan parameter yang paling stabil dalam berbagai kondisi pasar.
Strategi perdagangan beradaptasi dengan beberapa faktor adalah sistem perdagangan komprehensif yang menggabungkan beberapa indikator teknis dan analisis struktur pasar. Keunggulan utamanya adalah konfirmasi sinyal ganda, pilihan logika perdagangan yang fleksibel, dan manajemen risiko yang ketat. Strategi ini secara efektif mengidentifikasi potensi titik balik tren dengan mengurangi kebisingan pasar melalui teknik Heikin Ashi, menggunakan beberapa rata-rata bergerak sebagai referensi harga, dan menggabungkan RSI dan konfirmasi volume transaksi.
Rasio keuntungan risiko tetap dan posisi stop loss berdasarkan titik getaran memberikan kerangka pengendalian risiko yang jelas, tetapi juga membawa beberapa keterbatasan. Strategi ini dapat meningkatkan lebih lanjut adaptasi dan stabilitasnya dengan menerapkan langkah-langkah optimasi yang disarankan, seperti rasio keuntungan risiko dinamis, filter tren, dan mekanisme penguncian keuntungan parsial.
Yang terpenting, trader harus memahami prinsip dan keterbatasan dari strategi tersebut, dan melakukan penyesuaian yang diperlukan sesuai dengan preferensi risiko dan pengamatan pasar mereka sendiri. Tidak ada strategi yang sempurna, tetapi dengan pengoptimalan terus menerus dan manajemen risiko yang ketat, strategi perdagangan yang beradaptasi pada banyak faktor dapat menjadi senjata yang kuat dalam toolkit trader.
/*backtest
start: 2025-07-11 00:00:00
end: 2025-08-06 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":5000000}]
*/
//@version=6
strategy("Cnagda Fixed Swing SL & RR 1:3", overlay=true, max_boxes_count=500, max_labels_count=500)
input_strategy = input.string("RSI", "Trade Logic", options=["RSI", "Scalp"])
swing_lookback = input.int(34, "Swing Lookback", minval=5)
rr_multiple = input.int(3, "Risk Reward Multiple", minval=1)
// --- Heikin Ashi Calculation ---
ha_close = (open + high + low + close) / 4
var float ha_open = na
if bar_index == 0
ha_open := (open + close) / 2
else
ha_open := (ha_open[1] + ha_close[1]) / 2
ha_high = math.max(high, math.max(ha_open, ha_close))
ha_low = math.min(low, math.min(ha_open, ha_close))
// --- MA/Signal Logic on Heikin Ashi ---
ma1 = ta.ema(ha_close, 34)
ma2 = ta.wma(ha_close, 34)
wma34 = ta.wma(ha_close, 34)
ema34 = ta.ema(ha_close, 34)
sma34 = ta.sma(ha_close, 34)
vwma34 = ta.vwma(ha_close, 34)
ma_sum = (not na(wma34) ? wma34 : 0) + (not na(vwma34) ? vwma34 : 0) + (not na(ema34) ? ema34 : 0) + (not na(sma34) ? sma34 : 0)
ma_avg = ma_sum / 4
// --- Scalp/Swing Logic ---
buySignal = ta.crossover(ma1, ma2)
sellSignal = ta.crossunder(ma1, ma2)
var string scalp_state = "NEUTRAL"
var float refHigh = na
var float refLow = na
if buySignal or sellSignal
refHigh := ha_high
refLow := ha_low
scalp_state := "WAIT_ENTRY"
if (scalp_state == "WAIT_ENTRY" or scalp_state == "SELL") and not na(refHigh) and ha_close > refHigh
scalp_state := "BUY"
if (scalp_state == "WAIT_ENTRY" or scalp_state == "BUY") and not na(refLow) and ha_close < refLow
scalp_state := "SELL"
if scalp_state == "BUY" and ha_close < ma_avg
scalp_state := "NEUTRAL"
refHigh := na
refLow := na
if scalp_state == "SELL" and ha_close > ma_avg
scalp_state := "NEUTRAL"
refHigh := na
refLow := na
// --- RSI Logic ---
rsi_val = ta.rsi(ha_close, 14)
rsi_ema_3 = ta.ema(rsi_val, 3)
rsi_ema_10 = ta.ema(rsi_val, 10)
high_vol = volume > ta.sma(volume, 20) * 1.5
bar_is_high = high_vol
prev_bar_is_high = high_vol[1]
any_high_bar = bar_is_high or prev_bar_is_high
_base_rsi_cross_bull = ta.crossover(rsi_ema_3, rsi_ema_10) and any_high_bar
_base_rsi_cross_bear = ta.crossunder(rsi_ema_3, rsi_ema_10) and any_high_bar
rsi_cross_bull = _base_rsi_cross_bull and (ha_close < ma_avg)
rsi_cross_bear = _base_rsi_cross_bear and (ha_close > ma_avg)
// ENTRY LOGIC
var float rsi_signal_high = na
var float rsi_signal_low = na
var int rsi_signal_bar = na
var string rsi_entry_state = ""
if rsi_cross_bull
rsi_signal_high := high
rsi_signal_low := na
rsi_signal_bar := bar_index
rsi_entry_state := "WAIT ENTRY"
else if rsi_cross_bear
rsi_signal_low := low
rsi_signal_high := na
rsi_signal_bar := bar_index
rsi_entry_state := "WAIT ENTRY"
else if not na(rsi_signal_bar)
if not na(rsi_signal_high)
if close > rsi_signal_high and bar_index > rsi_signal_bar
rsi_entry_state := "BUY"
rsi_signal_high := na
rsi_signal_bar := na
else
rsi_entry_state := "WAIT ENTRY"
else if not na(rsi_signal_low)
if close < rsi_signal_low and bar_index > rsi_signal_bar
rsi_entry_state := "SELL"
rsi_signal_low := na
rsi_signal_bar := na
else
rsi_entry_state := "WAIT ENTRY"
else
rsi_entry_state := ""
else
rsi_entry_state := ""
// --- Swing High/Low (Stoploss reference) ---
swingLow = ta.pivotlow(ha_low, swing_lookback, swing_lookback)
swingHigh = ta.pivothigh(ha_high, swing_lookback, swing_lookback)
// -- Entry/Exit conditions --
long_condition = input_strategy == "RSI" ? (rsi_entry_state == "BUY" and rsi_entry_state[1] != "BUY") : (scalp_state == "BUY" and scalp_state[1] != "BUY")
short_condition = input_strategy == "RSI" ? (rsi_entry_state == "SELL" and rsi_entry_state[1] != "SELL") : (scalp_state == "SELL" and scalp_state[1] != "SELL")
exit_long_condition = input_strategy == "RSI" ? (rsi_entry_state == "SELL" and rsi_entry_state[1] != "SELL") : (scalp_state == "SELL" and scalp_state[1] != "SELL")
exit_short_condition = input_strategy == "RSI" ? (rsi_entry_state == "BUY" and rsi_entry_state[1] != "BUY") : (scalp_state == "BUY" and scalp_state[1] != "BUY")
// --- Final Entry & SL/Target (NO TRAIL) ---
var float sl_long = na
var float sl_short = na
var float tg_long = na
var float tg_short = na
if long_condition and not na(swingLow)
sl_long := swingLow // SL = last swing low after entry candle close
entry_price = close
risk = entry_price - sl_long
tg_long := entry_price + (risk * rr_multiple)
strategy.entry("Long", strategy.long)
strategy.exit("Long_SL", from_entry="Long", stop=sl_long, limit=tg_long)
if short_condition and not na(swingHigh)
sl_short := swingHigh // SL = last swing high after entry candle close
entry_price = close
risk = sl_short - entry_price
tg_short := entry_price - (risk * rr_multiple)
strategy.entry("Short", strategy.short)
strategy.exit("Short_SL", from_entry="Short", stop=sl_short, limit=tg_short)
if exit_long_condition
strategy.close("Long")
if exit_short_condition
strategy.close("Short")
// --- Visuals (optional, for clarity) ---
barcolor(long_condition ? color.green : short_condition ? color.red : na)
plot(ma_avg, "MA Avg", color=color.blue, linewidth=2)