Strategi dagangan berdasarkan DMI dan purata bergerak


Tarikh penciptaan: 2023-09-28 12:39:44 Akhirnya diubah suai: 2023-09-28 12:39:44
Salin: 2 Bilangan klik: 910
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi ini mengenal pasti arah trend dengan menggabungkan indikator trend DMI dan purata bergerak untuk menghantar isyarat beli dan jual. Strategi ini menghasilkan isyarat perdagangan apabila DMI menunjukkan tawaran memasuki keadaan trend dan purata bergerak mengesahkan arah trend.

Prinsip Strategi

Strategi ini berdasarkan kepada dua indikator:

  1. DMI merangkumi DMI+ dan DMI-, yang digunakan untuk mengenal pasti kewujudan dan arah trend. Apabila DMI+ lebih tinggi daripada DMI-, ia menunjukkan trend naik; apabila DMI- lebih tinggi daripada DMI+, ia menunjukkan trend menurun.

  2. Rata-rata bergerak, biasanya mengambil rata-rata 15 hingga 50 hari, digunakan untuk menentukan arah trend harga. Apabila harga lebih tinggi daripada (bawah) rata-rata bergerak, menunjukkan kenaikan (bawah) trend.

Strategi pertama mengira DMI +, DMI- dan purata bergerak. Apabila DMI menunjukkan keadaan trend ((DMI + lebih tinggi daripada DMI - atau DMI - lebih tinggi daripada DMI +), dan jika rata-rata bergerak juga mengesahkan arah trend, maka ia akan menghasilkan isyarat perdagangan.

  • Apabila DMI+ memakai DMI- dan harga memakai purata bergerak, lakukan lebih banyak;
  • Apabila DMI- memakai DMI+ dan harga di bawahnya memakai purata bergerak, kosongkan.

Strategi ini juga menambah pilihan input terbalik. Apabila terbalik diaktifkan, isyarat melakukan lebih banyak dan kosong akan terbalik.

Analisis kelebihan

Strategi ini menggabungkan penunjuk trend dan penunjuk trend untuk meningkatkan kebolehpercayaan isyarat, menggunakan kelebihan kedua-dua penunjuk untuk saling melengkapi.

Kelebihan DMI adalah bahawa ia dapat mengenal pasti trend dengan cepat. Sementara itu, purata bergerak dapat menyaring sebahagian daripada kebisingan dan mengesahkan arah trend. Kedua-duanya digunakan bersama-sama untuk memasuki lebih awal ketika trend terbentuk, dan mengelakkan aliran gelombang ketika tidak trend.

Di samping itu, strategi ini menambah pilihan pembalikan, yang membolehkan anda memilih perdagangan maju atau mundur mengikut keperluan sebenar. Ini meningkatkan fleksibiliti strategi.

Analisis risiko

Strategi ini mempunyai risiko utama:

  1. Apabila trend berubah, isyarat yang salah boleh berlaku, yang menyebabkan kerugian. Ini memerlukan penyesuaian parameter, atau menetapkan stop loss untuk mengawal risiko.

  2. Pembentukan trend memerlukan masa tertentu, di mana strategi mudah diganggu oleh pergerakan harga, menghasilkan isyarat yang salah. Anda boleh menyesuaikan parameter DMI dan tempoh purata bergerak untuk menyaring kebisingan ini.

  3. Perdagangan berbalik menghadapi risiko peningkatan kerugian dengan berbalik. Apabila mengaktifkan berbalik, perlu mengawal peratusan kerugian tunggal, atau menggunakan hentian bergerak untuk mengunci sebahagian keuntungan.

  4. Parameter perlu dioptimumkan semula untuk pelbagai jenis dan tempoh masa yang berbeza. Parameter yang disalin secara langsung mungkin tidak berkesan untuk digunakan pada jenis atau tempoh lain.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Uji parameter kitaran purata bergerak yang berbeza untuk mencari kombinasi parameter terbaik untuk menukar trend penggabungan.

  2. Parameter kitaran halus untuk menguji DMI, bunyi pembalikan jangka pendek yang muncul dalam trend penapisan.

  3. Menilai perbezaan kesan antara pilihan pembalikan yang diaktifkan dan perdagangan default dalam retrospeksi sejarah, memilih pilihan yang lebih baik.

  4. Menambah strategi hentikan kerugian, seperti hentikan bergerak, hentikan masa, hentikan hentikan, dan lain-lain, untuk mengawal kerugian tunggal.

  5. Menilai kesan pengoptimuman dalam pelbagai varieti dan parameter kitaran, mengoptimumkan kombinasi parameter.

  6. Penapisan digabungkan dengan indikator lain, seperti RSI yang kuat dan lemah, dapat mengelakkan isyarat yang salah pada titik-titik ekstrem tempatan.

ringkaskan

Strategi ini menggabungkan kelebihan kedua-dua indikator DMI dan Moving Average, untuk masuk ke dalam permainan lebih awal apabila trend terbentuk, dan untuk mengelakkan terkurung dalam keadaan goyah. Pilihan perdagangan reverse juga meningkatkan fleksibiliti strategi. Kestabilan strategi dapat ditingkatkan lagi dengan pengoptimuman parameter, hentikan kerugian, dan digunakan dengan kombinasi indikator lain.

Kod 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")