Strategi penarikan semula berasaskan momentum


Tarikh penciptaan: 2024-01-23 15:23:14 Akhirnya diubah suai: 2024-01-23 15:23:14
Salin: 0 Bilangan klik: 564
1
fokus pada
1617
Pengikut

Strategi penarikan semula berasaskan momentum

Gambaran keseluruhan

Strategi ini bertujuan untuk mengenal pasti potensi peluang penarikan balik dalam pasaran. Strategi ini menggunakan sistem dua garis sejajar: purata bergerak jangka panjang ((MA1)) dan purata bergerak jangka pendek ((MA2)). Tujuan utamanya adalah untuk menunjukkan peluang penarikan balik yang berpotensi dalam trend besar, dan dengan itu melakukan lebih banyak apabila harga penutupan berada di bawah MA1 tetapi di atas MA2.

Prinsip Strategi

Strategi ini menggunakan dua rata-rata bergerak: MA1 (panjang) dan MA2 (pendek). Prinsipnya adalah bahawa jika harga jangka pendek muncul kembali dan menguji sokongan trend jangka panjang, maka ini mungkin peluang untuk melakukan lebih banyak. Secara khusus, jika harga penutupan lebih tinggi daripada sokongan jangka panjang (MA1), menunjukkan bahawa trend besar masih baik; dan jika harga penutupan jatuh ke bawah rata-rata jangka pendek (MA2) tetapi masih berdiri di atas rata-rata jangka panjang (MA1), maka ini adalah peluang untuk kembali.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Kesederhanaan, mudah difahami, fleksibiliti untuk menyesuaikan parameter
  2. Menggunakan Sistem Dua Garis Persamaan untuk mengenal pasti Trend Besar dan Mengelakkan Perdagangan Berkebalikan
  3. Penapis masa yang boleh disesuaikan untuk mengelakkan ketidaksamaan pasaran dalam tempoh masa tertentu
  4. Saiz kedudukan boleh disesuaikan untuk memenuhi pilihan risiko yang berbeza
  5. Menggunakan mekanisme hentian kerugian untuk mengehadkan risiko kerugian

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Kemerosotan, harga terus turun, tidak dapat dihentikan
  2. Trend besar berbalik, sokongan pecah
  3. Pasaran bergolak, purata bergerak berlainan
  4. Pilihan masa yang salah, peluang perdagangan yang hilang

Oleh itu, terdapat beberapa aspek yang boleh dioptimumkan dan diperbaiki:

  1. Mengoptimumkan parameter purata bergerak untuk meningkatkan kualiti isyarat perdagangan
  2. Mengoptimumkan tahap stop-loss untuk mendapatkan keuntungan dengan pengurangan risiko maksimum
  3. Menyesuaikan penapis masa untuk ke masa perdagangan terbaik
  4. Uji varieti dan persekitaran pasaran

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Mengoptimumkan parameter purata bergerak untuk mencari kombinasi parameter terbaik
  2. Uji mekanisme penghentian yang berbeza, seperti penghentian pengesanan, penghentian pendirian dan sebagainya
  3. Menambah penapis lain, seperti penapis jumlah transaksi, penapis kadar turun naik dan sebagainya
  4. Menambah mekanisme pengurusan kedudukan, seperti penambahan dan pengurangan garpu emas
  5. Menambah mekanisme penangguhan automatik
  6. Melakukan pengukuran semula dan mengira parameter utama untuk menentukan parameter terbaik

ringkaskan

Strategi ini secara keseluruhan adalah strategi tarik balik garis pendek yang mudah dan praktikal. Ia menggunakan dua garis persamaan untuk mengenal pasti peluang untuk kembali dan menetapkan hentian bergerak untuk mengawal risiko. Strategi ini mudah difahami dan dilaksanakan, parameternya disesuaikan dengan fleksibel, dapat memenuhi pilihan risiko yang berbeza.

Kod sumber strategi
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 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/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("Simple Pullback Strategy", 
     overlay=true, 
     initial_capital=50000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, // 100% of balance invested on each trade
     commission_type=strategy.commission.cash_per_contract, 
     commission_value=0.005) // Interactive Brokers rate

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2           = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent   = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose    = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Get indicator values
ma1 = ta.sma(close, i_ma1)
ma2 = ta.sma(close, i_ma2)

// Check filter(s)
f_dateFilter =true

// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition   = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance    = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice       = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition   = strategy.position_size > 0 and stopDistance > i_stopPercent

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)