Strategi Gabungan Penunjuk Arah dan Purata Pergerakan Badan Kapal


Tarikh penciptaan: 2024-01-04 17:23:06 Akhirnya diubah suai: 2024-01-04 17:23:06
Salin: 0 Bilangan klik: 688
1
fokus pada
1621
Pengikut

Strategi Gabungan Penunjuk Arah dan Purata Pergerakan Badan Kapal

Gambaran keseluruhan

Strategi ini menggunakan gabungan penunjuk pergerakan ((DMI) dan purata bergerak Hull ((HMA) untuk menentukan arah pasaran, HMA mengesahkan kekuatan trend, dan perdagangan yang tidak tertakluk kepada pengurusan risiko.

Prinsip Strategi

  1. Hitung lebar gelombang sebenar (TRUE RANGE), penunjuk pergerakan kepala (DIPlus), penunjuk pergerakan kepala kosong (DIMinus) dan indeks arah purata (ADX).

  2. Hitung purata Hull pantas ((fasthull) dan purata Hull perlahan ((slowhull)

  3. Trigger dengan pelbagai syarat: DIPlus memakai DIMinus dan fasthull memakai slowhull。

  4. Mencetus keadaan kosong: DIMinus melalui DIPlus dan fasthull melalui slowhull

  5. Isyarat melakukan lebih dan mengosongkan selepas memenuhi syarat melakukan lebih.

Analisis kelebihan

Strategi ini digabungkan dengan pengesahan dua kali ganda pada indikator DMI dan Hull Average untuk menilai trend, yang dapat mengenal pasti arah trend pasaran dengan berkesan, dan mengelakkan pengulangan pasaran overhead dan kosong. Pengurusan tanpa risiko mengurangkan frekuensi perdagangan, dengan tahap keuntungan keseluruhan yang baik dalam jangka panjang.

Analisis risiko

Risiko terbesar dalam strategi ini ialah tanpa kawalan kerugian, tidak dapat mengawal kerugian dengan berkesan apabila terdapat turun naik yang teruk. Selain itu, ruang pengoptimuman parameter yang terhad dan kurang sasaran juga merupakan kelemahan besar.

Risiko boleh dikurangkan dengan cara-cara seperti menambah stop loss bergerak, mengoptimumkan kombinasi parameter.

Arah pengoptimuman

  1. Menambah ATR stop loss, menggunakan real bandwidth trailing stop loss.

  2. Mengoptimumkan parameter kitaran Hull untuk mencari kombinasi terbaik.

  3. Pelancaran parameter yang lebih banyak dikosongkan.

  4. Penambahan penapis seperti penunjuk tenaga kuantitatif untuk memastikan trend berterusan.

ringkaskan

Strategi gabungan DMI dan HMA, penghakiman yang tepat, mudah dan berkesan, sesuai untuk operasi garis tengah dan panjang. Apabila ditambah dengan hentian yang sesuai dan pengoptimuman parameter, ia boleh menjadi sistem pengesanan trend yang sangat baik.

Kod sumber strategi
/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 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/
// © Tuned_Official
//@version=4
strategy(title="DMI + HMA - No Risk Management", overlay = false, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.025)

//Inputs
hullLen1 = input(title="Hull 1 length", type=input.integer, defval=29)
hullLen2 = input(title="Hull 2 length", type=input.integer, defval=2)
len = input(title="Length for DI", type=input.integer, defval=76)

//Calculations
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0

SmoothedTrueRange = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = 0.0
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus

//Indicators
fasthull = hma(close, hullLen1)
slowhull = hma(close, hullLen2)
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)

//Plots
plot(DIPlus, color=color.green, title="DI+")
plot(DIMinus, color=color.red, title="DI-")
plot(ADX, color=color.black, title="ADX")

//conditions
go_long = crossover(DIPlus, DIMinus) and fasthull > slowhull //crossover(fasthull, slowhull) and DIPlus > DIMinus
go_short = crossover(DIMinus, DIPlus) and fasthull < slowhull //crossunder(fasthull, slowhull) and DIMinus > DIPlus

//Entry
if strategy.position_size < 0 or strategy.position_size == 0
    strategy.order("long", strategy.long, when=go_long)

if strategy.position_size > 0 or strategy.position_size == 0
    strategy.order("Short", strategy.short, when=go_short)