Sumber dimuat naik... memuat...

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

Penulis:ChaoZhang, Tarikh: 2024-05-23 18:20:25
Tag:SMAEMARSIMACD

img

Ringkasan

Strategi Super Indicator 7-in-1 adalah strategi perdagangan kuantitatif yang mengintegrasikan tujuh penunjuk teknikal yang popular, termasuk Indeks Kekuatan Relatif (RSI), Divergensi Convergensi Purata Bergerak (MACD), Osilator Stochastic, Pita Bollinger, Purata Bergerak Sederhana (SMA), Purata Bergerak Eksponensial (EMA), dan Volume. Dengan menggabungkan isyarat dari penunjuk ini, strategi ini bertujuan untuk mengenal pasti keadaan pasaran yang terlalu banyak dibeli dan terlalu banyak dijual dan menentukan peluang pembelian dan penjualan yang optimum. Strategi ini juga menggabungkan mengambil keuntungan, hentikan kerugian, dan penapis berdasarkan masa untuk mengoptimumkan pelaksanaan perdagangan dan pengurusan risiko.

Prinsip Strategi

Prinsip teras strategi ini adalah untuk memanfaatkan pelbagai penunjuk teknikal untuk mendapatkan isyarat perdagangan yang lebih komprehensif dan boleh dipercayai. Setiap penunjuk mempunyai kaedah pengiraan dan perspektif yang unik untuk menafsirkan trend pasaran. Sebagai contoh, RSI mengukur kelajuan dan kekuatan pergerakan harga; MACD menentukan trend berdasarkan persilangan purata bergerak; Osilator Stochastic menilai tahap overbought dan oversold dengan membandingkan harga penutupan dengan julat harga dalam tempoh tertentu; dan Bollinger Bands menetapkan had atas dan bawah berdasarkan turun naik harga.

Strategi ini menjana isyarat beli dan jual dengan menetapkan ambang dan menilai kekuatan gabungan isyarat beberapa penunjuk. Apabila penunjuk mencapai kombinasi keadaan tertentu, ia mencetuskan isyarat perdagangan. Strategi ini juga mempertimbangkan maklumat pasaran lain, seperti jumlah, untuk mengesahkan pergerakan harga. Di samping itu, strategi ini menggabungkan pengurusan risiko dan langkah pengoptimuman, termasuk mengambil keuntungan, stop loss, dan penapis sesi perdagangan, untuk merebut peluang sambil mengawal risiko.

Analisis Kelebihan

Kelebihan utama Super Indicator 7-in-1 Strategy terletak pada kepelbagaian dan fleksibiliti. Dengan mempertimbangkan beberapa penunjuk, strategi dapat mengesahkan isyarat pasaran dari sudut yang berbeza, meningkatkan kebarangkalian menghasilkan peluang perdagangan yang boleh dipercayai. Walaupun penunjuk individu menghasilkan isyarat yang menyesatkan, selagi kebanyakan penunjuk sejajar, strategi masih dapat membuat penilaian yang betul.

Selain itu, strategi ini menawarkan pelbagai pilihan parameter, yang membolehkan pengguna menyesuaikan tetapan mengikut pilihan dan gaya dagangan mereka. Gabungan parameter yang berbeza dapat menghasilkan isyarat dengan sensitiviti dan kekerapan yang berbeza, menyesuaikan diri dengan keadaan pasaran yang berbeza. Strategi ini juga merangkumi alat pengurusan risiko terbina dalam, seperti mengambil keuntungan, hentikan kerugian, dan penapis sesi dagangan, lebih meningkatkan kepraktisan dan kawalan.

Analisis Risiko

Walaupun terdapat banyak kelebihan, strategi ini juga mempunyai beberapa risiko yang berpotensi. Pertama, prestasi strategi sangat bergantung kepada munasabah parameter yang dipilih. Tetapan parameter yang tidak sesuai boleh menyebabkan gangguan isyarat dan keputusan perdagangan yang tidak betul. Kedua, strategi ini terutamanya bergantung pada data sejarah dan corak statistik, sementara keadaan pasaran sentiasa berubah, dan corak masa lalu mungkin tidak berlaku untuk masa depan.

Di samping itu, di bawah keadaan pasaran yang melampau, beberapa penunjuk boleh gagal pada masa yang sama, menyebabkan strategi membuat penilaian yang salah. Strategi ini juga boleh menghasilkan isyarat yang bertentangan di pasaran yang berbelit-belit, yang mengakibatkan perdagangan berlebihan dan keletihan modal yang cepat.

Arahan pengoptimuman

Untuk meningkatkan lagi kekuatan strategi dan potensi keuntungan, pertimbangkan aspek pengoptimuman berikut:

  1. Melakukan pengujian semula dan pengoptimuman parameter penunjuk yang lebih sistematik untuk mengenal pasti gabungan yang optimum.
  2. Memperkenalkan penunjuk lain bukan harga, seperti sentimen dan penunjuk asas, untuk memperluaskan perspektif strategi.
  3. Memperhalusi mengambil keuntungan dan logik berhenti kerugian dengan menetapkan peratusan dinamik atau menggunakan berhenti yang berturut-turut.
  4. Memasukkan pertimbangan untuk peristiwa tertentu (contohnya, pelepasan data ekonomi yang penting) ke dalam penapis sesi dagangan.
  5. Melakukan pengesahan sekunder isyarat yang dihasilkan oleh strategi, seperti menilai prestasi penunjuk dalam pelbagai jangka masa.

Melalui pengoptimuman ini, strategi ini dapat mengekalkan kelebihannya sambil meningkatkan lagi keupayaannya untuk menavigasi persekitaran pasaran yang kompleks, memberikan pulangan yang lebih konsisten untuk pengguna.

Ringkasan

Ringkasnya, Super Indicator 7-in-1 Strategy adalah strategi perdagangan kuantitatif yang kuat dan direka dengan baik. Ia dengan bijak menggabungkan tujuh penunjuk teknikal yang biasa digunakan untuk memahami dinamik pasaran dari pelbagai sudut dan menyediakan peniaga dengan isyarat beli dan jual yang boleh dipercayai. Pilihan parameter yang kaya dan alat pengurusan risiko terbina dalam menjadikan strategi fleksibel, mesra pengguna, dan dapat disesuaikan.

Walau bagaimanapun, prestasi strategi masih dipengaruhi oleh faktor-faktor seperti pemilihan parameter dan keadaan pasaran. Pedagang perlu menyesuaikan strategi berdasarkan pengalaman mereka sendiri dan hasil backtesting. Dengan memperkenalkan lebih banyak dimensi penunjuk, mengoptimumkan mengambil keuntungan dan logik stop loss, dan menyempurnakan penapis sesi dagangan, strategi dapat meningkatkan ketahanan risiko dan potensi keuntungan, menjadi alat yang berharga untuk pedagang kuantitatif.


/*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)


Berkaitan

Lebih lanjut