Strategi Perdagangan Kuantitatif Multi-Indikator - Strategi Super Indikator 7-in-1

SMA EMA RSI MACD
Tanggal Pembuatan: 2024-05-23 18:20:25 Akhirnya memodifikasi: 2024-05-23 18:20:25
menyalin: 0 Jumlah klik: 764
1
fokus pada
1617
Pengikut

Strategi Perdagangan Kuantitatif Multi-Indikator - Strategi Super Indikator 7-in-1

Ringkasan

Strategi perdagangan kuantitatif yang disebut “Strategi Super 7-in-1” ini menggabungkan tujuh indikator teknis populer, termasuk RSI, MACD, Stochastic, Bollinger Bands, SMA, EMA, dan Volume. Dengan menggabungkan sinyal dari indikator ini, strategi ini bertujuan untuk mengidentifikasi keadaan overbought dan oversold di pasar untuk menemukan peluang jual beli terbaik. Strategi ini juga menyiapkan stop loss dan penyaringan berbasis waktu untuk mengoptimalkan eksekusi perdagangan dan manajemen risiko.

Prinsip Strategi

Prinsip inti dari strategi ini adalah penggunaan komposit dari beberapa indikator teknis untuk mendapatkan sinyal perdagangan yang lebih komprehensif dan andal. Setiap indikator memiliki metode perhitungan dan sudut pandang yang unik untuk menafsirkan pergerakan pasar. Misalnya, RSI mengukur kecepatan dan intensitas perubahan harga; MACD menilai tren berdasarkan perpotongan rata-rata bergerak; Indikator acak menentukan tingkat overbought dan oversold dengan membandingkan harga amortisasi dengan kisaran harga dalam jangka waktu tertentu; dan Bollinger Bands mengatur tren bawah berdasarkan volatilitas harga.

Strategi ini menilai kekuatan sinyal dari beberapa indikator secara komprehensif dengan menetapkan titik terendah. Ketika indikator mencapai kondisi kombinasi tertentu, sinyal jual beli akan dihasilkan. Strategi ini juga mempertimbangkan informasi pasar lainnya, seperti volume transaksi, untuk mengkonfirmasi pergerakan harga. Selain itu, strategi ini menggabungkan manajemen dan pengoptimalan risiko, seperti stop loss dan penyaringan waktu perdagangan, untuk mengendalikan risiko sambil menangkap peluang.

Analisis Keunggulan

Keunggulan utama dari strategi 7+1 Super Indicator adalah komprehensivitas dan fleksibilitasnya. Dengan mempertimbangkan beberapa indikator secara komprehensif, strategi dapat memverifikasi sinyal pasar dari berbagai sudut, meningkatkan probabilitas menghasilkan peluang perdagangan yang dapat diandalkan. Bahkan jika ada indikator individu yang mengirimkan sinyal yang menyesatkan, strategi masih dapat membuat keputusan yang benar asalkan sebagian besar indikator berorientasi sama.

Selain itu, strategi ini juga menyediakan banyak pilihan parameter, yang dapat disesuaikan oleh pengguna sesuai dengan preferensi dan gaya perdagangan mereka sendiri. Kombinasi parameter yang berbeda dapat menghasilkan sensitivitas dan frekuensi sinyal yang berbeda, sesuai dengan kondisi pasar yang berbeda.

Analisis risiko

Meskipun ada banyak keuntungan dari strategi ini, ada juga beberapa risiko potensial. Pertama, kinerja strategi sangat tergantung pada keabsahan parameter yang dipilih. Pengaturan parameter yang tidak tepat dapat menyebabkan sinyal terdistorsi, sehingga menghasilkan keputusan perdagangan yang salah. Kedua, strategi ini didasarkan pada data historis dan hukum statistik, sementara pasar berubah dengan cepat, dan hukum masa lalu tidak selalu berlaku untuk masa depan.

Selain itu, dalam situasi ekstrem, beberapa indikator dapat gagal secara bersamaan, menyebabkan strategi untuk membuat keputusan yang salah. Strategi juga dapat sering menghasilkan sinyal yang bertentangan di pasar yang bergoyang, sehingga menyebabkan overtrading dan pengurangan dana yang cepat.

Arah optimasi

Untuk lebih meningkatkan keandalan strategi dan potensi penghasilannya, optimalisasi dapat dilakukan dalam beberapa hal berikut:

  1. Untuk melakukan pengujian dan optimalisasi yang lebih sistematis terhadap parameter dari berbagai indikator, untuk menemukan kombinasi parameter yang optimal.
  2. Memperkenalkan lebih banyak indikator non-harga, seperti sentiment, fundamental, dan lain-lain, untuk memperluas perspektif strategi.
  3. Stop Stop Loss Logic lebih dalam, mengatur stop stop loss rasio secara dinamis, atau menggunakan stop loss bergerak.
  4. Pertimbangan untuk memasukkan peristiwa tertentu (seperti publikasi data ekonomi penting) dalam penyaringan periode transaksi.
  5. Konfirmasi kedua terhadap sinyal yang dihasilkan oleh strategi, misalnya dengan mempertimbangkan kinerja indikator dalam beberapa kerangka waktu.

Dengan optimasi ini, strategi diharapkan dapat meningkatkan kemampuannya untuk menghadapi lingkungan pasar yang kompleks, memberikan keuntungan yang lebih kuat bagi pengguna, sambil mempertahankan keunggulan.

Meringkaskan

Secara keseluruhan, 7 in 1 Super Indicator Strategy adalah strategi perdagangan kuantitatif yang kuat dan dirancang secara menyeluruh. Ini menggabungkan 7 indikator teknis yang umum digunakan secara cerdik, mampu menangkap denyut nadi pasar dari berbagai sudut, memberikan sinyal jual beli yang andal bagi pedagang.

Namun, kinerja strategi masih dipengaruhi oleh faktor-faktor seperti pilihan parameter, lingkungan pasar, dan lain-lain, sehingga perlu disesuaikan oleh pedagang berdasarkan pengalaman dan hasil pengukuran mereka sendiri. Dengan memperkenalkan lebih banyak dimensi indikator, mengoptimalkan logika stop-loss, dan menyempurnakan penyaringan periode perdagangan, strategi ini diharapkan dapat meningkatkan ketahanan terhadap risiko dan potensi keuntungan, menjadi asisten yang baik bagi pedagang kuantitatif.

Kode Sumber Strategi
/*backtest
start: 2024-04-22 00:00:00
end: 2024-05-22 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title='Super Indicator 7 in 1', shorttitle='Super Indicator 7 in 1', overlay=true, initial_capital=100, pyramiding=0, default_qty_value=10000, default_qty_type=strategy.cash)

// Defining indicator parameters
show_plots = input(false, title="Show Plots", group="Visibility")
show_indicators = input(false, title="Show Indicators", group="Visibility")
show_trades = input(true, title="Show Trades", group="Visibility")
show_labels = input(false, title="Show Labels", group="Visibility")
start_hour = input.int(0, title="Start Hour (24h format)", group="Time-Based Filter", minval=0, maxval=24)
end_hour = input.int(24, title="End Hour (24h format)", group="Time-Based Filter", minval=0, maxval=24)
stop_trading = input(false, "Stop Trading", group="Time-Based Filter")
trade_time = (hour >= start_hour and hour <= end_hour)
bgcolor(trade_time and (start_hour != 0 or end_hour != 24) ? color.new(color.blue, 90) : na)

volume_length = input.int(1, title="Volume SMA Length", group="Volume", minval=1, step=1)
sma_period = input.int(50, title="SMA Period", group="Moving Averages")
ema_period = input.int(50, title="EMA Period", group="Moving Averages")
bb_length = input.int(20, title='Bollinger Bands Length', group="Bollinger Bands")
mult = input.float(2.0, title='Bollinger Bands MultFactor', group="Bollinger Bands")
src = input(close, title='Bollinger Bands Source', group="Bollinger Bands")
rsi_length = input.int(14, title='RSI Length', group="RSI")
macd_fast_length = input.int(12, title='MACD Fast Length', group="MACD")
macd_slow_length = input.int(26, title='MACD Slow Length', group="MACD")
macd_signal_length = input.int(9, title='MACD Signal Smoothing', group="MACD")
stoch_length = input.int(14, title='Stochastic Length', group="Stochastic")
smoothK = input.int(3, title='Stochastic %K Smoothing', group="Stochastic")
smoothD = input.int(3, title='Stochastic %D Smoothing', group="Stochastic")
tp_percent = input.float(0.14, title="Take Profit (%)", group="Trade Settings", minval=0.01, step=0.01) / 100
sl_percent = input.float(0.25, title="Stop Loss (%)", group="Trade Settings", minval=0.01, step=0.01) / 100

// Calculating indicators
dev = mult * ta.stdev(src, bb_length)
upper = ta.sma(src, bb_length) + dev
lower = ta.sma(src, bb_length) - dev
rsi_value = ta.rsi(close, rsi_length)
stoch_value = ta.stoch(close, high, low, stoch_length)
[macd_line, signal_line, _] = ta.macd(close, macd_fast_length, macd_slow_length, macd_signal_length)
k = ta.sma(stoch_value, smoothK)
d = ta.sma(k, smoothD)
sma = ta.sma(close, sma_period)
ema = ta.ema(close, ema_period)
volume_ma = ta.sma(volume, volume_length)
volume_condition = volume >= volume_ma

// Signal definitions(-10%, Normal, +10% and ! failed indicator)
min_buy_signal = rsi_value < 33 and rsi_value > 30 and stoch_value < 22 and stoch_value > 20 and low < lower and macd_line < 0 and volume_condition
min_sell_signal = rsi_value > 63 and rsi_value < 70 and stoch_value > 72 and stoch_value < 80 and high > upper and macd_line > 0 and volume_condition
buy_signal = rsi_value < 30 and stoch_value < 20 and low < lower and macd_line < 0 and volume_condition
sell_signal = rsi_value > 70 and stoch_value > 80 and high > upper and macd_line > 0 and volume_condition
max_buy_signal = rsi_value < 27 and stoch_value < 18 and low < lower and macd_line < 0 and volume_condition
max_sell_signal = rsi_value > 77 and stoch_value > 80 and high > upper and macd_line > 0 and volume_condition
buy_condition = (rsi_value < 30 ? 1 : 0) + (stoch_value < 20 ? 1 : 0) + (macd_line < 0 ? 1 : 0) + (low < lower ? 1 : 0) + (volume_condition ? 1 : 0) == 4
sell_condition = (rsi_value > 70 ? 1 : 0) + (stoch_value > 80 ? 1 : 0) + (macd_line > 0 ? 1 : 0) + (high > upper ? 1 : 0) + (volume_condition ? 1 : 0) == 4

// Plotting buy and sell signals
plotshape(show_plots and min_buy_signal, style=shape.triangleup, location=location.belowbar, color=#00ffb7, size=size.small, title="Min Buy Signal")
plotshape(show_plots and min_sell_signal, style=shape.triangledown, location=location.abovebar, color=#efa803, size=size.small, title="Min Sell Signal")
plotshape(show_plots and buy_signal and not max_buy_signal, style=shape.triangleup, location=location.belowbar, color=#004cff, size=size.small, title="Buy Signal")
plotshape(show_plots and sell_signal and not max_sell_signal, style=shape.triangledown, location=location.abovebar, color=#ffff00, size=size.small, title="Sell Signal")
plotshape(show_plots and max_buy_signal, style=shape.triangleup, location=location.belowbar, color=#1eff00, size=size.small, title="Max Buy Signal")
plotshape(show_plots and max_sell_signal, style=shape.triangledown, location=location.abovebar, color=#ff0000, size=size.small, title="Max Sell Signal")
plotshape(show_plots and buy_condition and not min_buy_signal and not buy_signal and not max_buy_signal, style=shape.triangleup, location=location.belowbar, color=#ffffff, size=size.small, title="Buy Condition")
plotshape(show_plots and sell_condition and not min_sell_signal and not sell_signal and not max_sell_signal, style=shape.triangledown, location=location.abovebar, color=#ffffff, size=size.small, title="Sell Condition")

// Plotting moving averages
plot(show_indicators ? sma : na, color=#fc0000, linewidth=2, title="SMA")
plot(show_indicators ? ema : na, color=#00aaff, linewidth=2, title="EMA")

// Crossover labels for moving averages
BullCross = ta.crossover(ema, sma)
BearCross = ta.crossunder(ema, sma)

if (show_labels)
    if (BullCross)
        label.new(bar_index, sma, color=color.green, textcolor=color.white, style=label.style_cross, size=size.huge)
    if (BearCross)
        label.new(bar_index, sma, color=color.red, textcolor=color.white, style=label.style_cross, size=size.huge)

// Calculating take profit and stop loss
long_take_profit = close * (1 + tp_percent)
long_stop_loss = close * (1 - sl_percent)
short_take_profit = close * (1 - tp_percent)
short_stop_loss = close * (1 + sl_percent)

// Opening long and short orders based on signals
if (show_trades and trade_time and not stop_trading)
    if (min_buy_signal or buy_signal or max_buy_signal or buy_condition)
        strategy.entry("Open Long", strategy.long)
        strategy.exit("TP/SL Long", limit=long_take_profit, stop=long_stop_loss)
    if (min_sell_signal or sell_signal or max_sell_signal or sell_condition)
        strategy.entry("Open Short", strategy.short)
        strategy.exit("TP/SL Short", limit=short_take_profit, stop=short_stop_loss)