Stratégie d'identification des tendances MyQuant


Date de création: 2024-02-22 16:04:04 Dernière modification: 2024-02-22 16:04:04
Copier: 2 Nombre de clics: 633
1
Suivre
1617
Abonnés

Stratégie d’identification des tendances MyQuant

Aperçu

La stratégie de reconnaissance de tendance MyQuant est une stratégie utilisée pour les transactions quotidiennes de Bitcoin. La stratégie identifie les tendances du marché en calculant la moyenne mobile du prix et ses derivateurs de première et de deuxième classe, et en base à cela, prend des décisions d’achat et de vente.

Principe de stratégie

La stratégie commence par calculer la moyenne mobile adaptative des prix (ALMA) et ses derivateurs primaires et secondaires. Le premier reflète la vitesse de variation des prix et le second la courbe des prix. Selon les valeurs des derivateurs primaires et secondaires, il est actuellement en tendance à la hausse, à la baisse ou dans une période de choc.

Plus précisément, la stratégie a calculé les indicateurs suivants:

  • ALMA: moyenne mobile adaptative des prix, longueur 140, facteur rapide 1.1, sigma 6
  • dema: Le coefficient de phase d’ALMA
  • d2ema: dérivée de première classe de dema, reflétant la dérivée de seconde classe de prix
  • index: indice de fluctuation de l’indice dema
  • ind: indice de déviation des prix de la moyenne

Lorsque les conditions d’achat sont remplies, le nombre d’actions achetées est calculé en fonction des signaux CAUSED.Accumulation/Distribution Bands et Caused Exposure Top and Bottom Finder. Lorsque les conditions de vente sont remplies, la position entière est vendue.

Avantages stratégiques

Cette stratégie, combinée à la tendance et à l’indicateur, permet d’identifier efficacement les points de basculement de la tendance du marché. L’utilisation de derivateurs de premier et deuxième degrés des prix permet de déterminer la tendance, d’éviter d’être affecté par les fluctuations des prix et de rendre le signal plus clair.

Analyse des risques

La stratégie est très sensible au choix de la période de négociation et à l’ajustement des paramètres. Une mauvaise sélection de la période de négociation, qui ne couvre pas les points de basculement importants, peut entraîner une mauvaise efficacité de la stratégie.

Direction d’optimisation

La stratégie peut être optimisée de la manière suivante:

  1. Optimisation de la logique de sélection des périodes en choisissant plus intelligemment les périodes de rétroaction et de transaction sur disque.
  2. Optimiser les paramètres de l’indicateur, tels que l’ajustement de la longueur d’ALMA et de dema.
  3. Augmenter les jugements de stop-loss afin de contrôler les pertes maximales.
  4. Évaluer l’efficacité des différentes crypto-monnaies et sélectionner les meilleures.

Résumer

La stratégie d’identification de tendances MyQuant identifie efficacement les tendances du marché du bitcoin et prend les décisions d’achat et de vente correspondantes en calculant des derivateurs de premier et deuxième degrés sur les moyennes mobiles adaptatives du prix. La stratégie est jugée en combinaison avec plusieurs indicateurs, évitant que le signal ne soit perturbé par un bruit excessif. L’efficacité de la stratégie peut être améliorée par une optimisation supplémentaire du temps et des paramètres.

Code source de la stratégie
/*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)