Strategi Pemecahan Penunjuk Momentum Dwi


Tarikh penciptaan: 2023-11-16 17:00:54 Akhirnya diubah suai: 2023-12-01 14:59:44
Salin: 1 Bilangan klik: 648
1
fokus pada
1617
Pengikut

Strategi Pemecahan Penunjuk Momentum Dwi

Gambaran keseluruhan

Strategi ini adalah strategi penembusan penunjuk dinamik dua. Ia menggunakan penunjuk dinamik dengan parameter yang berbeza, menghasilkan isyarat perdagangan apabila kedua-dua penunjuk dinamik menembusi paksi nol. Strategi ini hanya membuat entri berbilang kepala, dan kepala kosong hanya digunakan untuk kedudukan kosong.

Prinsip Strategi

Kod pertama menetapkan sifat-sifat strategi, seperti mod delegasi, mod bayaran, dan sebagainya. Ia kemudian mengira dua indikator dinamik:

// Momentum settings

i_len           = input(defval = 12, title = "Length", minval = 1) 
i_src           = input(defval = close, title = "Source")
i_percent       = input(defval = true, title = "Percent?")
i_mom           = input(defval = "MOM2", title = "MOM Choice", options = ["MOM1", "MOM2"])

// Momentum code

mom0 = momentum(i_src, i_len, i_percent) 
mom1 = momentum(mom0, 1, i_percent)
mom2 = momentum(i_src, 1, i_percent)

momX = mom1 

if i_mom == "MOM2"
    momX := mom2

mom0 adalah penunjuk momentum asas, panjangnya ialah i_len, sumber data ialah i_src, sama ada peratusan dikira ditentukan oleh i_percent.

mom1 adalah penunjuk momentum dengan mom0 sebagai sumber data dan panjangnya ialah 1.

mom2 adalah penunjuk momentum dengan panjang 1 yang berasal dari data asal i_src.

Penunjuk momentum yang digunakan akhirnya ialah momX. Secara lalai, mom1 digunakan, dan mom2 juga boleh dipilih.

Apabila mom0 dan momX pada masa yang sama melebihi 0 axis, buat lebih banyak; apabila mom0 dan momX pada masa yang sama di bawah 0 axis, posisi kosong.

Kelebihan Strategik

  1. Penggunaan indikator kuantiti dua kali ganda yang digabungkan dengan tetapan parameter yang berbeza dapat meningkatkan kebolehpercayaan isyarat perdagangan, dan pengesahan dua kali ganda mengurangkan isyarat palsu.

  2. Hanya membuat entri berbilang kepala, kepala kosong hanya digunakan untuk kedudukan kosong, dapat mengurangkan frekuensi perdagangan dan mengurangkan kos perdagangan.

  3. Parameter penunjuk momentum boleh disesuaikan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.

  4. Kod ini jelas, mudah difahami dan diubah suai.

  5. Seting mesej perdagangan ditambah, yang boleh digunakan dengan sistem perdagangan automatik.

Risiko Strategik

  1. Indeks kuantiti dua hala boleh mengurangkan isyarat palsu, tetapi ia juga boleh terlepas isyarat trend yang lemah.

  2. Berdagang dengan banyak mata wang, anda mungkin terlepas peluang untuk berdagang dengan wang kosong.

  3. Tetapan parameter penunjuk momentum yang tidak betul boleh menyebabkan perdagangan yang terlalu kerap atau terlalu lambat.

  4. Data pengesanan yang tidak mencukupi boleh menyebabkan parameter terlalu sesuai.

  5. Walaupun pengesahan berganda dapat mengurangkan isyarat palsu, ia tidak dapat dielakkan sepenuhnya, dan penembusan masih perlu diperhatikan semasa berdagang secara langsung.

Arah pengoptimuman strategi

  1. Anda boleh menguji kombinasi parameter dengan panjang yang berbeza dan peratusan untuk mencari parameter terbaik.

  2. Anda boleh mempertimbangkan untuk menambah isyarat perdagangan kosong setelah trend disahkan untuk menangkap lebih banyak peluang perdagangan.

  3. Anda boleh menguji kaedah pengiraan indikator momentum yang berbeza, seperti ROC, RSI, dan lain-lain, untuk mencari kesan yang lebih baik.

  4. Anda boleh menggunakan penapis trend untuk mengelakkan dagangan dalam keadaan yang tidak menentu.

  5. Anda boleh mengoptimumkan strategi hentikan kerugian dan mengawal risiko sambil memaksimumkan keuntungan.

ringkaskan

Strategi ini adalah strategi penembusan indikator dinamik ganda yang tipikal. Ia menggunakan pengesahan dua kali untuk mengurangkan isyarat palsu, hanya melakukan masuk berbilang kepala untuk mengurangkan frekuensi perdagangan. Keuntungan strategi ini adalah sederhana, mudah dilaksanakan, dan terdapat banyak ruang untuk penambahbaikan dalam pengoptimuman parameter dan kawalan risiko. Secara keseluruhan, strategi ini berfungsi sebagai kerangka asas untuk strategi penembusan dinamik dinamik, tetapi perlu disesuaikan secara optimum untuk pasaran tertentu untuk memastikan keuntungan yang stabil dalam saham.

Kod sumber strategi
/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Momentum Long Strategy", overlay = false, precision = 2, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash, commission_type = strategy.commission.percent, commission_value = 0, calc_on_every_tick = true)

// There will be no short entries, only exits from long.
strategy.risk.allow_entry_in(strategy.direction.long)

// Calculate start/end date and time condition
startDate  = input(timestamp("2021-01-02T00:00:00"), title = "Start Date", type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), title = "End Date",type = input.time)
 
time_cond  =true

// Momentum settings

i_len           =       input(defval = 12,      title = "Length",       minval = 1)
i_src           =       input(defval = close,   title = "Source")
i_percent       =       input(defval = true,    title = "Percent?")
i_mom           =       input(defval = "MOM2",  title = "MOM Choice",   options = ["MOM1", "MOM2"])

// Messages for buy and sell
message_buy  = input("{{strategy.order.alert_message}}", title="Buy message")
message_sell = input("{{strategy.order.alert_message}}", title="Sell message")

// Momentum code

momentum(seria, length, percent) =>
	_mom        =       percent ? ( (seria / seria[length]) - 1) * 100 : seria - seria[length]
	_mom

mom0        =       momentum(i_src, i_len, i_percent)
mom1        =       momentum(mom0, 1, i_percent)
mom2        =       momentum(i_src, 1, i_percent)

momX        =       mom1

if i_mom == "MOM2"
    momX    :=     mom2
    
// Strategy Alerts    

if (mom0 > 0 and momX > 0 and time_cond)
    strategy.entry("MomLE", strategy.long, stop = high + syminfo.mintick, comment = "MomLE", alert_message = message_buy)
else
	strategy.cancel("MomLE")
if (mom0 < 0 and momX < 0 and time_cond)
	strategy.entry("MomExit", strategy.short, stop = low - syminfo.mintick, comment = "MomSE", alert_message = message_sell)
else
	strategy.cancel("MomExit")
	
// Plotting

plot(0, color = #5d606b, title = "ZERO")
plot(mom0, color = #00bcd4, title = "MOM")
plot(mom1, color = #00FF00, title = "MOM1", display = display.none)
plot(mom2, color = #00FF00, title = "MOM2")