Strategi kedudukan purata bergerak SMA yang kukuh dan boleh dipercayai


Tarikh penciptaan: 2023-12-18 17:44:16 Akhirnya diubah suai: 2023-12-18 17:44:16
Salin: 0 Bilangan klik: 627
1
fokus pada
1621
Pengikut

Strategi kedudukan purata bergerak SMA yang kukuh dan boleh dipercayai

Gambaran keseluruhan

Strategi ini adalah strategi memegang kedudukan sederhana berdasarkan garis rata-rata SMA. Apabila garis SMA pendek melintasi garis SMA panjang, anda membuka lebih banyak kedudukan; Apabila garis SMA pendek melintasi garis SMA panjang, anda menutup posisi.

Prinsip Strategi

Strategi ini menggunakan dua garis rata-rata SMA, satu jangka pendek 20 hari, satu jangka panjang 50 hari. Garis pendek lebih cepat menangkap trend perubahan harga, dan garis panjang menapis kebisingan jangka pendek.

Secara keseluruhan, strategi ini menggunakan ciri-ciri kurva rata-rata SMA untuk menilai trend pergerakan harga pada dua dimensi masa, dan mengambil keuntungan daripada cara memegang yang lebih stabil.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Operasi mudah, mudah difahami, had rendah
  2. Mengambil kesempatan daripada garis rata-rata SMA, agak stabil
  3. Penyimpanan jangka panjang, tidak terdedah kepada bunyi pasaran jangka pendek
  4. Lebih sedikit parameter yang boleh dikonfigurasi, lebih mudah untuk mengoptimumkan untuk mencari kombinasi parameter terbaik

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Apabila pasaran bergolak lama, lebih banyak kemungkinan untuk menghentikan kerugian
  2. Garis purata SMA mempunyai keterlambatan dan tidak dapat menangkap perubahan harga dalam masa yang tepat
  3. Kegagalan untuk mengambil keuntungan daripada kenaikan harga dalam jangka pendek
  4. Tidak dapat mengawal jumlah kerugian

Arah pengoptimuman

Strategi ini juga boleh dioptimumkan dalam beberapa aspek:

  1. Masa untuk menyertai Indeks MACD untuk menilai rebound di bahagian bawah untuk mengurangkan kerugian dalam keadaan goyah
  2. Uji gabungan garis rata-rata SMA dengan parameter yang berbeza untuk mencari parameter yang optimum
  3. Menambah ketepatan pembukaan kedudukan dengan menumpukan kepada penunjuk dalaman untuk menilai trend.
  4. Tambah strategi stop loss untuk mengawal kerugian tunggal

ringkaskan

Secara keseluruhannya, strategi pegangan rata-rata SMA stabil, mudah, mudah dikendalikan dan sesuai untuk pemula. Dengan perkembangan perdagangan kuantitatif, strategi ini dapat diperkenalkan dengan lebih banyak petunjuk dan kaedah teknikal untuk pengoptimuman, sehingga mendapat kesan yang lebih baik.

Kod sumber strategi
/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Zlema Strateg Long 5m', overlay=true )

// FUNCTIONS

Atr(p) =>
    atr = 0.
    Tr = math.max(high - low, math.max(math.abs(high - close[1]), math.abs(low - close[1])))
    atr := nz(atr[1] + (Tr - atr[1]) / p, Tr)
    atr

// ZLEMA
length = input(title='Length', defval=14)
highlightMovements = input(title='Highlight Movements ?', defval=true)
src = input(title='Source', defval=close)

lag = math.floor((length - 1) / 2)

zlema = ta.ema(src + src - src[lag], length)

zlemaColor = highlightMovements ? zlema > zlema[1] ? color.green : color.red : #6d1e7f
plot(zlema, title='ZLEMA', linewidth=2, color=zlemaColor, transp=0)


// TAKE PROFIT AND STOP LOSS
long_tp1_inp = input.float(1, title='Long Take Profit 1 %', step=0.1) / 100
long_tp1_qty = input.int(10, title='Long Take Profit 1 Qty', step=1)

long_tp2_inp = input.float(5, title='Long Take Profit 2%', step=0.1) / 100
long_tp2_qty = input.int(50, title='Long Take Profit 2 Qty', step=1)

long_take_level_1 = strategy.position_avg_price * (1 + long_tp1_inp)
long_take_level_2 = strategy.position_avg_price * (1 + long_tp2_inp)




// Stop Loss
multiplier = input.float(2.2, 'SL Mutiplier', minval=1, step=0.1)
ATR_period = input.int(17, 'ATR period', minval=1, step=1)

// Strategy
entry_long = zlema > zlema[1]
entry_price_long = ta.valuewhen(entry_long, close, 0)
SL_floating_long = entry_price_long - multiplier * Atr(ATR_period)
exit_long = zlema < zlema[1]

///// BACKTEST PERIOD ///////
testStartYear = input(2022, 'Backtest Start Year')
testStartMonth = input(1, 'Backtest Start Month')
testStartDay = input(1, 'Backtest Start Day')
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)

testStopYear = input(9999, 'Backtest Stop Year')
testStopMonth = input(12, 'Backtest Stop Month')
testStopDay = input(31, 'Backtest Stop Day')
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false

if testPeriod()
    strategy.entry('long', strategy.long, comment='Long', when=entry_long)
    strategy.exit('TP1', 'long', qty_percent=long_tp1_qty, limit=long_take_level_1)  //, trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
    strategy.exit('TP2', qty_percent=long_tp2_qty, limit=long_take_level_2)  //, trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
    strategy.close('long', when=exit_long, comment='exit long')


// LONG POSITION
plot(strategy.position_size > 0 ? long_take_level_1 : na, style=plot.style_linebr, color=color.new(color.green, 0), linewidth=1, title='1st Long Take Profit')
plot(strategy.position_size > 0 ? long_take_level_2 : na, style=plot.style_linebr, color=color.new(color.green, 0), linewidth=1, title='2nd Long Take Profit')
plot(strategy.position_size > 0 ? SL_floating_long : na, style=plot.style_linebr, color=color.new(color.red, 0), linewidth=1, title='Long Stop Loss')


if testPeriod()
    strategy.entry('long', strategy.long, comment='Long', when=entry_long)


// LONG POSITIONplot(strategy.position_size > 0 ? SL_floating_long : na, style=plot.style_linebr, color=color.new(color.red, 0), linewidth=1, title='Long Stop Loss')