Stratégie d'identification de tendance MyQuant

Auteur:ChaoZhang est là., Date: 2024-02-22 16:04:04 Je suis désolé
Les étiquettes:

img

Résumé

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.

Principe de stratégie

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:

  • ALMA: Moyenne mobile adaptative du prix, longueur 140, facteur rapide 1.1, sigma 6
  • déma: dérivé de premier ordre d'ALMA
  • d2ema: dérivé de premier ordre de dema, reflétant le dérivé de deuxième ordre du prix
  • indice: indice d'oscillation de l'indicateur déma
  • Ind: Indice de déviation du prix par rapport à sa moyenne mobile

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.

Les avantages de la stratégie

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.

Analyse des risques

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.

Conseils pour optimiser

La stratégie peut être encore optimisée dans les aspects suivants:

  1. Optimiser la logique pour sélectionner les périodes de temps, grâce à une sélection plus intelligente des périodes de backtest et de trading en direct.
  2. Optimiser les paramètres des indicateurs, tels que l'ajustement de la longueur d'ALMA et de dema, etc.
  3. L'exposition au risque est calculée en fonction de l'évolution de la valeur de l'échange.
  4. Évaluez les effets sur différentes crypto-monnaies et choisissez celles qui fonctionnent le mieux.

Conclusion

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)


Plus de