Strategi Pengenali Trend MyQuant

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

img

Ringkasan

Strategi Pengenali Trend MyQuant adalah strategi untuk perdagangan Bitcoin harian. Ia mengenal pasti trend pasaran dengan mengira purata bergerak dan derivatif urutan pertama dan kedua harga, dan membuat keputusan membeli dan menjual dengan sewajarnya.

Prinsip Strategi

Strategi ini mula-mula mengira Purata Bergerak Adaptif (ALMA) harga dan derivatif perintah pertama dan kedua. Derivatif perintah pertama mencerminkan kadar perubahan harga, dan derivatif perintah kedua mencerminkan kelengkungan harga. Ia kemudian menilai trend semasa untuk naik, turun atau turun naik berdasarkan nilai derivatif perintah pertama dan kedua. Digabungkan dengan penunjuk stok, ia menentukan sama ada syarat beli atau jual dipenuhi.

Khususnya, strategi ini mengira penunjuk berikut:

  • ALMA: Purata Bergerak Beradaptasi harga, panjang 140, faktor pantas 1.1, sigma 6
  • dema: Derivatif peringkat pertama ALMA
  • d2ema: Derivatif orde pertama dema, yang mencerminkan derivatif orde kedua harga
  • indeks: indeks goyangan penunjuk dema
  • Ind: Indeks penyimpangan harga daripada purata bergerak

Apabila syarat beli dipenuhi, ia mengira jumlah saham yang akan dibeli berdasarkan isyarat dari Caused Accumulation/Distribution Bands dan Caused Exposure Top and Bottom Finder.

Kelebihan Strategi

Dengan menggabungkan pertimbangan trend dan penunjuk, strategi ini dapat dengan berkesan mengenal pasti titik perubahan dalam trend pasaran. Menggunakan derivatif urutan pertama dan kedua harga untuk menentukan trend mengelakkan kesan turun naik harga dan membuat isyarat lebih jelas. Berbanding dengan strategi purata bergerak biasa, ia mempunyai kelebihan seperti ketepatan yang lebih tinggi.

Analisis Risiko

Strategi ini sangat sensitif terhadap pemilihan tempoh masa dagangan dan penyesuaian parameter. Jika tempoh masa dipilih dengan tidak betul dan titik perubahan harga penting tidak dilindungi, strategi tidak akan sangat berkesan. Jika parameter penunjuk ditetapkan dengan tidak betul, isyarat beli dan jual akan lebih dipengaruhi oleh bunyi bising, sehingga memberi kesan kepada pulangan strategi. Di samping itu, keadaan stop loss yang telah ditetapkan dalam strategi juga mempengaruhi pulangan akhir.

Arahan untuk Pengoptimuman

Strategi ini boleh dioptimumkan lagi dalam aspek berikut:

  1. Mengoptimumkan logik untuk memilih tempoh masa, melalui pilihan yang lebih pintar untuk backtest dan tempoh masa perdagangan langsung.
  2. Mengoptimumkan parameter penunjuk, seperti menyesuaikan panjang ALMA dan dema dll.
  3. Tambah penilaian keadaan stop loss untuk mengawal kerugian maksimum.
  4. Menilai kesan di seluruh mata wang kripto yang berbeza dan pilih yang paling baik.

Kesimpulan

Dengan mengira turunan urutan pertama dan kedua dari purata bergerak adaptif harga, Strategi Pengenali Trend MyQuant secara berkesan mengenal pasti trend pasaran untuk Bitcoin dan membuat keputusan membeli dan menjual yang sesuai. Dengan menggabungkan beberapa penunjuk untuk penghakiman, ia mengelakkan gangguan bunyi yang berlebihan dengan isyarat. Dengan pengoptimuman masa dan parameter yang lebih lanjut, prestasi strategi ini dapat ditingkatkan lagi.


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