Strategi posisi rata-rata pergerakan SMA yang solid dan andal


Tanggal Pembuatan: 2023-12-18 17:44:16 Akhirnya memodifikasi: 2023-12-18 17:44:16
menyalin: 0 Jumlah klik: 627
1
fokus pada
1621
Pengikut

Strategi posisi rata-rata pergerakan SMA yang solid dan andal

Ringkasan

Strategi ini adalah strategi memegang posisi sederhana yang didasarkan pada garis rata-rata SMA. Terbuka posisi lebih banyak ketika garis SMA jangka pendek melewati garis SMA jangka panjang; Terbuka posisi lebih rendah ketika garis SMA jangka pendek melewati garis SMA jangka panjang.

Prinsip Strategi

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

Secara keseluruhan, strategi ini memanfaatkan karakteristik kurva rata-rata SMA untuk menilai tren pergerakan harga pada dua dimensi waktu, dengan cara memegang posisi yang lebih stabil untuk mendapatkan keuntungan.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Operasi sederhana, mudah dipahami, ambang batas rendah
  2. Memanfaatkan SMA rata-rata, relatif stabil
  3. Posisi jangka panjang, tidak mudah terpengaruh oleh kebisingan pasar jangka pendek
  4. Parameter yang dapat dikonfigurasi lebih sedikit, mudah dioptimalkan untuk menemukan kombinasi parameter yang optimal

Analisis risiko

Strategi ini juga memiliki risiko sebagai berikut:

  1. Ketika pasar bergejolak lama, stop loss lebih mungkin terjadi
  2. SMA rata-rata memiliki keterlambatan dan tidak dapat menangkap perubahan harga secara tepat waktu
  3. Kegagalan untuk memanfaatkan keuntungan dari kenaikan harga dalam jangka pendek
  4. Tidak dapat mengontrol ukuran kerugian

Arah optimasi

Strategi ini juga dapat dioptimalkan dalam beberapa hal:

  1. Ini adalah waktu yang tepat untuk bergabung dengan MACD untuk menilai rebound di bawah, untuk mengurangi kerugian dalam kondisi goyah.
  2. Uji kombinasi rata-rata SMA dari berbagai parameter untuk mencari parameter optimal
  3. Menambah akurasi pembukaan posisi dengan menambahkan indikator domestik untuk menilai trend deviasi
  4. Meningkatkan strategi Stop Loss dan Mengontrol Kerugian Tunggal

Meringkaskan

Secara keseluruhan, strategi pegangan rata-rata SMA ini stabil, sederhana, mudah dioperasikan, dan cocok untuk pemula. Dengan perkembangan perdagangan kuantitatif, strategi ini dapat dioptimalkan dengan memperkenalkan lebih banyak indikator dan teknik untuk mendapatkan hasil yang lebih baik.

Kode 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')