Strategi tempoh salib purata bergerak bertimbang berdasarkan julat sebenar

Penulis:ChaoZhang, Tarikh: 2024-01-17 15:09:28
Tag:

img

Ringkasan

Strategi ini menggunakan Julat Benar dan Purata Bergerak Bertimbang (WMA) untuk membina penunjuk tempoh silang untuk penilaian trend. Pada masa yang sama, ia mempunyai mekanisme pengumpulan kedudukan piramid dengan pelbagai mekanisme hentian kerugian untuk mengejar keuntungan yang stabil.

Prinsip Strategi

Strategi ini mula-mula mengira amplitudo ke atas (sube) dan amplitudo ke bawah (baja), dan kemudian mengira WMA kitaran garisan pantas (corto) dan kitaran garisan perlahan (largo) masing-masing. Perbezaan antara garisan pantas dan perlahan dikira lagi melalui WMA untuk mendapatkan penunjuk (ind). Apabila penunjuk melintasi di atas 0, isyarat beli dihasilkan. Apabila melintasi di bawah 0, isyarat jual dihasilkan.

Selepas memasuki pasaran, strategi menetapkan 5 kedudukan, yang terkumpul dengan cara piramid (ganda). Pada masa yang sama, mekanisme stop loss ditetapkan supaya kedudukan berikutnya dibuka akan dinilai sama ada keuntungan terapung semasa lebih rendah daripada garis stop loss, untuk mengawal risiko.

Analisis Kelebihan

Strategi ini mengintegrasikan mekanisme seperti penghakiman kitaran silang, pengumpulan kedudukan piramid, dan banyak kerugian berhenti, yang dapat mengawal risiko dengan berkesan dan mengejar keuntungan yang stabil.

Penghakiman kitaran silang menubuhkan sistem penghakiman trend melalui gabungan garis cepat dan perlahan, yang dapat menapis bunyi pasaran dengan berkesan dan mengenal pasti titik perubahan trend. Kedudukan piramid boleh memperoleh lebih banyak keuntungan pada awal trend, dan pelbagai mekanisme hentian kerugian dapat mengawal kerugian tunggal dengan berkesan.

Analisis Risiko

Risiko utama strategi ini adalah kemungkinan peristiwa tiba-tiba yang menyebabkan pembalikan pasaran yang cepat yang mencetuskan stop loss cutoff dan menyebabkan kerugian.

Risiko pembalikan pasaran dapat ditangani dengan menenangkan garis stop loss dengan sewajarnya. Mengoptimumkan tetapan parameter dan menyesuaikan parameter kitaran, bilangan kedudukan, dan lain-lain dapat meningkatkan kestabilan strategi.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Meningkatkan penunjuk statistik untuk penilaian, menggunakan penunjuk seperti turun naik dan jumlah untuk membetulkan parameter dan menjadikan strategi lebih mudah disesuaikan.

  2. Meningkatkan model pembelajaran mesin untuk penilaian, menggunakan LSTM dan model pembelajaran mendalam lain untuk membantu penilaian dan meningkatkan ketepatan strategi.

  3. Mengoptimumkan mekanisme pengurusan kedudukan, mempertimbangkan penyesuaian amplitud peningkatan kedudukan mengikut peratusan keuntungan yang berubah untuk menjadikan pertumbuhan kedudukan lebih munasabah.

  4. Menggabungkan model lindung nilai niaga hadapan untuk mengawal risiko dengan lebih lanjut melalui arbitrage spot dan niaga hadapan.

Ringkasan

Ringkasnya, ini adalah strategi trend lintas kitaran berdasarkan penunjuk Julat Benar dengan pengumpulan kedudukan piramid dan pelbagai mekanisme stop loss, yang dapat mengawal risiko dengan berkesan dan mengejar keuntungan yang stabil. Ini adalah strategi perdagangan kuantitatif yang sangat praktikal. Walau bagaimanapun, perhatian masih diperlukan untuk membalikkan risiko dan masalah pengoptimuman parameter. Pengoptimuman lanjut boleh dilakukan dalam statistik, pembelajaran mesin dan aspek lain.


/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

//@version=5
strategy("[MACLEN] Rangos", shorttitle="Rangos [https://t.me/Bitcoin_Maclen]", overlay=false )

//------WINDOW----------

i_startTime = input(defval = timestamp("01 Jan 2022 00:00 -0700"), title = "Start Time", group = "Backtest Window")
i_endTime = input(defval = timestamp("31 Dec 2025 00:00 -0700"), title = "End Time")
window = true

//-----------------------------

sube = close>close[1] ? ta.tr : 0
baja = close<close[1] ? ta.tr : 0

corto = input(10)
largo = input(30)
suavizado = input(10)

fastDiff = ta.wma(sube, corto) - ta.wma(baja,corto)
slowDiff = ta.wma(sube, largo) - ta.wma(baja, largo)
ind = ta.wma(fastDiff - slowDiff, suavizado)

iColor = ind>0 ? color.green : ind<0 ? color.red : color.black
plot(ind, color=iColor)
plot(0, color=color.white)

long = ind[1]<ind and ind[2]<ind[1] and ind<0
short = ind[1]>ind and ind[2]>ind[1] and ind>0

plotshape(long and not long[1], style = shape.xcross, color=color.green, location=location.bottom, size=size.tiny)
plotshape(short and not short[1], style = shape.xcross, color=color.red, location=location.top, size=size.tiny)

//Contratos
contrato1 = input(50000)/(16*close)
c1 = contrato1
c2 = contrato1
c3 = contrato1*2
c4 = contrato1*4
c5 = contrato1*8

//cap_enopentrade = strategy.opentrades == 1 ? c1: strategy.opentrades == 2 ? c1+c2: strategy.opentrades == 3 ? c1+c2+c3: strategy.opentrades == 4 ? c1+c2+c3+c4: strategy.opentrades == 5 ? c1+c2+c3+c4+c5 : 0
openprofit_porc = math.round((close-strategy.position_avg_price)/strategy.position_avg_price * 100,2)

porc_tp = input.float(6.5)
safe = input(-6)

//----------------Strategy---------------------------

if strategy.opentrades == 0
    strategy.entry('BUY1', strategy.long, qty=c1, when = long and not long[1] and window)

if strategy.opentrades == 1
    strategy.entry('BUY2', strategy.long, qty=c2, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 2
    strategy.entry('BUY3', strategy.long, qty=c3, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 3
    strategy.entry('BUY4', strategy.long, qty=c4, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 4
    strategy.entry('BUY5', strategy.long, qty=c5, when = long and not long[1] and window and openprofit_porc<safe)

min_prof = strategy.openprofit>0

strategy.close_all(when=short and min_prof)

plot(openprofit_porc)


Lebih lanjut