Strategi kombinasi crossover moving average dan MACD


Tanggal Pembuatan: 2023-10-24 13:51:02 Akhirnya memodifikasi: 2023-10-24 13:51:02
menyalin: 1 Jumlah klik: 843
1
fokus pada
1617
Pengikut

Strategi kombinasi crossover moving average dan MACD

Ringkasan

Strategi ini menggunakan kombinasi dari Moving Average Crossover System dan MACD Indicator untuk melakukan trading otomatis dengan melakukan over dan stop loss pada titik pivot. Strategi ini disebut dengan strategi kombinasi antara crossover rata-rata dan MACD.

Prinsip

Strategi ini terutama didasarkan pada kombinasi antara sistem persilangan rata-rata dan indikator MACD. Secara khusus, ketika rata-rata jangka pendek di atas rata-rata jangka panjang, lakukan lebih banyak; ketika rata-rata jangka pendek di bawah rata-rata jangka panjang, lakukan lebih banyak. Di sini, EMA 21 hari dipilih sebagai rata-rata jangka pendek dan EMA 100 hari sebagai rata-rata jangka panjang.

Pada saat yang sama, MACD digunakan untuk mengkonfirmasi sinyal transaksi. MACD hanya akan melakukan sinyal ganda ketika melewati garis DEA di atas DIFF. Namun, jika melewati DEA di bawah DIFF, maka stop loss ganda akan dihapus.

Selain itu, strategi ini juga menggunakan RSI untuk menghindari terlalu banyak shorting, hanya dengan posisi shorting ketika RSI di bawah 30%.

Dalam hal stop loss, strategi ini menggunakan metode persentase tetap untuk melacak stop loss, dengan stop loss tunggal berkurang 1 persen dari harga masuk, dan stop loss tunggal berkurang 1 persen dari harga masuk. Selain itu, strategi ini juga mengimplementasikan stop loss bergerak, yang berhenti ketika keuntungan floating tunggal mencapai 3 persen dari harga masuk.

Analisis Keunggulan

Keuntungan terbesar dari strategi ini adalah menggunakan sistem garis rata untuk menentukan arah tren besar, dan kemudian menggunakan indikator MACD untuk masuk, yang dapat secara efektif memfilter terobosan palsu. Dibandingkan dengan menggunakan sistem persilangan garis rata saja, dapat mengurangi jumlah transaksi yang tidak efektif dan meningkatkan probabilitas keuntungan.

Selain itu, strategi ini menggunakan persentase stop loss tetap dan stop loss bergerak, yang dapat mengendalikan kerugian dalam kisaran yang dapat ditanggung, sambil menghentikan stop loss secepat mungkin dan mengunci keuntungan dengan asumsi jaminan keuntungan. Ini dapat mengurangi penarikan akun dan mengurangi kerugian yang disebabkan oleh keserakahan dalam perdagangan aktual.

Analisis risiko

Risiko utama dari strategi ini adalah sebagai berikut:

  1. Sistem persimpangan rata-rata memiliki keterlambatan, yang dapat menyebabkan keterlambatan masuk yang melewatkan titik masuk terbaik. Penundaan dapat dikurangi dengan mengoptimalkan parameter rata-rata.

  2. Indikator MACD mudah menghasilkan sinyal palsu, perlu bantuan indikator lain untuk penyaringan. Dapat dipertimbangkan untuk memasukkan indikator seperti KDJ untuk optimasi.

  3. Hal ini dapat dilakukan dengan mengubah Stop Stop Stop dari Stop Stop Stop Persentase Tetap menjadi Stop Stop Dinamis.

  4. Strategi penarikan diri mungkin lebih besar, dapat dipertimbangkan untuk menurunkan posisi menghindari risiko.

  5. Strategi hanya melakukan lebih banyak dan tidak melakukan shorting, ada batasan hanya mengikuti tren multi arah, dapat dipertimbangkan untuk memasukkan mekanisme shorting.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Optimalkan parameter rata-rata untuk membuat sinyal rata-rata lebih akurat. Anda dapat mencoba berbagai jenis rata-rata seperti EMA, SMA.

  2. Menambahkan indikator lain untuk memfilter sinyal crossover rata-rata, seperti KDJ, RSI, dan lain-lain, untuk mengurangi kesalahan perdagangan.

  3. Cobalah cara stop loss yang dinamis untuk mengendalikan risiko dengan lebih baik. Seperti stop loss tracking, stop loss ATR, dan lain sebagainya.

  4. Menambahkan mekanisme shorting, sehingga strategi dapat menguntungkan dalam kondisi turun.

  5. Optimalkan pengelolaan dana, sesuaikan ukuran posisi, dan kurangi penarikan maksimum.

  6. Uji kinerja dari berbagai jenis kontrak, memperluas ruang lingkup kebijakan.

  7. Menambahkan algoritma pembelajaran mesin, menggunakan algoritma untuk mengoptimalkan parameter secara otomatis, mengurangi intervensi manusia.

Meringkaskan

Strategi ini mengintegrasikan keuntungan dari sistem crossover linear dan indikator MACD, sehingga menghasilkan tingkat keuntungan yang lebih tinggi. Dengan pengaturan parameter yang dioptimalkan, penambahan indikator lain, dan perbaikan metode stop loss, stabilitas strategi dapat ditingkatkan lebih lanjut dan mengurangi penarikan balik. Dengan menambahkan mekanisme penarikan dan pembelajaran mesin, kemampuan strategi dapat diperluas.

Kode Sumber Strategi
/*backtest
start: 2023-10-16 00:00:00
end: 2023-10-23 00:00:00
period: 2m
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/
// © Toxic_Cat_

//@version=5
// strategy("MA_50_200_CROSS", overlay=true, margin_long=100, margin_short=100)

EMA21 = ta.ema(close, 21)
EMA100 = ta.ema(close, 100)
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

plot(EMA21)
plot(EMA100, color = color.orange)

openLong = ta.crossover(EMA21, EMA100) and macdLine > signalLine
openShort = ta.crossunder(EMA21, EMA100) and ta.rsi(close, 14) <= 33

crossunderMACD = ta.crossunder(macdLine, signalLine)


if (strategy.opentrades < 1)
    if openLong 
        strategy.entry("L",strategy.long, 1)

   if openShort
      strategy.entry("S",strategy.short, 1)

// slose long
// if ((strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.03) <= open) 
//     strategy.exit("profit L", "L", limit = close)

// else if strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.01 >= open or crossunderMACD
//     strategy.exit("loss L", "L", stop = close)

// slose short
// if (strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.03) >= open
//     strategy.exit("profit S", "S", limit = (strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.03))

// else if strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.01 <= open
//    strategy.exit("loss S", "S", stop = (strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.01))