Strategi perdagangan berdasarkan DMI dan rata-rata pergerakan


Tanggal Pembuatan: 2023-09-28 12:39:44 Akhirnya memodifikasi: 2023-09-28 12:39:44
menyalin: 2 Jumlah klik: 910
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini mengidentifikasi arah tren dengan menggabungkan indikator tren DMI dan moving average untuk mengirim sinyal beli dan jual. Strategi ini menghasilkan sinyal perdagangan ketika DMI menunjukkan penawaran memasuki keadaan tren dan moving average mengkonfirmasi arah tren.

Prinsip Strategi

Strategi ini didasarkan pada dua indikator:

  1. DMI terdiri dari DMI+ dan DMI-, untuk mengidentifikasi keberadaan dan arah tren. Ketika DMI+ lebih tinggi dari DMI-, menunjukkan tren naik; Ketika DMI- lebih tinggi dari DMI+, menunjukkan tren turun.

  2. Moving Average, rata-rata dari 15 hingga 50 hari, digunakan untuk menentukan arah tren harga. Ketika harga lebih tinggi (lebih rendah) dari Moving Average, menunjukkan tren naik (lebih rendah).

Strategi pertama menghitung DMI+, DMI- dan moving averages. Pada saat DMI menunjukkan status tren ((DMI+ lebih tinggi dari DMI- atau DMI- lebih tinggi dari DMI+), sinyal perdagangan dihasilkan jika moving average juga mengkonfirmasi arah tren tersebut. Secara khusus:

  • Ketika DMI+ menembus DMI- dan harga menembus moving average, lakukan lebih banyak;
  • Ketika DMI- memakai DMI+ dan harga di bawahnya memakai Moving Average, kosongkan.

Strategi ini juga menambahkan opsi input reverse. Setelah reverse diaktifkan, sinyal over dan under akan dibalik.

Analisis Keunggulan

Strategi ini menggabungkan indikator tren dan indikator tren untuk meningkatkan keandalan sinyal, memanfaatkan keuntungan dari kedua indikator untuk saling melengkapi.

Keunggulan DMI adalah adanya tren yang dapat diidentifikasi dengan cepat. Sementara itu, rata-rata bergerak dapat menyaring sebagian dari kebisingan dan mengkonfirmasi arah tren.

Selain itu, strategi ini menambahkan opsi reversal, yang memungkinkan untuk memilih perdagangan maju atau mundur sesuai dengan kebutuhan yang sebenarnya. Ini meningkatkan fleksibilitas strategi.

Analisis risiko

Strategi ini memiliki risiko utama sebagai berikut:

  1. Pada saat perubahan tren, sinyal yang salah dapat terjadi, yang menyebabkan kerugian. Hal ini memerlukan penyesuaian parameter, atau pengaturan stop loss untuk mengendalikan risiko.

  2. Tren membutuhkan waktu untuk terbentuk, di mana strategi mudah terganggu oleh pergerakan harga dan menghasilkan sinyal yang salah. Anda dapat memfilter kebisingan ini dengan menyesuaikan DMI dan parameter durasi rata-rata bergerak.

  3. Perdagangan berbalik menghadapi risiko ekspansi kerugian berlawanan arah. Saat mengaktifkan berbalik, perlu mengontrol rasio kerugian tunggal, atau menggunakan stop loss bergerak untuk mengunci sebagian keuntungan.

  4. Parameter perlu dioptimalkan kembali untuk varietas dan periode waktu yang berbeda.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Uji berbagai parameter siklus moving average untuk menemukan kombinasi parameter terbaik untuk konversi tren penggabungan.

  2. Parameter siklus halus untuk menguji DMI, kebisingan pembalikan singkat yang muncul dalam tren filter.

  3. Evaluasi perbedaan efek dari opsi reversal yang diaktifkan dengan perdagangan default dalam retrospeksi sejarah, dan pilih opsi yang lebih baik.

  4. Menambahkan strategi stop loss, seperti stop loss bergerak, stop loss waktu, dan stop loss terobosan, untuk mengendalikan kerugian tunggal.

  5. Evaluasi efek optimasi dalam berbagai varietas dan parameter siklus, optimasi kombinasi parameter.

  6. Filtrasi yang dilakukan dengan indikator lain, seperti RSI yang kuat dan lemah, dapat menghindari sinyal yang salah pada titik ekstrim lokal.

Meringkaskan

Strategi ini menggabungkan keunggulan dari indikator DMI dan Moving Average untuk masuk lebih awal saat tren terbentuk, dan untuk menghindari terkurung dalam situasi yang bergolak. Opsi reverse trading juga meningkatkan fleksibilitas strategi. Stabilitas strategi dapat ditingkatkan lebih lanjut melalui pengoptimalan parameter, stop loss, dan penggunaan dengan kombinasi indikator lainnya. Namun, perlu diperhatikan kelayakan parameter yang perlu diuji ulang dalam berbagai varietas dan siklus.

Kode Sumber Strategi
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 03/03/2017
// The related article is copyrighted material from Stocks & Commodities Aug 2009 
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Combining DMI And Moving Average For A EUR/USD Trading System")
Length_MA = input(30, minval=1)
Length_DMI = input(14, minval=1)
reverse = input(false, title="Trade reverse")
xMA = sma(close, Length_MA)
up = change(high)
down = -change(low)
trur = rma(tr, Length_DMI)
xPDI = fixnan(100 * rma(up > down and up > 0 ? up : 0, Length_DMI) / trur)
xNDI = fixnan(100 * rma(down > up and down > 0 ? down : 0, Length_DMI) / trur)
nPDI = xPDI
nNDI = xNDI
nMA = xMA
nPDI_1 = xPDI[1]
nNDI_1 = xNDI[1]
nMA_1 = xMA[1]
bMDILong =iff(nPDI > nNDI and nPDI_1 < nNDI_1, true, 
           iff(nPDI < nNDI and nPDI_1 > nNDI_1, false, false)) 
bMDIShort =  iff(nPDI > nNDI and nPDI_1 < nNDI_1, false, 
              iff(nPDI < nNDI and nPDI_1 > nNDI_1, true, false)) 
bMALong = iff(close > nMA and close[1] < nMA_1, true, 
           iff(close < nMA and close[1] > nMA_1, false, false))
bMAShort = iff(close > nMA and close[1] < nMA_1, false, 
             iff(close < nMA and close[1] > nMA_1, true, false))
pos = iff(bMDILong and bMALong, 1, 
     iff(bMDIShort and bMAShort, -1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1 )
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nPDI, color=green, title="DMI Plus")
plot(nNDI, color=red, title="DMI Minus")