La stratégie MyQuant Trend Identifier est une stratégie pour le trading quotidien de Bitcoin. Elle identifie les tendances du marché en calculant la moyenne mobile et ses dérivés de premier et deuxième ordre du prix, et prend des décisions d'achat et de vente en conséquence.
La stratégie calcule d'abord la moyenne mobile adaptative (ALMA) du prix et de ses dérivés de premier ordre et de second ordre. Le dérivé de premier ordre reflète le taux de variation du prix, et le dérivé de second ordre reflète la courbure du prix. Elle juge ensuite la tendance actuelle à la hausse, à la baisse ou à la fluctuation en fonction des valeurs des dérivés de premier et second ordre. Combinée avec les indicateurs boursiers, elle détermine si les conditions d'achat ou de vente sont remplies.
Plus précisément, la stratégie calcule les indicateurs suivants:
Lorsque la condition d'achat est remplie, il calcule le nombre d'actions à acheter en fonction des signaux des bandes d'accumulation/distribution causées et du chercheur de haut et bas de l'exposition causée.
En combinant les jugements de tendance et d'indicateur, cette stratégie peut identifier efficacement les points tournants des tendances du marché. L'utilisation des dérivés de premier et deuxième ordre des prix pour déterminer les tendances évite l'impact des fluctuations de prix et rend les signaux plus clairs. Par rapport aux stratégies de moyenne mobile courantes, elle présente des avantages tels qu'une plus grande précision.
Cette stratégie est très sensible à la sélection de la période de négociation et aux ajustements des paramètres. Si la période de temps est sélectionnée de manière incorrecte et que les points tournants importants du prix ne sont pas couverts, la stratégie ne sera pas très efficace. Si les paramètres de l'indicateur sont définis de manière incorrecte, les signaux d'achat et de vente seront plus affectés par le bruit, ce qui aura un impact sur les rendements de la stratégie.
La stratégie peut être encore optimisée dans les aspects suivants:
En calculant les dérivées de premier et deuxième ordre de la moyenne mobile adaptative des prix, la stratégie MyQuant Trend Identifier identifie efficacement les tendances du marché pour Bitcoin et prend les décisions d'achat et de vente correspondantes.
/*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)