Strategi perdagangan kuantitatif berdasarkan rata-rata pergerakan dan trailing stop loss rentang sebenarnya rata-rata


Tanggal Pembuatan: 2023-12-08 15:53:22 Akhirnya memodifikasi: 2023-12-08 15:53:22
menyalin: 1 Jumlah klik: 696
1
fokus pada
1621
Pengikut

Strategi perdagangan kuantitatif berdasarkan rata-rata pergerakan dan trailing stop loss rentang sebenarnya rata-rata

Ringkasan

Strategi ini diberi nama MADEFlex, yang merupakan strategi perdagangan kuantitatif yang fleksibel berdasarkan moving average envelope dan average real range trailing stop loss. Strategi ini menggabungkan indikator moving average envelope dan average real range trailing stop loss untuk mencapai solusi perdagangan kuantitatif yang fleksibel dan dapat dikontrol.

Prinsip Strategi

Inti dari strategi ini adalah Moving Average Line Envelope (MADE) indicator. Indikator MADE membentuk moving average (EMA) dengan mengalikan faktor persentase untuk melakukan pergeseran. Ketika harga menerobos jalur, menghasilkan sinyal jual; Ketika harga turun dari jalur, menghasilkan sinyal beli. Strategi ini menggabungkan indikator MADE dengan Average True Range (ATR) dengan mekanisme stop loss.

Secara khusus, indikator MADE terdiri dari 3 parameter: Periode, persentase naik perAb dan persentase turun perBl. Periode menentukan panjang siklus EMA. Jarak antara EMA dan naik terkontrol oleh faktor persentase.

Akhirnya, dengan menggabungkan sinyal indikator MADE dan ATR yang diikuti oleh penyaringan kondisi stop loss, menghasilkan sinyal beli dan jual.

Analisis Keunggulan

Strategi MADEFlex memiliki keuntungan sebagai berikut:

  1. Kombinasi sinyal indikator dan mekanisme penghentian lebih dapat diandalkan. Indikator MADE sendiri mudah menghasilkan sinyal yang salah. Kombinasi dengan ATR penghentian tailing dapat secara efektif menyaring sebagian dari kebisingan.

  2. Ada banyak parameter yang dapat disesuaikan, kontrolnya fleksibel. Parameter indikator MADE dan parameter ATR dapat disesuaikan, kontrol jumlah dan kualitas sinyal.

  3. Mendukung operasi terbalik. Bisa melakukan perdagangan terbalik melalui saklar terbalik, memperkaya skenario penggunaan strategi.

  4. Stopper visual Intuitif. Dengan menggambar garis stop loss, intuitif menilai efek stop loss.

Analisis risiko

Strategi MADEFlex juga memiliki risiko sebagai berikut:

  1. Parameter indikator MADE yang tidak tepat dapat menghasilkan banyak sinyal kesalahan. Perlu tes yang cermat untuk menentukan parameter yang tepat.

  2. ATR yang terlalu longgar dapat melewatkan kesempatan untuk berhenti. Disarankan untuk melakukan tes untuk menentukan ATR yang tepat.

  3. Operasi reversal berisiko tinggi. Terutama dalam situasi yang sangat fluktuatif, operasi reversal dapat meningkatkan risiko kerugian. Perlu digunakan dengan hati-hati.

  4. Tidak adanya stop loss dapat menyebabkan kerugian yang lebih besar. Dalam kasus ekstrem, tidak adanya perlindungan stop loss dapat menyebabkan kerugian yang lebih besar.

Arah optimasi

Strategi MADEFlex dapat dioptimalkan dari arah berikut:

  1. Mengoptimalkan parameter MADE, meningkatkan kualitas sinyal. Dapat menguji berbagai parameter periodik, persentase, dan menemukan kombinasi parameter yang lebih andal.

  2. Mengoptimalkan parameter ATR stop loss, untuk mencapai efek stop loss yang lebih baik. Dapat menguji siklus ATR dan ATR multiples, untuk menentukan kombinasi yang lebih tepat.

  3. Menambahkan kondisi penyaringan lainnya untuk mengurangi lebih jauh sinyal yang salah. Misalnya, kombinasi indikator tingkat fluktuasi untuk lebih lanjut memfilter sinyal.

  4. Menambahkan strategi stop-loss, stop-loss keluar setelah keuntungan mencapai tingkat tertentu. Dapat mengunci keuntungan, mengendalikan risiko.

  5. Parameter pengoptimalan dinamis yang digabungkan dengan metode pembelajaran mesin. Menggunakan metode seperti reinforcement learning untuk mengoptimalkan parameter secara real-time, membuat strategi lebih fleksibel.

Meringkaskan

Strategi MADEFlex berhasil menggabungkan sinyal perdagangan dari Moving Average Envelope Indicator dan Metode Average Real Range Trailing Stop Loss. Dengan parameter yang dapat disesuaikan, solusi perdagangan kuantitatif yang dapat dikontrol secara fleksibel dapat dicapai. Strategi ini memiliki keandalan yang tinggi, kemampuan kontrol yang kuat, dan cocok untuk digunakan dan dioptimalkan oleh pengguna dengan basis kuantitatif tertentu. Dengan pengoptimalan lebih lanjut, diharapkan untuk menghasilkan kinerja strategi yang lebih signifikan.

Kode Sumber Strategi
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 27/09/2022
// Moving Average Displaced Envelope. These envelopes are calculated 
// by multiplying percentage factors with their displaced expotential 
// moving average (EMA) core.
// How To Trade Using:
// Adjust the envelopes percentage factors to control the quantity and 
// quality of the signals. If a previous high goes above the envelope 
// a sell signal is generated. Conversely, if the previous low goes below 
// the envelope a buy signal is given.
//
// Average True Range Trailing Stops Strategy, by Sylvain Vervoort 
// The related article is copyrighted material from Stocks & Commodities Jun 2009 
//
// ATR TS used by filter for MADE signals.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title='Moving Average Displaced Envelope & ATRTS', shorttitle='MADE+ATR', overlay=true)
tradeDirection = input.string('Both', title='Trade Direction', options=['Both', 'Long', 'Short'])
Price = input(title='Source', defval=close)
Period = input.int(defval=9, minval=1)
perAb = input.float(title='Percent above', defval=.5, minval=0.01, step=0.1)
perBl = input.float(title='Percent below', defval=.5, minval=0.01, step=0.1)
disp = input.int(title='Displacement', defval=13, minval=1)

nATRPeriod = input(15)
nATRMultip = input(2)
useATR = input(false, title='ATR Filter')
reverse = input(false, title='Trade reverse')

longAllowed = tradeDirection == 'Long' or tradeDirection == 'Both'
shortAllowed = tradeDirection == 'Short' or tradeDirection == 'Both'
pos = 0
sEMA = ta.ema(Price, Period)
top = sEMA[disp] * ((100 + perAb) / 100)
bott = sEMA[disp] * ((100 - perBl) / 100)

xATR = ta.atr(nATRPeriod)
xHHs =ta.sma(ta.highest(nATRPeriod), nATRPeriod)
xLLs =ta.sma(ta.lowest(nATRPeriod),nATRPeriod)
nSpread = (xHHs - xLLs) / 2
nLoss = nATRMultip * xATR
var xATRTrailingStop = 0.0
xATRTrailingStop := close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), close - nLoss) :
     close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), close + nLoss) : 
     close > nz(xATRTrailingStop[1], 0) ? close - nLoss : close + nLoss

ATRLong = close > xATRTrailingStop ? true : false
ATRShort = close < xATRTrailingStop ? true : false

iff_1 = close > top ? 1 : pos[1]
pos := close < bott ? -1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
clr = strategy.position_size
if possig == 1 
    if longAllowed and ATRLong
        strategy.entry('Long', strategy.long)
    else
        if ATRLong or strategy.position_size > 0
            strategy.close_all()
if possig == -1 
    if shortAllowed and ATRShort
        strategy.entry('Short', strategy.short)
    else    
        if ATRShort or strategy.position_size < 0
            strategy.close_all()
if possig == 0
    strategy.close_all()
    
plot(xATRTrailingStop[1], color=color.blue, title='ATR Trailing Stop')
barcolor(clr < 0 ? #b50404 : clr > 0 ? #079605 : #0536b3)