Strategi Dagangan EMA dan MACD dengan Stop Loss Trailing

Penulis:ChaoZhang, Tarikh: 2023-09-20 11:21:14
Tag:

Ringkasan

Strategi ini menggabungkan indikator purata bergerak eksponensial (EMA) dan purata bergerak divergensi konvergensi (MACD) untuk menjana isyarat perdagangan, dan menggunakan stop loss untuk mengawal risiko.

Logika Strategi

Apabila garis EMA pantas melintasi di atas garis EMA perlahan dan histogram MACD bertukar menjadi menurun, strategi akan panjang. Apabila kedudukan panjang wujud, garis stop loss ke bawah ditetapkan. Jika harga jatuh di bawah garis stop loss dengan peratusan tertentu, kedudukan panjang akan dihentikan.

Secara khusus, strategi ini menggunakan EMA 7 hari dan EMA 14 hari untuk membina EMA cepat dan perlahan. Nilai MACD diperoleh dengan mengurangkan EMA 26 hari dari EMA 12 hari, dan garis isyarat diperoleh dengan EMA 9 hari MACD. Apabila EMA 7 hari melintasi di atas EMA 14 hari dan nilai MACD melintasi di atas garis isyarat, kedudukan panjang dibuka. Kemudian garis stop loss ke bawah ditetapkan. Jika harga jatuh dari tahap yang lebih tinggi dengan peratusan tertentu, kedudukan panjang akan dihentikan.

Analisis Kelebihan

Strategi ini menggabungkan penunjuk EMA dan MACD, yang dapat menapis penembusan palsu dengan berkesan. EMA menilai arah trend dan MACD menentukan titik kemasukan. Menggabungkan keduanya dapat mengurangkan kekerapan perdagangan sambil meningkatkan kualiti isyarat. Stop loss yang menyusul dapat memaksimumkan perlindungan keuntungan yang ada dan menghentikan kerugian tepat pada masanya apabila pergerakan buruk besar berlaku.

Ujian belakang menunjukkan bahawa strategi ini boleh menjana pulangan yang baik walaupun di pasaran beruang, menunjukkan ketahanan tertentu. Frekuensi dagangan tidak tinggi, sesuai untuk pegangan jangka menengah hingga panjang. Parameter tempoh EMA boleh diselaraskan untuk menyesuaikan kecenderungan mengikuti trend.

Analisis Risiko

Strategi ini bergantung terutamanya pada penunjuk, dengan risiko ditipu. Semasa penyatuan terhad julat, EMA dan MACD boleh menghasilkan isyarat palsu yang berlebihan, yang membawa kepada perdagangan berlebihan dan kerugian.

Peningkatan tempoh EMA dengan betul dapat mengurangkan isyarat palsu. Penunjuk lain juga boleh digabungkan untuk menapis isyarat, seperti isyarat jumlah atau turun naik. Di samping itu, peratusan stop loss boleh diselaraskan berdasarkan keadaan pasaran, untuk mengimbangi risiko stop loss dan whipsaw.

Arahan pengoptimuman

  1. Gabungan tempoh EMA yang berbeza boleh diuji untuk mencari parameter yang lebih sesuai.

  2. Penunjuk lain seperti RSI, KD boleh ditambah untuk penapisan isyarat dan peningkatan kualiti.

  3. Peratusan Stop Loss boleh diselaraskan berdasarkan produk yang berbeza, dengan hentian trailing dinamik.

  4. Penembusan, pengenalan corak dan teknik lain boleh dimasukkan untuk peraturan kemasukan dan keluar yang lebih disesuaikan.

  5. Pembelajaran mesin boleh membantu meramalkan arah trend keseluruhan untuk membantu EMA.

Ringkasan

Secara keseluruhan, strategi ini agak kukuh, menghasilkan pulangan yang baik walaupun dalam pasaran beruang. Tetapi terdapat risiko whipsaw tertentu, yang memerlukan penyesuaian parameter dan penapisan isyarat. Pengoptimuman lanjut dengan penunjuk teknikal lain dan pembelajaran mesin dapat meningkatkannya dengan ketara. Ringkasnya, strategi ini menyediakan templat yang boleh dipercayai untuk perdagangan kuantitatif.


/*backtest
start: 2023-09-12 00:00:00
end: 2023-09-19 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/
// © Coinrule

//@version=5
strategy('EMA and MACD with Trailing Stop Loss',
         overlay=true,
         initial_capital=1000,
         process_orders_on_close=true,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=30,
         commission_type=strategy.commission.percent,
         commission_value=0.1)

showDate = input(defval=true, title='Show Date Range')
timePeriod = time >= timestamp(syminfo.timezone, 2022, 1, 1, 0, 0)
notInTrade = strategy.position_size <= 0

// EMAs 
fastEMA = ta.ema(close, 7)
slowEMA = ta.ema(close, 14)
plot(fastEMA, color = color.blue)
plot(slowEMA, color = color.green)
//buyCondition1 = ta.crossover(fastEMA, slowEMA)
buyCondition1 = fastEMA > slowEMA


// DMI and MACD inputs and calculations
[macd, macd_signal, macd_histogram] = ta.macd(close, 12, 26, 9)
buyCondition2 = ta.crossover(macd_signal, macd)


// Configure trail stop level with input options
longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01
shortTrailPerc = input.float(title='Trail Short Loss (%)', minval=0.0, step=0.1, defval=1) * 0.01

// Determine trail stop loss prices
longStopPrice = 0.0
shortStopPrice = 0.0

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

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

if (buyCondition1 and buyCondition2 and notInTrade and timePeriod)
    strategy.entry(id="Long", direction = strategy.long)

strategy.exit(id="Exit", stop = longStopPrice, limit = shortStopPrice)


//if (sellCondition1 and sellCondition2 and notInTrade and timePeriod)
//strategy.close(id="Close", when = sellCondition1 or sellCondition2)


Lebih lanjut