Strategi Pengesanan Trend Emas Berdasarkan Pelaburan Berkala

Penulis:ChaoZhang, Tarikh: 2023-10-31 15:09:22
Tag:

img

Ringkasan

Strategi ini menggunakan model purata bergerak untuk menentukan arah trend pasaran. Apabila trend menaik dikenal pasti, ia akan secara berkala membuka kedudukan panjang dengan jumlah tetap untuk mengesan trend kenaikan golden cross di pasaran.

Logika Strategi

Strategi ini terutamanya berdasarkan prinsip teknikal berikut:

  1. Gunakan garis EMA untuk menentukan arah trend pasaran. Apabila garis EMA yang cepat melintasi garis EMA yang perlahan, ia dinilai sebagai trend menaik dan bersedia untuk memasuki kedudukan panjang.

  2. Menggabungkan penunjuk MACD untuk menentukan masa kemasukan. Apabila MACD berubah dari positif kepada negatif, ia menunjukkan bahawa daya beli mula melemah, jadi sudah tiba masanya untuk memasuki kedudukan panjang.

  3. Batasan untuk hanya masuk sekali sebulan untuk mengelakkan mengejar tinggi.

  4. Membolehkan menetapkan tarikh permulaan dan tarikh akhir untuk mengehadkan tempoh backtest. Apabila backtest berakhir, strategi akan menutup semua kedudukan.

Secara khusus, strategi ini pertama kali mengira garis EMA cepat dan garis EMA perlahan, dan mengesan silang emas di antara mereka untuk menentukan trend pasaran. Pada masa yang sama, ia mengira penunjuk MACD untuk menentukan titik kemasukan tertentu. Apabila kedua-dua kriteria dipenuhi, isyarat panjang dihasilkan. Menurut peraturan hanya memasuki sekali sebulan, pesanan kemasukan sebenar ditentukan. Jumlah modal untuk setiap kemasukan boleh ditetapkan terlebih dahulu. Apabila ujian belakang berakhir, strategi akan secara aktif menutup semua kedudukan.

Kelebihan

Ini adalah trend yang mudah dan langsung mengikut strategi dengan kelebihan berikut:

  1. Menggunakan garis EMA untuk menentukan trend utama adalah mudah dan praktikal.

  2. Indikator MACD dapat mengenal pasti titik perubahan apabila daya beli mula melemah dengan agak tepat, menjadikan entri lebih selamat.

  3. Mengehadkan diri untuk hanya mengejar trend menaik sekali sebulan boleh mengelakkan mengejar tinggi dan membunuh trend menaik dalam pasaran lembu.

  4. Membolehkan penyesuaian jumlah kemasukan setiap bulan memberikan fleksibiliti dalam saiz kedudukan.

  5. Backtest boleh digunakan untuk menilai prestasi strategi dengan menetapkan tarikh permulaan dan tarikh akhir.

  6. Ia akan menutup semua kedudukan secara automatik apabila backtest berakhir, mengelakkan kedudukan yang tidak selesa.

Risiko dan Pengurangan

Terdapat beberapa potensi risiko strategi ini:

  1. Penentuan trend melalui purata bergerak mungkin terlepas peluang semasa penurunan sementara atau bertindak balas perlahan pada pembalikan trend.

  2. Hanya masuk sekali sebulan mungkin kehilangan peluang masuk yang lebih baik. Pertimbangkan untuk melonggarkan kekerapan atau menambah entri lain apabila memecahkan tertinggi baru-baru ini.

  3. Terdapat risiko pemasangan lengkung. Lebih banyak ruang penyesuaian parameter harus dibenarkan dan ketahanan harus diuji di pasaran dan tempoh masa.

  4. Terdapat risiko mengejar momentum dan overbuy. Jumlah kemasukan bulanan harus dikawal untuk mengelakkan kedudukan yang terlalu besar.

Peluang Peningkatan

Trend pelaburan berkala ini mengikut strategi boleh diperluaskan dan ditingkatkan dari aspek berikut:

  1. Tambah logik stop loss untuk memotong kerugian secara aktif apabila corak pembalikan menurun muncul.

  2. Pertimbangkan untuk menambah pembelian lain apabila histogram MACD menunjukkan divergensi menaik untuk mendapatkan lebih banyak pendedahan kepada trend menaik.

  3. Memperkenalkan perbandingan bulan inis tertinggi baru berbanding bulan sebelumnya untuk menilai kekuatan momentum.

  4. Tambah logik saiz kedudukan. Jumlah kemasukan bulanan boleh dibuat adaptif berdasarkan peratusan dan bukannya nilai tetap.

  5. Menilai kesan gabungan MA yang berbeza dan parameter MACD. Cari set parameter optimum.

  6. Tambahkan stop loss yang mengikuti harga pada jarak tertentu selepas mencapai paras tertinggi baru, membolehkan keuntungan berjalan.

Ringkasan

Strategi ini mewakili pendekatan trend yang mudah dan bersih menggunakan pelaburan berkala dan purata bergerak. Ia mudah difahami dan dilaksanakan, berfungsi sebagai titik permulaan yang baik untuk belajar perdagangan algoritma. Tetapi dalam perdagangan langsung, saiz kedudukan perlu dikawal dengan teliti. Strategi harus ditingkatkan lagi untuk menyesuaikan diri dengan keadaan pasaran yang kompleks.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-30 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/
// © runescapeyttanic

//@version=4
// strategy("Buy and Hold entry finder Strategy",pyramiding=10000, overlay=true,initial_capital=0,default_qty_type=strategy.cash,default_qty_value=1000,currency = currency.EUR,commission_type=strategy.commission.cash_per_order,commission_value=0)

//INPUTS##################################################################################################################

maxEmaDistance = input(title="Maximum EMA Distance", type=input.float, step=0.01, defval=50000)
emalength = input(title="EMA Length", type=input.integer,defval=200)

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2020, minval=1800, maxval=2100)

endDate = input(title="End Date", type=input.integer,
     defval=12, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
     defval=02, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100)

endDate1=endDate-1
//starttag
//startmonat
//MACD########################################################################################################################

fast_length=12
slow_length=26
src=close
col_macd=#0094ff
fast_ma = ema(src, fast_length)
slow_ma = ema(src, slow_length)
macd = fast_ma - slow_ma

//EMA Distance CALC########################################################################################################

ma1 =ema(close,emalength)
distFromMean = close - ma1

inDateRange = true

longCondition = (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0 and inDateRange)
longnow=false

if(longCondition and strategy.position_size == 0)
    strategy.entry("My Long Entry Id", strategy.long)
    longnow:=true

if(longCondition and strategy.position_size > 0)
    longnow:=true
    

if(longCondition and strategy.position_size > 0 and month>valuewhen(longnow, month ,1) or longCondition and strategy.position_size > 0 and year>valuewhen(longnow, year ,1) and inDateRange)
    strategy.entry("My Long Entry Id", strategy.long)

plotchar(minute, "Minuten", "", location = location.top)

plotchar(hour, "Stunden", "", location = location.top)    

plotchar(dayofmonth, "Tage", "", location = location.top)

plotchar(month, "Monat", "", location = location.top)

plotchar(year, "Jahr", "", location = location.top)

plotchar(strategy.position_size, "Positionen", "", location = location.top)

plotchar(longCondition, "Long Condition", "", location = location.top)

if true
    strategy.close_all()

//#########################################################################################################################

plotArrow = if (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0)
    1
else
    0
    
plotarrow(series=plotArrow)



Lebih lanjut