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.
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:
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.
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.
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.
Strategi ini boleh dioptimumkan lagi dalam aspek berikut:
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)