Trend Mengikuti Strategi Persilangan Purata Pergerakan


Tarikh penciptaan: 2024-01-29 16:52:46 Akhirnya diubah suai: 2024-01-29 16:52:46
Salin: 3 Bilangan klik: 596
1
fokus pada
1617
Pengikut

Trend Mengikuti Strategi Persilangan Purata Pergerakan

Gambaran keseluruhan

Strategi ini adalah berdasarkan kepada strategi mudah moving averages yang boleh memberi kesan yang baik pada pasangan mata wang yang berbeza. Ia memetakan rata-rata pembukaan dan rata-rata penutupan, apabila dua garis bersilang memutuskan untuk membuat atau keluar dari kedudukan berbilang. Prinsipnya adalah untuk membuat kedudukan apabila harga penutupan rata-rata naik, yang mungkin menandakan kenaikan harga masa depan.

Prinsip Strategi

Strategi ini bermula dengan memilih jenis purata bergerak mengikut tetapan, termasuk EMA, SMA, RMA, WMA, dan VWMA. Kemudian menetapkan kitaran pengiraan purata bergerak, biasanya 10 hingga 250 garis K. Mengikut pasangan mata wang yang berbeza, memilih jenis dan jumlah kitaran purata bergerak yang berbeza dapat memberikan kesan yang sama sekali berbeza.

Logik transaksi khusus dalam strategi ini ialah:

  1. Mengira purata bergerak harga pembukaan dan harga penutupan;
  2. Bandingkan nilai purata harga penutupan dengan purata harga pembukaan;
  3. Jika harga ditutup di atas rata-rata harga dibuka, anda boleh membuat kedudukan berlebih;
  4. Jika harga tutup berada di bawah harga bukaan, maka anda akan melonggarkan kedudukan anda.

Apabila kedudukan ditubuhkan, ia dianggap sebagai tanda kenaikan harga, dan apabila posisi dipadamkan, ia dianggap sebagai tanda penurunan harga.

Analisis kelebihan strategi

Strategi ini mempunyai beberapa kelebihan:

  1. Tetapan parameter yang fleksibel, yang membolehkan anda memilih parameter yang paling sesuai untuk pasangan mata wang yang berbeza, yang menjadikan penargetan yang kuat;
  2. Logiknya mudah, mudah difahami dan dilaksanakan.
  3. Dalam beberapa pasangan mata wang, kadar pulangan yang sangat tinggi boleh diperoleh, dan secara keseluruhan lebih stabil;
  4. Anda boleh memilih untuk memaparkan pelbagai petunjuk mengikut keperluan anda.

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Dalam beberapa pasangan mata wang dan parameter, kadar pulangan dan kestabilan tidak tinggi;
  2. Tidak dapat bertindak balas dengan berkesan terhadap perubahan harga jangka pendek, dan tidak berkesan terhadap mata wang yang sangat tidak menentu;
  3. Pengambilan purata bergerak berdasarkan kitaran tidak cukup saintifik dan agak subjektif.

Kaedah untuk mengatasi dan mengoptimumkan:

  1. Memilih jangka masa yang panjang, seperti 12 jam dan 1 hari, dapat mengurangkan transaksi yang tidak perlu dan meningkatkan kestabilan;
  2. Tambah fungsi pengoptimuman parameter, secara automatik menguji kombinasi parameter yang berbeza untuk mencari parameter yang optimum;
  3. Tambah fungsi untuk menyesuaikan diri untuk memilih kitaran purata bergerak, supaya sistem secara automatik menentukan kitaran terbaik.

ringkaskan

Strategi ini secara keseluruhannya logiknya mudah, menggunakan indikator purata bergerak untuk menentukan trend harga dan titik-titik perubahan. Ia boleh mencapai kesan yang sangat baik dengan menyesuaikan parameter, merupakan strategi penjejakan trend yang berkesan yang patut disempurnakan dan digunakan.

Kod sumber strategi
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//Author @divonn1994

initial_balance = 100
strategy(title='Close v Open Moving Averages Strategy', shorttitle = 'Close v Open', overlay=true, pyramiding=0, default_qty_value=100, default_qty_type=strategy.percent_of_equity, precision=7, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent, initial_capital=initial_balance)

//Input for number of bars for moving average, Switch to choose moving average type, Display Options and Time Frame of trading----------------------------------------------------------------

bars = input.int(66, "Moving average length (number of bars)", minval=1, group='Strategy') //66 bars and VWMA for BTCUSD on 12 Hours.. 35 bars and VWMA for BTCUSD on 1 Day
strategy = input.string("VWMA", "Moving Average type", options = ["EMA", "SMA", "RMA", "WMA", "VWMA"], group='Strategy')

redOn = input.string("On", "Red Background Color On/Off", options = ["On", "Off"], group='Display')
greenOn = input.string("On", "Green Background Color On/Off", options = ["On", "Off"], group='Display')
maOn = input.string("On", "Moving Average Plot On/Off", options = ["On", "Off"], group='Display')

startMonth = input.int(title='Start Month 1-12 (set any start time to 0 for furthest date)', defval=1, minval=0, maxval=12, group='Beginning of Strategy')
startDate = input.int(title='Start Date 1-31 (set any start time to 0 for furthest date)', defval=1, minval=0, maxval=31, group='Beginning of Strategy')
startYear = input.int(title='Start Year 2000-2100 (set any start time to 0 for furthest date)', defval=2011, minval=2000, maxval=2100, group='Beginning of Strategy')

endMonth = input.int(title='End Month 1-12 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=12, group='End of Strategy')
endDate = input.int(title='End Date 1-31 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=31, group='End of Strategy')
endYear = input.int(title='End Year 2000-2100 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=2100, group='End of Strategy')

//Strategy Calculations-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

inDateRange = true

maMomentum = switch strategy
    "EMA" => (ta.ema(close, bars) > ta.ema(open, bars)) ? 1 : -1
    "SMA" => (ta.sma(close, bars) > ta.sma(open, bars)) ? 1 : -1
    "RMA" => (ta.rma(close, bars) > ta.rma(open, bars)) ? 1 : -1
    "WMA" => (ta.wma(close, bars) > ta.wma(open, bars)) ? 1 : -1
    "VWMA" => (ta.vwma(close, bars) > ta.vwma(open, bars)) ? 1 : -1
    =>
        runtime.error("No matching MA type found.")
        float(na)

openMA = switch strategy
    "EMA" => ta.ema(open, bars)
    "SMA" => ta.sma(open, bars)
    "RMA" => ta.rma(open, bars)
    "WMA" => ta.wma(open, bars)
    "VWMA" => ta.vwma(open, bars)
    =>
        runtime.error("No matching MA type found.")
        float(na)
        
closeMA = switch strategy
    "EMA" => ta.ema(close, bars)
    "SMA" => ta.sma(close, bars)
    "RMA" => ta.rma(close, bars)
    "WMA" => ta.wma(close, bars)
    "VWMA" => ta.vwma(close, bars)
    =>
        runtime.error("No matching MA type found.")
        float(na)

//Enter or Exit Positions--------------------------------------------------------------------------------------------------------------------------------------------------------------------

if ta.crossover(maMomentum, 0)
    if inDateRange
        strategy.entry('long', strategy.long, comment='long')
if ta.crossunder(maMomentum, 0)
    if inDateRange
        strategy.close('long')

//Plot Strategy Behavior---------------------------------------------------------------------------------------------------------------------------------------------------------------------

plot(series = maOn == "On" ? openMA : na, title = "Open moving Average", color = color.new(color.purple,0), linewidth=3, offset=1)
plot(series = maOn == "On" ? closeMA : na, title = "Close Moving Average", color = color.new(color.white,0), linewidth=2, offset=1)
bgcolor(color = inDateRange and (greenOn == "On") and maMomentum > 0 ? color.new(color.green,75) : inDateRange and (redOn == "On") and maMomentum <= 0 ? color.new(color.red,75) : na, offset=1)