Strategi Pengidentifikasi Tren MyQuant

Penulis:ChaoZhang, Tanggal: 2024-02-22 16:04:04
Tag:

img

Gambaran umum

MyQuant Trend Identifier Strategy adalah strategi untuk perdagangan Bitcoin harian. Ini mengidentifikasi tren pasar dengan menghitung moving average dan turunan urutan pertama dan kedua dari harga, dan membuat keputusan beli dan jual sesuai.

Prinsip Strategi

Strategi pertama menghitung Adaptive Moving Average (ALMA) dari harga dan derivatif orde pertama dan orde kedua. Derivatif orde pertama mencerminkan tingkat perubahan harga, dan derivatif orde kedua mencerminkan kelengkungan harga. Kemudian menilai tren saat ini naik, turun atau fluktuasi berdasarkan nilai derivatif orde pertama dan kedua. Dikombinasikan dengan indikator saham, ia menentukan apakah kondisi beli atau jual terpenuhi.

Secara khusus, strategi ini menghitung indikator berikut:

  • ALMA: Adaptive Moving Average dari harga, panjang 140, faktor cepat 1.1, sigma 6
  • dema: Derivatif orde pertama dari ALMA
  • d2ema: Derivatif orde pertama dari dema, mencerminkan derivatif orde kedua dari harga
  • indeks: indeks osilasi dari indikator dema
  • Indeks deviasi harga dari rata-rata bergerak

Ketika kondisi pembelian terpenuhi, ia menghitung jumlah saham yang akan dibeli berdasarkan sinyal dari CAUSED Accumulation/Distribution Bands dan Caused Exposure Top and Bottom Finder.

Keuntungan dari Strategi

Dengan menggabungkan penilaian tren dan indikator, strategi ini dapat secara efektif mengidentifikasi titik balik dalam tren pasar. Menggunakan turunan urutan pertama dan kedua harga untuk menentukan tren menghindari dampak fluktuasi harga dan membuat sinyal lebih jelas. Dibandingkan dengan strategi rata-rata bergerak umum, ia memiliki keuntungan seperti akurasi yang lebih tinggi.

Analisis Risiko

Strategi ini sangat sensitif terhadap pemilihan periode waktu perdagangan dan penyesuaian parameter. Jika periode waktu dipilih dengan tidak benar dan titik balik harga penting tidak tercakup, strategi tidak akan sangat efektif. Jika parameter indikator ditetapkan dengan tidak benar, sinyal beli dan jual akan lebih dipengaruhi oleh kebisingan, sehingga berdampak pada pengembalian strategi. Selain itu, kondisi stop loss yang ditetapkan sebelumnya dalam strategi juga mempengaruhi pengembalian akhir.

Arahan untuk Optimalisasi

Strategi ini dapat dioptimalkan lebih lanjut dalam aspek berikut:

  1. Mengoptimalkan logika untuk memilih periode waktu, melalui pilihan yang lebih cerdas dari backtest dan periode waktu perdagangan langsung.
  2. Mengoptimalkan parameter indikator, seperti menyesuaikan panjang ALMA dan dema dll.
  3. Tambahkan penilaian kondisi stop loss untuk mengontrol kerugian maksimum.
  4. Evaluasi efek di berbagai cryptocurrency dan pilih yang berkinerja terbaik.

Kesimpulan

Dengan menghitung turunan urutan pertama dan kedua dari rata-rata pergerakan harga adaptif, Strategi MyQuant Trend Identifier secara efektif mengidentifikasi tren pasar untuk Bitcoin dan membuat keputusan beli dan jual yang sesuai. Dengan menggabungkan beberapa indikator untuk penilaian, ia menghindari gangguan kebisingan yang berlebihan dengan sinyal. Dengan optimasi waktu dan parameter lebih lanjut, kinerja strategi ini dapat ditingkatkan lebih lanjut.


/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 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/
// © spacekadet17
// 
//@version=5

strategy(title="Trend Identifier Strategy", shorttitle="Trend Identifier Strategy", format=format.price, precision=4, overlay = false, initial_capital = 1000, pyramiding = 10, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, commission_value = 0.03)

//start-end time
startyear = input.int(2020,"start year")
startmonth = input.int(1,"start month")
startday = input.int(1,"start day")
endyear = input.int(2025,"end year")
endmonth = input.int(1,"end month")
endday = input.int(1,"end day")

timeEnd = time <= timestamp(syminfo.timezone,endyear,endmonth,endday,0,0)
timeStart = time >= timestamp(syminfo.timezone,startyear,startmonth,startday,0,0)
choosetime = input(false,"Choose Time Interval")
condTime = (choosetime ? (timeStart and timeEnd) : true)

// time frame?
tfc = 1
if timeframe.isdaily
    tfc := 24

// indicators: price normalized alma, and its 1st and 2nd derivatives
ema = ta.alma(close,140,1.1,6)
dema = (ema-ema[1])/ema
stodema = ta.ema(ta.ema(ta.stoch(dema,dema,dema,100),3),3)

d2ema = ta.ema(dema-dema[1],5)
stod2ema = ta.ema(ta.ema(ta.stoch(d2ema,d2ema,d2ema,100),3),3)

ind = (close-ta.ema(close,120*24/tfc))/close
heat = ta.ema(ta.stoch(ind,ind,ind,120*24/tfc),3)
index = ta.ema(heat,7*24/tfc)

//plot graph
green = color.rgb(20,255,100)
yellow = color.yellow
red = color.red
blue = color.rgb(20,120,255)
tcolor = (dema>0) and (d2ema>0)? green : (dema>0) and (d2ema<0) ? yellow : (dema < 0) and (d2ema<0) ? red : (dema < 0) and (d2ema>0) ? blue : color.black
demaema = ta.ema(dema,21)
plot(demaema, color = tcolor)

//strategy buy-sell conditions
cond1a = strategy.position_size <= 0
cond1b = strategy.position_size > 0

if (condTime and cond1a and ( ( ((tcolor[1] == red and demaema<0.02) or (tcolor[1] == blue and demaema < 0.02) or (tcolor[1] == yellow and demaema>-0.02) ) and tcolor == green) or (tcolor[1] == red and tcolor == blue and demaema < -0.01) ) and index<85 and ind<0.4)
    strategy.entry("buy",strategy.long, (strategy.equity-strategy.position_size*close)/1/close)
    
if (condTime and cond1b and ( (((tcolor[1] == yellow and demaema > -0.02) or (tcolor[1] == blue and demaema < 0.02) or (tcolor[1] == green and demaema < 0.02)) and tcolor == red) or (tcolor[1] == green and tcolor == yellow and demaema > 0.015) ) and index>15 and ind>-0.1)
    strategy.order("sell",strategy.short, strategy.position_size)


Lebih banyak