Strategi periode silang rata-rata bergerak tertimbang berdasarkan rentang sebenarnya

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

img

Gambaran umum

Strategi ini menggunakan True Range dan Weighted Moving Average (WMA) untuk membangun indikator periode silang untuk penilaian tren. Pada saat yang sama, ia memiliki mekanisme akumulasi posisi piramida dengan beberapa mekanisme stop loss untuk mengejar keuntungan yang stabil.

Prinsip Strategi

Strategi ini pertama-tama menghitung amplitudo naik (sube) dan amplitudo turun (baja), dan kemudian menghitung WMA siklus garis cepat (corto) dan siklus garis lambat (largo) masing-masing. Perbedaan antara garis cepat dan lambat dihitung lagi melalui WMA untuk mendapatkan indikator (ind). Ketika indikator melintasi di atas 0, sinyal beli dihasilkan. Ketika melintasi di bawah 0, sinyal jual dihasilkan.

Setelah masuk ke pasar, strategi menetapkan 5 posisi, yang diakumulasi dengan cara piramida (ganda). Pada saat yang sama, mekanisme stop loss ditetapkan sehingga posisi berikutnya yang dibuka akan dinilai apakah keuntungan mengambang saat ini lebih rendah dari garis stop loss, untuk mengendalikan risiko.

Analisis Keuntungan

Strategi ini mengintegrasikan mekanisme seperti penilaian siklus silang, akumulasi posisi piramida, dan stop loss ganda, yang dapat secara efektif mengendalikan risiko dan mengejar keuntungan yang stabil.

Penghakiman lintas siklus menetapkan sistem penilaian tren melalui kombinasi garis cepat dan lambat, yang dapat secara efektif menyaring kebisingan pasar dan mengidentifikasi titik balik tren. Posisi piramida dapat menghasilkan lebih banyak di awal tren, dan beberapa mekanisme stop loss dapat secara efektif mengendalikan kerugian tunggal.

Analisis Risiko

Risiko utama dari strategi ini adalah kemungkinan kejadian mendadak yang menyebabkan pembalikan pasar yang cepat yang memicu stop loss cutoff dan menyebabkan kerugian.

Risiko pembalikan pasar dapat ditangani dengan melonggarkan garis stop loss dengan tepat. Mengoptimalkan pengaturan parameter dan menyesuaikan parameter siklus, jumlah posisi, dll. dapat meningkatkan stabilitas strategi.

Arah Optimalisasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Meningkatkan indikator statistik untuk penilaian, menggunakan indikator seperti volatilitas dan volume untuk memperbaiki parameter dan membuat strategi lebih adaptif.

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

  3. Mengoptimalkan mekanisme manajemen posisi, mempertimbangkan penyesuaian amplitudo peningkatan posisi sesuai dengan persentase laba yang bergerak untuk membuat pertumbuhan posisi lebih wajar.

  4. Menggabungkan model lindung nilai berjangka untuk lebih mengendalikan risiko melalui arbitrage spot dan berjangka.

Ringkasan

Singkatnya, ini adalah strategi tren lintas siklus berdasarkan indikator True Range dengan akumulasi posisi piramida dan beberapa mekanisme stop loss, yang dapat secara efektif mengendalikan risiko dan mengejar keuntungan yang stabil. Ini adalah strategi perdagangan kuantitatif yang sangat praktis. Namun, perhatian masih diperlukan untuk membalikkan risiko dan masalah optimasi parameter. Optimasi lebih lanjut dapat dilakukan dalam statistik, pembelajaran mesin dan aspek lainnya.


/*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 banyak