Strategi Perdagangan Rata-rata Pergerakan Dinamis Mckinnon


Tanggal Pembuatan: 2023-11-14 15:48:46 Akhirnya memodifikasi: 2023-11-14 15:48:46
menyalin: 0 Jumlah klik: 838
1
fokus pada
1617
Pengikut

Strategi Perdagangan Rata-rata Pergerakan Dinamis Mckinnon

Ringkasan

Strategi ini adalah strategi perdagangan berdasarkan indikator non-dinamis rata-rata McKin. Indikator non-dinamis rata-rata McKin adalah indikator rata-rata bergerak yang lebih baik yang dapat menangkap perubahan tren pasar. Strategi ini menggunakan sinyal indikator non-dinamis rata-rata McKin, yang dikombinasikan dengan sinyal harga yang menerobos rata-rata, untuk membuat aturan pembelian dan penjualan untuk mencapai tujuan keuntungan.

Prinsip Strategi

Strategi ini terutama menggunakan dua garis rata-rata, yaitu indeks bergerak rata-rata 21 hari dan indeks bergerak rata-rata 42 hari. Ketika garis rata-rata jangka pendek melewati garis rata-rata jangka panjang, dianggap sebagai sinyal beli; Ketika garis rata-rata jangka pendek melewati garis rata-rata jangka panjang, dianggap sebagai sinyal jual.

Selain itu, strategi ini juga perlu memenuhi kondisi harga di atas rata-rata non-dinamis McKinsey, harga melewati rata-rata jangka pendek, untuk menghasilkan sinyal beli. Untuk sinyal jual juga perlu memenuhi kondisi harga di bawah rata-rata non-dinamis McKinsey, harga jatuh di bawah rata-rata jangka pendek.

Secara khusus, kondisi pemicu sinyal beli adalah: melewati garis rata-rata panjang pada garis rata-rata pendek, harga penutupan lebih tinggi dari garis non-rata McKinsey, harga penutupan menembus garis rata-rata pendek ke bawah. Kondisi pemicu sinyal jual adalah: melewati garis rata-rata panjang di bawah garis rata-rata pendek, harga penutupan di bawah garis non-rata McKinsey, harga penutupan menembus garis rata-rata pendek ke atas.

Rumus perhitungan rata-rata non-dinamis McKin adalah: MDIt = MDIt-1 + (Close - MDIt-1) / Max(k * Period * (Close / MDIt-1) ^ 4, 1) ∞ di mana, MDIt adalah nilai saat ini, MDIt-1 adalah nilai hari sebelumnya, Close adalah harga penutupan hari itu, k adalah smoothing constant, Period adalah perhitungan. Rumus ini memungkinkan rata-rata untuk melacak perubahan harga secara real-time.

Keunggulan Strategis

  1. Indikator rata-rata McKinsey memperbaiki keterbelakangan rata-rata tradisional untuk menangkap perubahan tren harga lebih cepat.

  2. Kombinasi dua garis rata membentuk sinyal perdagangan, yang dapat secara efektif memfilter penembusan palsu.

  3. Tambahkan kondisi harga di atas/di bawah garis rata-rata McKinsey untuk menghindari perdagangan yang sering terjadi di zona gempa.

  4. Indeks bergerak rata-rata digunakan untuk membuat rata-rata lebih sensitif terhadap perubahan harga terbaru.

Risiko Strategis

  1. Dalam pasar yang bergoyang, sinyal palsu dapat dihasilkan, yang mengakibatkan kerugian. Parameter dapat disesuaikan dengan tepat, filter sinyal.

  2. Penembusan yang besar dapat menyebabkan tidak dapat membangun gudang dalam waktu yang tepat, dan persyaratan masuk harus dikurangi secara tepat.

  3. Penetapan parameter yang tidak tepat juga dapat memengaruhi efektivitas strategi. Parameter harus diuji secara optimal.

  4. Risiko sistemik yang ditimbulkan oleh kepemilikan jangka panjang perlu diperhatikan, dan titik-titik stop loss dapat ditetapkan.

Optimasi Strategi

  1. Parameter garis rata-rata dengan panjang yang berbeda dapat diuji untuk menemukan kombinasi yang lebih cocok.

  2. Anda dapat menambahkan indikator teknis lainnya, seperti KD, MACD, dan lain-lain, untuk mengoptimalkan pilihan tempat membeli dan menjual.

  3. Perhitungan garis non-rata McKinsey dapat dioptimalkan dengan mengadaptasi parameter k berdasarkan varietas dan pasar yang berbeda.

  4. Dimensi posisi dinamis dapat dikombinasikan dengan indikator volatilitas untuk mengontrol risiko tunggal.

  5. Anda dapat mengatur stop loss untuk mengontrol risiko kerugian, atau Anda dapat mencoba memindahkan stop loss untuk mengunci keuntungan.

Meringkaskan

Strategi ini memanfaatkan kemampuan pelacakan cepat dari indikator non-rata-rata McKin, dengan sinyal perdagangan yang dibentuk oleh harga yang melanggar rata-rata, dapat secara efektif melacak tren, dan beralih posisi tepat waktu jika tren berbalik. Strategi ini dapat menangkap perubahan tren harga lebih cepat daripada strategi biner rata-rata tradisional. Namun, strategi ini juga memiliki risiko tertentu, yang memerlukan pengujian optimasi untuk menentukan kombinasi parameter yang sesuai, untuk mengendalikan risiko.

Kode Sumber Strategi
/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
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/
// © LucasZancheta

//@version=4
strategy(shorttitle="Maguila", title="McGinley Dynamic Indicator", overlay=true)

//Médias móveis
MA1Period=input(21, title="MA1")
MA2Period=input(42, title="MA2")

MA1 = ema(close, MA1Period)
MA2 = ema(close, MA2Period)

aboveAverage = MA1 >= MA2
hunderAverage = MA2 >= MA1

//Período do backtest
startDate = input(title="Start Date", type=input.integer, defval=28, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer, defval=5, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2019, minval=1800, maxval=2100)

endDate = input(title="End Date", type=input.integer, defval=28, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer, defval=5, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer, defval=2030, minval=1800, maxval=2100)

//Verifica se o candle está dentro do período do backtest
inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))

//Número de periodos da média móvel
period  = input(title="Períodos", type=input.integer, defval=20)
//Constante K (0.6)
k = input(title="Constante K", type=input.float, defval=0.6)
//Preço de fechamento 
closePrice = input(title="Preço", type=input.source, defval=close)

mdi = 0.0

//Fórmula de McGinley
mdi := na(mdi[1]) ? closePrice : mdi[1] + (closePrice - mdi[1]) / max((k * period * pow(closePrice / mdi[1], 4)), 1)

//Regra de coloração 
mdiColor = closePrice > mdi ? color.green : closePrice < mdi ? color.red : color.black

//Inserindo as informações no gráfico    
plot(MA1, color=color.blue, linewidth=2)
plot(MA2, color=color.purple, linewidth=2)

barcolor(mdiColor)

//Estratégia
buySignal = aboveAverage and closePrice > mdi and crossunder(low, MA1) and close > MA1  
buyLoss = closePrice < mdi and close < MA1 and close < MA2

if (inDateRange)
    strategy.entry("Compra", strategy.long, qty=1, when= buySignal)
    strategy.exit("Gain da compra", "Compra", qty=1, profit=20)
    strategy.close("Compra", qty=1, when= buyLoss, comment="Loss na operação")

sellSignal = hunderAverage and closePrice < mdi and crossover(high, MA1) and close < MA1
sellLoss = closePrice > mdi and close > MA1 and close > MA2

if (inDateRange)
    strategy.entry("Venda", strategy.short, qty=1, when= sellSignal)
    strategy.exit("Gain da venda", "Venda", qty=1, profit=20)
    strategy.close("Venda", qty=1, when= sellLoss, comment="Loss na operação")

if (not inDateRange)
    strategy.close_all()