Sistem Perdagangan Kuantitatif Adaptif dan Momentum (AVMQTS)

ATR MACD SMA TP SL
Tarikh penciptaan: 2024-11-27 14:20:24 Akhirnya diubah suai: 2024-11-27 14:20:24
Salin: 1 Bilangan klik: 459
1
fokus pada
1617
Pengikut

Sistem Perdagangan Kuantitatif Adaptif dan Momentum (AVMQTS)

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan yang beradaptasi sendiri yang menggabungkan kadar turun naik dan penunjuk momentum untuk menangkap trend pasaran melalui kombinasi serentak pelbagai petunjuk teknikal. Strategi ini menggunakan penunjuk ATR untuk memantau turun naik pasaran, MACD untuk menilai momentum trend, dan menggabungkan penunjuk dinamika harga untuk mengesahkan isyarat perdagangan, dan menetapkan mekanisme berhenti dan kehilangan yang fleksibel. Sistem ini sangat beradaptasi dan dapat menyesuaikan frekuensi perdagangan dan kawalan kedudukan secara automatik mengikut keadaan pasaran.

Prinsip Strategi

Strategi ini bergantung kepada sistem tiga indikator sebagai logik perdagangan utama: pertama menggunakan ATR untuk mengukur keadaan kadar turun naik pasaran, memberikan rujukan turun naik untuk keputusan perdagangan; kedua menggunakan MACD untuk menangkap titik perubahan trend, dan persilangan MACD dengan garis cepat dan lambat digunakan sebagai isyarat pemicu perdagangan utama; ketiga, verifikasi ulang menggunakan indikator pergerakan harga, untuk mengesahkan kekuatan trend dengan melihat perubahan harga sebelum tempoh yang relatif. Sistem ini juga menyertakan 50 hari rata-rata sebagai penapis trend, hanya di atas garis rata-rata harga yang dibenarkan untuk melakukan lebih banyak, sebaliknya dibenarkan.

Kelebihan Strategik

  1. Pemverifikasi silang pelbagai petunjuk: meningkatkan kebolehpercayaan isyarat perdagangan dengan cara menggabungkan petunjuk dalam tiga dimensi kadar turun naik, trend dan momentum.
  2. Adaptif: Strategi boleh disesuaikan dengan keadaan pasaran yang berubah-ubah dan menyesuaikan diri dengan keadaan pasaran yang berbeza.
  3. Kawalan risiko yang sempurna: Peratusan stop loss dan stop loss telah ditetapkan, mengawal risiko perdagangan tunggal dengan berkesan.
  4. Frekuensi dagangan boleh dikawal: Hindari terlalu banyak dagangan dengan menetapkan selang dagangan minimum dan mekanisme pertukaran isyarat.
  5. Struktur sistem yang jelas: Kod bermodulasi tinggi, setiap fungsi modul sempadan jelas, memudahkan penyelenggaraan dan pengoptimuman.

Risiko Strategik

  1. Risiko pasaran goyah: Dalam pasaran goyah, beberapa isyarat palsu mungkin dihasilkan yang menyebabkan kerugian berturut-turut.
  2. Risiko slippage: Dalam tempoh turun naik yang kuat, harga transaksi sebenar mungkin jauh berbeza dengan harga isyarat.
  3. Sensitiviti parameter: Kaedah ini menggunakan pelbagai petunjuk teknikal, dan kebolehpastian parameter yang ditetapkan secara langsung mempengaruhi prestasi strategi.
  4. Kepercayaan kepada keadaan pasaran: Strategi ini berfungsi dengan baik di pasaran yang jelas bercenderungan, tetapi mungkin kurang berkesan dalam keadaan pasaran lain.

Arah pengoptimuman strategi

  1. Memperkenalkan mekanisme pengenalan persekitaran pasaran: penambahan penunjuk kekuatan trend, konfigurasi parameter yang berbeza untuk keadaan pasaran yang berbeza.
  2. Optimumkan mekanisme hentian hentian: boleh mempertimbangkan untuk menyesuaikan nisbah hentian hentian mengikut dinamik ATR, untuk menjadikannya lebih sesuai dengan turun naik pasaran.
  3. Meningkatkan pengurusan kedudukan: disyorkan untuk memperkenalkan sistem pengurusan kedudukan dinamik berdasarkan kadar turun naik, mengurangkan saiz dagangan dengan sewajarnya semasa turun naik yang tinggi.
  4. Tambah lebih banyak syarat penapisan: boleh dipertimbangkan untuk meningkatkan penapisan seperti jumlah lalu lintas, kadar turun naik, dan meningkatkan kualiti isyarat.

ringkaskan

Strategi ini adalah sistem perdagangan kuantitatif yang direka dengan logik dan logik, yang menangkap tren pasaran dengan berkesan melalui penggunaan gabungan pelbagai petunjuk teknikal. Sistem ini mempunyai pertimbangan yang teliti dalam mengawal risiko dan pelaksanaan perdagangan, dan mempunyai kepraktisan yang baik. Walaupun terdapat beberapa risiko yang berpotensi, dengan arah pengoptimuman yang disyorkan, kestabilan dan keuntungan strategi dijangka dapat ditingkatkan lagi.

Kod sumber strategi
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[ETH] Volatility & Momentum Adaptive Strategy", shorttitle="Definitive 1 day Ethereum Signal", overlay=true, initial_capital=10000, currency=currency.USD)

// === Input Parameters === //
trade_size = input.float(5, title="Trade Size (ETH)")
atr_length = input.int(8, minval=1, title="ATR Length")
macd_fast = input.int(8, minval=1, title="MACD Fast Length")
macd_slow = input.int(7, minval=1, title="MACD Slow Length")
macd_signal = input.int(9, minval=1, title="MACD Signal Length")
momentum_length = input.int(37, title="Momentum Length")
stop_loss_percent = input.float(9.9, title="Stop Loss Percentage (%)")
take_profit_percent = input.float(9.0, title="Take Profit Percentage (%)")
alternate_signal = input.bool(true, title="Alternate Buy/Sell Signals")

// === Indicators === //
// ATR to measure volatility
atr = ta.atr(atr_length)

// MACD for trend momentum
[macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal)
macd_cross_up = ta.crossover(macd_line, signal_line)
macd_cross_down = ta.crossunder(macd_line, signal_line)

// Momentum
momentum = ta.mom(close, momentum_length)

// === Signal Control Variables === //
var bool last_signal_long = na
var int last_trade_bar = na
min_bars_between_trades = 5 // Adjust for minimal trade frequency control
time_elapsed = na(last_trade_bar) or (bar_index - last_trade_bar) >= min_bars_between_trades

// === Buy and Sell Conditions === //
// Buy when:
buy_signal = (macd_cross_up and momentum > 0 and close > ta.sma(close, 50) and time_elapsed)

// Sell when:
sell_signal = (macd_cross_down and momentum < 0 and close < ta.sma(close, 50) and time_elapsed)

// Enforce alternate signals if selected
if alternate_signal
    buy_signal := buy_signal and (na(last_signal_long) or not last_signal_long)
    sell_signal := sell_signal and (not na(last_signal_long) and last_signal_long)

// === Trade Execution === //
// Buy Position
if (buy_signal)
    if strategy.position_size < 0
        strategy.close("Short")
    strategy.entry("Long", strategy.long, qty=trade_size)
    last_signal_long := true
    last_trade_bar := bar_index

// Sell Position
if (sell_signal)
    if strategy.position_size > 0
        strategy.close("Long")
    strategy.entry("Short", strategy.short, qty=trade_size)
    last_signal_long := false
    last_trade_bar := bar_index

// === Stop Loss and Take Profit === //
if strategy.position_size > 0
    long_take_profit = strategy.position_avg_price * (1 + take_profit_percent / 100)
    long_stop_loss = strategy.position_avg_price * (1 - stop_loss_percent / 100)
    strategy.exit("TP/SL Long", from_entry="Long", limit=long_take_profit, stop=long_stop_loss)

if strategy.position_size < 0
    short_take_profit = strategy.position_avg_price * (1 - take_profit_percent / 100)
    short_stop_loss = strategy.position_avg_price * (1 + stop_loss_percent / 100)
    strategy.exit("TP/SL Short", from_entry="Short", limit=short_take_profit, stop=short_stop_loss)

// === Visual Signals === //
plotshape(series=buy_signal and time_elapsed, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sell_signal and time_elapsed, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")