Strategi Pemegang Posisi SMA yang kukuh dan stabil

Penulis:ChaoZhang, Tarikh: 2023-12-18 17:44:16
Tag:

img

Ringkasan

Strategi ini adalah strategi memegang kedudukan yang mudah berdasarkan garis SMA. Ia pergi lama apabila garis SMA jangka pendek melintasi garis SMA jangka panjang, dan menutup kedudukan apabila garis SMA jangka pendek melintasi di bawah garis SMA jangka panjang.

Prinsip Strategi

Strategi ini menggunakan dua garis SMA, satu garis jangka pendek 20 hari dan satu garis jangka panjang 50 hari. Garis jangka pendek dapat menangkap perubahan trend harga dengan lebih cepat, sementara garis jangka panjang menapis bunyi jangka pendek. Apabila garis jangka pendek meningkat dengan cepat di atas garis jangka panjang, ia menunjukkan trend mungkin telah memulakan kenaikan jangka panjang, jadi kita pergi panjang di sini. Apabila garis jangka pendek jatuh di bawah garis jangka panjang, ia menunjukkan trend kenaikan mungkin telah berakhir, jadi kita menutup kedudukan di sini.

Ringkasnya, strategi ini menggunakan ciri-ciri lengkung garis SMA untuk menentukan trend pergerakan harga pada dua dimensi masa, dan membuat keuntungan yang stabil dengan memegang kedudukan yang agak stabil.

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Mudah digunakan, mudah difahami, halangan yang rendah untuk digunakan
  2. Relatif stabil dengan memanfaatkan kekuatan garis SMA
  3. Tempoh penahan yang panjang, kurang dipengaruhi oleh bunyi pasaran jangka pendek
  4. Beberapa parameter yang boleh dikonfigurasi, mudah untuk mencari kombinasi parameter optimum

Analisis Risiko

Risiko strategi ini termasuk:

  1. Lebih banyak stop loss mungkin apabila pasaran terhad julat yang berpanjangan
  2. Garis SMA mempunyai kesan kelewatan, tidak dapat menangkap perubahan harga segera
  3. Tidak dapat memanfaatkan corak penurunan jangka pendek
  4. Tidak dapat mengawal saiz kerugian perdagangan tunggal

Arahan pengoptimuman

Strategi ini boleh dioptimumkan lagi dalam aspek berikut:

  1. Tambah penunjuk MACD untuk mengenal pasti masa rebound bawah untuk kerugian yang kurang semasa pasaran terikat julat
  2. Uji gabungan parameter garis SMA yang berbeza untuk mencari optimum
  3. Menggabungkan penunjuk domestik untuk mengesan perbezaan trend, meningkatkan ketepatan kemasukan
  4. Menambah mekanisme mengambil keuntungan dan menghentikan kerugian untuk mengawal keuntungan/kerugian setiap perdagangan

Ringkasan

Ringkasnya, strategi memegang kedudukan SMA ini adalah stabil, mudah dan mudah dikendalikan, sesuai untuk perdagangan langsung pemula.


/*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')



Lebih lanjut