Rata-rata pergerakan eksponensial dikombinasikan dengan trailing stop loss dan persentase stop loss strategi perdagangan saham kuantitatif


Tanggal Pembuatan: 2024-01-03 16:25:54 Akhirnya memodifikasi: 2024-01-03 16:25:54
menyalin: 0 Jumlah klik: 699
1
fokus pada
1621
Pengikut

Rata-rata pergerakan eksponensial dikombinasikan dengan trailing stop loss dan persentase stop loss strategi perdagangan saham kuantitatif

Ringkasan

Inti dari strategi ini adalah menggunakan rata-rata bergerak rata-rata indeks sebagai sinyal jual beli, digabungkan dengan stop loss dan stop loss persentase untuk mengunci keuntungan dan mengendalikan risiko. Strategi ini sederhana untuk diterapkan dan berlaku untuk perdagangan kuantitatif saham dan produk keuangan lainnya.

Prinsip Strategi

  1. Perhitungan EMA cepat dan EMA lambat, EMA cepat memiliki periode 20 hari dan EMA lambat memiliki periode 50 hari. Sinyal beli dihasilkan ketika EMA cepat melewati EMA lambat; Sinyal jual dihasilkan ketika EMA cepat melewati EMA lambat.

  2. Setel trailing stop loss setelah masuk, masing-masing setel multi-posisi trailing stop loss dan persentase trailing stop loss untuk posisi kosong, misalnya 7%. Trailing stop loss akan secara otomatis menyesuaikan setiap K-line, mengunci keuntungan maksimum yang mungkin.

  3. Pada saat yang sama mengatur posisi stop loss, sesuai dengan arah memegang posisi dan harga masuk masing-masing mengatur persentase dari stop loss multi posisi dan stop loss posisi kosong, misalnya 2%.

  4. Bandingkan harga stop loss dan stop loss, pilih posisi stop loss yang lebih dekat dengan harga pasar untuk transaksi ini, dan kirimkan surat stop loss.

Keunggulan Strategis

  1. Sinyal rata-rata bergerak sederhana, mudah dipahami, dan mudah diterapkan.

  2. Stop Loss Tracking dapat mengunci keuntungan maksimum, sekaligus mencegah kesalahan penilaian yang menyebabkan kerugian yang tidak perlu.

  3. Persentase Stop Loss dapat disesuaikan secara intuitif untuk mengontrol kerugian maksimum per transaksi.

  4. Kombinasi trailing stop loss dan fixed stop loss dapat mengunci keuntungan dan mengendalikan risiko.

Risiko dan Pengendalian

  1. Strategi Moving Average mudah menghasilkan sinyal palsu, memperkenalkan kondisi filter yang lebih kuat.

  2. Penghentian kerugian yang ditandai dengan tailspin kadang-kadang terjadi terlalu dini, dan penghentian kerugian dapat dikurangi dengan tepat.

  3. Penetapan posisi stop loss yang tidak tepat mungkin terlalu radikal atau konservatif, perlu diuji untuk menyesuaikan parameter persentase.

  4. Stop loss yang dilakukan secara mekanis dapat melewatkan peluang untuk membalikkan pasar, dan dapat digabungkan dengan indikator teknis untuk menilai stop loss.

Optimalkan Pikiran

  1. Mencoba kombinasi EMA dengan parameter yang berbeda untuk mencari keseimbangan yang optimal.

  2. Menambahkan sinyal filter palsu pada indikator seperti volume transaksi.

  3. Uji lebih banyak saham untuk menemukan parameter stop loss yang tepat.

  4. Cobalah untuk menambahkan stop loss yang bergerak, dan sesuaikan posisi stop loss dengan pasar.

  5. Pertimbangan Stop Loss Terkait Indikator RSI

Meringkaskan

Strategi ini mengintegrasikan sinyal perdagangan rata-rata bergerak, trailing stop loss dan stop loss persentase, dapat diterapkan pada berbagai jenis saham dan komoditas melalui optimasi parameter, dan menghasilkan keuntungan yang stabil, sementara risiko dikontrol secara ketat, layak untuk penelitian dan pengoptimalan terus-menerus dari para pedagang kuantitatif.

Kode Sumber Strategi
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-02 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © wouterpruym1828

//@version=5
strategy(title=" Combining Trailing Stop and Stop loss (% of instrument price)",
     overlay=true, pyramiding=1, shorttitle="TSL&SL%")

//INDICATOR SECTION

// Indicator Input options+
i_FastEMA = input.int(title = "Fast EMA period", minval = 0, defval = 20)
i_SlowEMA = input.int(title = "Slow EMA period", minval = 0, defval = 50)
     
// Calculate moving averages
fastEMA = ta.ema(close, i_FastEMA)
slowEMA = ta.ema(close, i_SlowEMA)

// Plot moving averages
plot(fastEMA, title="Fast SMA", color=color.blue)
plot(slowEMA, title="Slow SMA", color=color.orange)




//STRATEGY SECTION  

// Calculate trading conditions
buy  = ta.crossover(fastEMA, slowEMA)
sell = ta.crossunder(fastEMA, slowEMA)

// STEP 1:
// Configure trail stop loss level with input options (optional)

longTrailPerc = input.float(title="Long Trailing Stop (%)", minval=0.0, step=0.1, defval=7) * 0.01

shortTrailPerc = input.float(title="Short Trailing Stop (%)", minval=0.0, step=0.1, defval=7) * 0.01

//Configure stop loss level with input options (optional)

longStopPerc = input.float(title="Long Stop Loss (%)", minval=0.0, step=0.1, defval=2)*0.01

shortStopPerc = input.float(title="Short Stop Loss (%)", minval=0.0, step=0.1, defval=2)*0.01


// STEP 2:
// Determine trail stop loss prices
longTrailPrice = 0.0, shortTrailPrice = 0.0

longTrailPrice := if (strategy.position_size > 0)
    stopValue = high * (1 - longTrailPerc)
    math.max(stopValue, longTrailPrice[1])
else
    0

shortTrailPrice := if (strategy.position_size < 0)
    stopValue = low * (1 + shortTrailPerc)
    math.min(stopValue, shortTrailPrice[1])
else
    999999

// Determine stop loss prices
entryPrice = 0.0

entryPrice := strategy.opentrades.entry_price(strategy.opentrades - 1)


longLossPrice = entryPrice * (1 - longStopPerc)

shortLossPrice = entryPrice * (1 + shortStopPerc)


// Plot stop loss values for confirmation

plot(series=(strategy.position_size > 0) ? longTrailPrice : na,
     color=color.fuchsia, style=plot.style_cross,
     linewidth=2, title="Long Trail Stop")
plot(series=(strategy.position_size < 0) ? shortTrailPrice : na,
     color=color.fuchsia, style=plot.style_cross,
     linewidth=2, title="Short Trail Stop")

plot(series=(strategy.position_size > 0) ? longLossPrice : na,
     color=color.olive, style=plot.style_cross,
     linewidth=2, title="Long Stop Loss")
plot(series=(strategy.position_size < 0) ? shortLossPrice : na,
     color=color.olive, style=plot.style_cross,
     linewidth=2, title="Short Stop Loss")

// Submit entry orders
if (buy)
    strategy.entry("Buy", strategy.long)

if (sell)
    strategy.entry("Sell", strategy.short)


//Evaluating trailing stop or stop loss to use

longStopPrice = longTrailPrice < longLossPrice ? longLossPrice : longTrailPrice

shortStopPrice = shortTrailPrice > shortLossPrice ? shortLossPrice : shortTrailPrice

// STEP 3:
// Submit exit orders for stop price

if (strategy.position_size > 0)
    strategy.exit(id="Buy Stop", stop=longStopPrice)

if (strategy.position_size < 0)
    strategy.exit(id="Sell Stop", stop=shortStopPrice)