Strategi peningkatan kedudukan dinamik purata bergerak berbilang isyarat penyesuaian

DCA MA SMA EMA HMA RSI STOCHASTIC RSI
Tarikh penciptaan: 2025-08-19 10:57:23 Akhirnya diubah suai: 2025-08-19 10:57:23
Salin: 1 Bilangan klik: 207
2
fokus pada
319
Pengikut

Strategi peningkatan kedudukan dinamik purata bergerak berbilang isyarat penyesuaian Strategi peningkatan kedudukan dinamik purata bergerak berbilang isyarat penyesuaian

Gambaran keseluruhan

Strategi penyenaraian kedudukan dinamik berskala selari pelbagai isyarat adalah strategi perdagangan kuantitatif yang direka khas untuk pasaran cryptocurrency yang menggabungkan indikator analisis teknikal dengan sistem pengurusan kedudukan dinamik. Gagasan utamanya adalah menggunakan isyarat persilangan purata bergerak cepat dan perlahan dan indikator yang agak kuat secara rawak ((Stochastic RSI)) untuk menentukan arah trend pasaran dan masa masuk, sambil menggunakan kaedah penyenaraian piramid untuk bertindak balas terhadap perubahan harga.

Prinsip Strategi

Strategi ini berasaskan beberapa komponen teknologi utama:

  1. Sistem purata bergerak bergandaStrategi menggunakan dua persilangan purata bergerak ((cepat dan perlahan) sebagai isyarat masuk utama. Pengguna boleh memilih purata bergerak sederhana ((SMA), purata bergerak indeks ((EMA) atau purata bergerak Hull ((HMA), dan boleh memilih untuk masuk ke atas atau ke bawah ketika persilangan rata-rata mengikut keadaan pasaran.

  2. Indeks Relatif Kuat Random (RSI Stokastik)Sebagai syarat kemasukan tambahan, isyarat beli akan dicetuskan apabila Stochastic RSI berada pada tahap 5 pada garis K, sementara rata-rata bergerak pantas berada dalam trend menaik ((5 kitaran berturut-turut naik).

  3. Sistem Pesanan Keselamatan DinamikSelepas kemasukan awal, strategi akan menetapkan beberapa pesanan keselamatan di bawah paras harga yang telah ditetapkan. paras harga ini dikira berdasarkan parameter bias harga dan faktor skala panjang langkah.

  4. Pembaikan dinamik saiz kedudukanUkuran setiap pesanan keselamatan meningkat secara beransur-ansur mengikut faktor penskalaan skala pesanan keselamatan, membentuk struktur penambahan simpanan yang meningkat.

  5. Mekanisme penyetempatan keuntungan sasaranStrategi ini menetapkan tahap keuntungan sasaran berdasarkan harga purata pegangan, dan semua kedudukan akan dipadamkan apabila harga naik ke tahap tersebut.

Proses pelaksanaan strategi adalah seperti berikut:

  • Posisi awal dibina berdasarkan saiz pesanan asas apabila syarat-syarat rSI atau Stochastic RSI dipenuhi
  • Jika harga turun, mencetuskan pesanan keselamatan mengikut tahap ketidaksamaan harga yang diingini
  • Saiz setiap perintah keselamatan meningkat secara perbandingan, sehingga 10 perintah keselamatan boleh ditetapkan
  • Apabila harga naik semula ke harga pegangan purata ditambah peratusan keuntungan sasaran, semua kedudukan akan dipadamkan sekali gus

Kelebihan Strategik

  1. Isyarat kemasukan pelbagai dimensiGabungan indikator trend ((Moving Average) dan indikator momentum ((Stochastic RSI), meningkatkan ketepatan masuk dan mengurangkan isyarat palsu.

  2. Sangat boleh menyesuaikan diriParameter strategi sangat disesuaikan, pengguna boleh menyesuaikan jenis rata-rata bergerak, kitaran, arah silang, nisbah ketidakseimbangan harga dan sebagainya mengikut keadaan pasaran yang berbeza dan pilihan risiko peribadi.

  3. Kesan purata kosDengan menggunakan sistem pesanan selamat yang disediakan, anda dapat menaikkan stok secara automatik apabila harga turun, mengurangkan kos memegang rata-rata dan meningkatkan peluang keuntungan akhir.

  4. Pengoptimuman kecekapan kewanganPendaftaran selamat: Reka bentuk peningkatan skala membuat pengagihan dana lebih cekap, lebih banyak wang akan diperuntukkan kepada pesanan dengan harga yang lebih rendah, sesuai dengan konsep pelaburan nilai.

  5. Pelaksanaan automatikSetelah parameter ditetapkan, strategi boleh dijalankan secara automatik tanpa campur tangan manusia, mengurangkan keputusan perdagangan emosi.

  6. Kebolehan beradaptasi pasaran yang fleksibelDengan menyesuaikan arah penyambungan purata bergerak ((ke atas atau ke bawah), strategi dapat disesuaikan dengan keadaan pasaran yang berbeza ((bull market atau bear market)).

Risiko Strategik

  1. Risiko tanpa hentiTidak ada mekanisme hentian kerugian yang jelas dalam reka bentuk strategi, yang boleh menyebabkan kerugian besar dalam keadaan penurunan yang berterusan. Dalam keadaan pasaran yang melampau, seperti harga aset jatuh atau kembali ke sifar, yang boleh menyebabkan kerugian besar.

  2. Keperluan kewangan yang tinggiOleh kerana strategi ini memerlukan dana yang disediakan untuk beberapa pesanan keselamatan, dan setiap pesanan meningkat, dana yang sebenarnya diperlukan mungkin jauh melebihi pelaburan awal, dan pelabur perlu memastikan bahawa terdapat cukup wang tunai.

  3. Menjadi pelbagai biasStrategi semasa hanya direka untuk menyokong pelbagai arah, dan tidak berkesan dalam trend menurun jangka panjang. Ia disyorkan untuk menggunakan strategi ini pada aset yang kelihatan baik secara keseluruhan.

  4. Kepekaan ParameterPrestasi strategi sangat bergantung pada parameter yang ditetapkan, parameter yang tidak betul boleh menyebabkan pemicu awal pesanan keselamatan atau penambahan stok yang berlebihan.

  5. Kesilapan kos purataWalaupun strategi ini bertujuan untuk mengurangkan kos purata dengan menambah perisai, ia boleh menyebabkan “penarikan balik” dan penangkapan dana jika nilai aset terus menurun dan tidak dapat dipulihkan.

Kaedah untuk mengurangkan risiko termasuk: menggunakan strategi ini pada aset yang kelihatan baik secara keseluruhan; menyediakan dana yang mencukupi untuk pesanan keselamatan; memeriksa parameter strategi secara berkala untuk kesesuaian dengan keadaan pasaran; menetapkan had jumlah pesanan keselamatan maksimum; pertimbangkan untuk menambah mekanisme menghentikan kerugian global dalam strategi.

Arah pengoptimuman

  1. Meningkatkan mekanisme kawalan kerugianKelemahan strategi yang paling ketara ialah tidak ada mekanisme hentian kerugian. Ia disyorkan untuk menambah parameter hentian kerugian secara keseluruhan, memaksa semua kedudukan kosong apabila kerugian mencapai peratusan tertentu, untuk melindungi keselamatan dana.

  2. Bergabung dengan penapis trend pasaranAnda boleh menambah indikator penghakiman trend dengan tempoh yang lebih lama, seperti purata bergerak jangka panjang atau indikator ADX, dan hanya melaksanakan strategi apabila arah trend utama selaras, untuk mengelakkan penambahan kedudukan yang tidak perlu dalam pasaran beruang yang jelas.

  3. Mengoptimumkan logik pemicu pesanan keselamatanPerintah keselamatan semasa hanya berdasarkan pemicu ketidakseimbangan harga, boleh dipertimbangkan untuk menggabungkan jumlah lalu lintas, kadar turun naik atau petunjuk teknikal lain untuk memicu pesanan keselamatan dengan lebih bijak.

  4. Pindaan dinamik kepada sasaran keuntungan: boleh menyesuaikan tahap keuntungan sasaran mengikut turun naik pasaran atau pergerakan harga selepas kemasukan, menetapkan keuntungan sasaran yang lebih tinggi dalam persekitaran pasaran yang bergelombang tinggi.

  5. Tambah fungsi pengosonganStrategi pelonggaran menyokong arah shorting, yang membolehkan ia sama berkesan dalam trend menurun, meningkatkan kesesuaian strategi di seluruh pasaran.

  6. Tambah kawalan anjakan semula: Tetapkan had maksimum untuk penarikan balik, berhenti berdagang atau menetapkan semula parameter apabila penarikan balik strategi melebihi paras terhad, untuk mengelakkan kerugian berterusan dalam keadaan pasaran yang tidak menguntungkan.

  7. Pengoptimuman parameter berkalaMenambah fungsi pengoptimuman parameter automatik, menyesuaikan parameter secara berkala berdasarkan data pasaran terkini, supaya strategi dapat menyesuaikan diri dengan perubahan ciri pasaran.

Arahan pengoptimuman ini bertujuan untuk meningkatkan keupayaan pengurusan risiko strategi, kebolehan beradaptasi dengan pasaran dan kestabilan jangka panjang, yang membolehkan ia mencapai prestasi yang stabil dalam pelbagai keadaan pasaran.

ringkaskan

Strategi penyenaraian kedudukan dinamik berskala rata-rata pelbagai isyarat yang beradaptasi dengan sendirinya menyediakan kaedah perdagangan yang sistematik untuk pasaran cryptocurrency dengan menggabungkan isyarat masuk dari purata bergerak dan penunjuk yang agak kuat secara rawak. Kelebihan utamanya adalah keupayaan untuk secara automatik menambah kedudukan secara beransur-ansur apabila harga kembali, mengurangkan kos memegang kedudukan purata, dan memperoleh keuntungan apabila harga naik.

Walau bagaimanapun, strategi ini juga mempunyai risiko yang jelas, terutamanya kekurangan mekanisme hentikan kerugian dan kehilangan dana yang mungkin berlaku dalam keadaan penurunan yang berterusan. Para pelabur harus memahami sepenuhnya sifat risikonya ketika menggunakan strategi ini, memastikan mereka mempunyai rizab dana yang mencukupi, dan mempertimbangkan untuk menambah langkah-langkah kawalan risiko tambahan.

Dengan penyetempatan parameter yang munasabah dan arah pengoptimuman yang disyorkan, strategi ini boleh menjadi alat yang kuat untuk pelabur cryptocurrency jangka panjang, terutama bagi pelabur yang percaya pada nilai jangka panjang aset crypto tertentu tetapi ingin mengoptimumkan kos masuk. Dalam aplikasi praktikal, disarankan untuk menguji terlebih dahulu dalam persekitaran simulasi dan terus menyesuaikan dan mengoptimumkan parameter strategi mengikut prestasi pasaran sebenar.

Kod sumber strategi
/*backtest
start: 2024-08-19 00:00:00
end: 2025-08-18 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_OKX","currency":"BTC_USDT","balance":5000}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// 

//@version=6

strategy(title = 'PEPE- DCA Strategy', overlay = true, pyramiding = 11, process_orders_on_close = true, commission_value = 0.1)

Base_order_size = input.int(1500, 'Base order Size')/close
Safety_order_size = input.int(350, 'Save order')/close

Triger_Type = input.string('Over', 'Entry at Cross Over / Under', options = ['Over', 'Under'], group = 'Deal start condition > Trading View custom signal', inline = '1', tooltip = 'Deal start condition decision')
Short_Moving_Average = input.string('SMA', 'Short Moving Average', group = 'Deal start condition > Trading View custom signal', inline = '2', options = ['SMA', 'EMA', 'HMA'])
Short_Period = input.int(17, 'Period', group = 'Deal start condition > Trading View custom signal', inline = '2')
Long_Moving_Average = input.string('HMA', 'Long Moving Average', group = 'Deal start condition > Trading View custom signal', inline = '3', options = ['SMA', 'EMA', 'HMA'])
Long_Period = input.int(26, 'Period', group = 'Deal start condition > Trading View custom signal', inline = '3')
Target_profit = input.float(1.9, 'Target profit (%)', step = 0.05, group = 'Take profit / Stop Loss', inline = '1') * 0.01
Max_safety_trades_count = input.int(5, 'Max safety trades count', maxval = 10, group = 'Safety orders', inline = '1')
Price_deviation = input.float(2.45, 'Price deviation to open safety orders (% from initial order)', step = 0.01, group = 'Safety orders', inline = '2') * 0.01
Safety_order_volume_scale = input.float(1.85, 'Safety order volume scale', step = 0.01, group = 'Safety orders', inline = '3')
Safety_order_step_scale = input.float(1.61, 'Safety order step scale', step = 0.01, group = 'Safety orders', inline = '3')



// Position status
status_none = strategy.opentrades == 0
status_long = strategy.position_size[1] == 0 and strategy.position_size > 0

/////////// Moving_Averages 

Short_Moving_Average_Line = Short_Moving_Average == 'SMA' ? ta.sma(close, Short_Period) : Short_Moving_Average == 'EMA' ? ta.ema(close, Short_Period) : Short_Moving_Average == 'HMA' ? ta.sma(close, Short_Period) : na

Long_Moving_Average_Line = Long_Moving_Average == 'SMA' ? ta.sma(close, Long_Period) : Long_Moving_Average == 'EMA' ? ta.ema(close, Long_Period) : Long_Moving_Average == 'HMA' ? ta.sma(close, Long_Period) : na
///////////// Moving_Averages long condition
Base_order_Condition = Triger_Type == 'Over' ? ta.crossover(Short_Moving_Average_Line, Long_Moving_Average_Line) : ta.crossunder(Short_Moving_Average_Line, Long_Moving_Average_Line) // Buy when close crossing lower band
//////////////////// Savety order deviation
safety_order_deviation(index) =>
    Price_deviation * math.pow(Safety_order_step_scale, index - 1)
pd = Price_deviation
ss = Safety_order_step_scale
//////// Cal of deviation steps
step(i) =>
    i == 1 ? pd : i == 2 ? pd + pd * ss : i == 3 ? pd + (pd + pd * ss) * ss : i == 4 ? pd + (pd + (pd + pd * ss) * ss) * ss : i == 5 ? pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss : i == 6 ? pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss : i == 7 ? pd + (pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss) * ss : i == 8 ? pd + (pd + (pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss) * ss) * ss : i == 9 ? pd + (pd + (pd + (pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss) * ss) * ss) * ss : i == 10 ? pd + (pd + (pd + (pd + (pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss) * ss) * ss) * ss) * ss : na

long_line(i) =>
    close[1] - close[1] * step(i)

////////// Savety order Triger
Safe_order_line(i) =>
    i == 0 ? ta.valuewhen(status_long, long_line(0), 0) : i == 1 ? ta.valuewhen(status_long, long_line(1), 0) : i == 2 ? ta.valuewhen(status_long, long_line(2), 0) : i == 3 ? ta.valuewhen(status_long, long_line(3), 0) : i == 4 ? ta.valuewhen(status_long, long_line(4), 0) : i == 5 ? ta.valuewhen(status_long, long_line(5), 0) : i == 6 ? ta.valuewhen(status_long, long_line(6), 0) : i == 7 ? ta.valuewhen(status_long, long_line(7), 0) : i == 8 ? ta.valuewhen(status_long, long_line(8), 0) : i == 9 ? ta.valuewhen(status_long, long_line(9), 0) : i == 10 ? ta.valuewhen(status_long, long_line(10), 0) : na
l1 =  Safe_order_line(1) 
l2 =  Safe_order_line(2) 
l3 =  Safe_order_line(3)
l4 =  Safe_order_line(4) 
l5 =  Safe_order_line(5) 
l6 =  Safe_order_line(6) 
l7 =  Safe_order_line(7) 
l8 =  Safe_order_line(8) 
l9 =  Safe_order_line(9)
l10 = Safe_order_line(10)   
//// take profit
TP_line = strategy.position_avg_price * (1 + Target_profit)
//Size of safety orders
safety_order_size(i) =>
    Safety_order_size * math.pow(Safety_order_volume_scale, i - 1)

///plots

plot(Short_Moving_Average_Line, 'Short MA', color = color.new(color.red, 0), style = plot.style_line)
plot(Long_Moving_Average_Line, 'Long MA', color = color.new(color.green, 0), style = plot.style_line)
plot(strategy.opentrades == 1  ? l1 : na, 'Safety order1',color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 2  ? l2 : na, 'Safety order2', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 3  ? l3 : na, 'Safety order3', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 4  ? l4 : na, 'Safety order4', color =color.red, style = plot.style_linebr)
plot(strategy.opentrades == 5  ? l5 : na, 'Safety order5', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 6  ? l6 : na, 'Safety order5', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 7  ? l7 : na, 'Safety order6', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 8  ? l8 : na, 'Safety order7', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 9 ?  l9 : na, 'Safety order8', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 10 ? l10 : na, 'Safety order9', color = color.red, style = plot.style_linebr)
plot(strategy.position_size > 0 ? TP_line : na, 'Take Profit', color = color.green, style = plot.style_linebr)

///////////////SToch-Rsi
smoothK = input.int(1, "ST_RSI -K settings for long", minval=1)
smoothD = input.int(3, "ST_RSI-D settings for long", minval=1)
lengthRSI = input.int(14, "RSI Length", minval=1)
lengthStoch = input.int(9, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
rsi1 = ta.rsi(src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)

////////buy cond- ST_RSI
bk = ta.crossover(k,5)
r = ta.rising(Short_Moving_Average_Line,5)
buy = bk and r

//Stradegy mod

if Base_order_Condition or buy
    if (Base_order_Condition or buy ) and strategy.opentrades == 0
        strategy.entry('Base order', strategy.long, qty = Base_order_size )

for i = 1 to Max_safety_trades_count by 1
    i_s = str.tostring(i)
    if strategy.opentrades <= i and strategy.position_size > 0 and not(strategy.position_size == 0)
        strategy.entry('Safety order' + i_s, strategy.long, qty = safety_order_size(i) , limit = Safe_order_line(i))

for i = 1 to Max_safety_trades_count by 1
    i_s = str.tostring(i)
    if status_none
        strategy.cancel('Safety order' + i_s)
    strategy.exit('TP/SL', 'Base order', limit = TP_line)
    strategy.exit('TP/SL', 'Safety order' + i_s, limit = TP_line)

//