Stratégie de trading quantitative à indicateurs multiples


Date de création: 2023-10-25 18:06:44 Dernière modification: 2023-10-25 18:06:44
Copier: 0 Nombre de clics: 645
1
Suivre
1617
Abonnés

Stratégie de trading quantitative à indicateurs multiples

Aperçu

Cette stratégie utilise plusieurs indicateurs techniques combinés pour prendre des décisions de négociation à court et à long terme. Elle comprend principalement des indicateurs tels que les lignes de Brin, le RSI et l’ADX, tout en combinant la direction de la tendance avec la ligne de la même valeur.

Principe de stratégie

Cette stratégie est principalement utilisée pour juger de la volatilité des prix à l’aide d’une ligne de bulling, où le resserrement de la ligne de bulling représente une baisse de la volatilité des prix et une éventuelle rupture; et en combinaison avec le RSI pour juger du phénomène de surachat et de surachat, où le RSI supérieur à 70 est une zone de surachat et inférieur à 30 est une zone de surachat. Lorsque la ligne de bulling se resserre et que l’indicateur RSI se rapproche de la zone de surachat et de surachat, le trading est inversé.

En outre, la stratégie utilise également l’ADX pour déterminer la force de la tendance des prix. Lorsque l’ADX est élevé, ce qui représente une forte tendance, vous pouvez choisir de négocier en cours de route; lorsque l’ADX est bas, ce qui représente une tendance inobservable, vous pouvez envisager de négocier en revers. Enfin, en combinaison avec la ligne de parité pour déterminer la direction de la tendance à long terme, si le prix est dans une tendance à la hausse, vous pouvez envisager d’acheter; si le prix est dans une tendance à la baisse, vous pouvez envisager de vendre.

Plus précisément, lorsque la courbe de Brin se rétrécit, l’indicateur RSI est proche de la zone de survente et de survente, et le prix descend de la trajectoire, on considère que la tendance peut rebondir, alors il faut faire plus; lorsque la courbe de Brin se rétrécit, l’indicateur RSI est proche de la zone de survente et le prix franchit la trajectoire, on considère que la tendance peut baisser, alors il faut considérer le vide. De plus, si l’ADX est élevé, le prix est en hausse, on peut prendre plus de positions; si l’ADX est bas, le prix est en baisse, on peut prendre des positions vides.

Analyse des avantages

Cette stratégie combinée à plusieurs indicateurs présente les avantages suivants:

  1. L’intégration de plusieurs indicateurs techniques améliore l’exactitude et la stabilité des signaux de négociation. Un seul indicateur est vulnérable à des erreurs telles que les fausses percées. Une combinaison de plusieurs indicateurs permet de vérifier le signal et d’éviter les erreurs de négociation.

  2. Il prend en compte à la fois les tendances et les chocs, il est capable de s’adapter à différentes conditions du marché, il est flexible.

  3. En même temps, le fait de faire plus de courtage permet de réduire le risque de position sur un marché unilatéral et de prévenir les situations extrêmes.

  4. Il est possible de définir un point de vente pour limiter les pertes et les profits lorsque les positions vont mal, mais il n’est pas possible de définir un point de vente pour limiter les pertes.

  5. L’optimisation des paramètres permet d’améliorer constamment l’efficacité de la stratégie et de s’adapter aux changements du marché.

Analyse des risques

Cette stratégie comporte également des risques à prendre en compte:

  1. La combinaison de plusieurs indicateurs augmente la complexité de la stratégie, les paramètres mal définis peuvent réduire l’efficacité. Il est nécessaire de bien tester et d’optimiser.

  2. Une trop grande dépendance à l’égard des indicateurs techniques et une négligence des informations fondamentales peuvent conduire à une inexactitude des signaux de négociation.

  3. Il est possible qu’il y ait eu un changement de tendance au moment où l’indicateur a donné son signal, et qu’il y ait un risque de poursuite de la hausse ou de la baisse. Il est nécessaire d’attendre un retour de signal approprié.

  4. La multiplication des positions augmente la fréquence des transactions, augmente les frais de traitement et la pression financière. Il est nécessaire de contrôler la taille de la position.

  5. Il existe un certain risque d’adaptation de la courbe, il est préférable de tester la robustesse de la stratégie sur plusieurs marchés.

Le risque peut être maîtrisé par des méthodes telles que des arrêts stricts, une prise de position prudente et un contrôle raisonnable de la position. Dans l’ensemble, cette stratégie présente une forte utilité.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Test de différentes combinaisons de paramètres pour trouver le paramètre optimal. Optimisation des paramètres peut être effectuée par des méthodes telles que la progression par étapes, la recherche aléatoire et les algorithmes génétiques.

  2. L’ajout de plus d’indicateurs tels que KDJ, William, etc. pour former un groupe d’indicateurs et améliorer la robustesse de la stratégie.

  3. Optimisation de la gestion des positions et contrôle des risques par l’ajustement dynamique des positions.

  4. Les prix sont calculés à l’aide de modèles quantifiés, combinés à des algorithmes d’apprentissage automatique, pour déterminer les tendances et les futures tendances.

  5. Tests sur différentes variétés, périodes et marchés pour améliorer l’adaptabilité des stratégies.

  6. Optimiser les timings d’entrée et de sortie pour capturer les tendances à un stade précoce et les sortir avant le renversement.

  7. Le suivi des arrêts et des arrêts mobiles sont utilisés pour bloquer les bénéfices et contrôler les risques.

  8. Ajouter des facteurs fondamentaux, des jugements de la structure du marché pour filtrer les signaux générés par les indicateurs techniques.

Résumer

La stratégie utilise plusieurs indicateurs pour déterminer les tendances des prix et automatiser les transactions. La stratégie a des avantages tels que la vérification des groupes d’indicateurs, le commerce bidirectionnel et le stop loss, ce qui peut améliorer l’efficacité des transactions.

Code source de la stratégie
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 2h
basePeriod: 15m
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/
// © The_Bigger_Bull
//@version=5
strategy("Best TradingView Strategy", overlay=true, margin_long=0, margin_short=0)
//Bollinger Bands
source1 = close
length1 = input.int(15, minval=1)
mult1 = input.float(2.0, minval=0.001, maxval=50)
basis1 = ta.sma(source1, length1)
dev1 = mult1 * ta.stdev(source1, length1)
upper1 = basis1 + dev1
lower1 = basis1 - dev1
//buyEntry = ta.crossover(source1, lower1)
//sellEntry = ta.crossunder(source1, upper1)

//RSI
ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "Bollinger Bands" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")

up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"

//plot(rsi, "RSI", color=#7E57C2)
//plot(rsiMA, "RSI-based MA", color=color.yellow)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
bbUpperBand = plot(isBB ? rsiMA + ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Upper Bollinger Band", color=color.green)
bbLowerBand = plot(isBB ? rsiMA - ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Lower Bollinger Band", color=color.green)
fill(bbUpperBand, bbLowerBand, color= isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill")

//ADX

adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up1 = ta.change(high)
	down1 = -ta.change(low)
	plusDM = na(up1) ? na : (up1 > down1 and up1 > 0 ? up1 : 0)
	minusDM = na(down1) ? na : (down1 > up1 and down1 > 0 ? down1 : 0)
	truerange = ta.rma(ta.tr, len)
	plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
	minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)




out = ta.sma(close, 14)

sma1=ta.sma(close,55)

ema200=ta.ema(close,200)



longCondition = (out>sma1) and ta.crossover(source1, lower1)

if (longCondition )
    strategy.entry("long", strategy.long)
    
shortCondition = (out<sma1) and ta.crossunder(source1, lower1)

if (shortCondition )
    strategy.entry("short", strategy.short)
    
    
stopl=strategy.position_avg_price-50
tptgt=strategy.position_avg_price+100
stopshort=strategy.position_avg_price+50
tptgtshort=strategy.position_avg_price-100

strategy.exit("longclose","long",trail_offset=5,trail_points=45,when=ta.crossover(sma1,out))
strategy.exit("shortclose","short",trail_offset=5,trail_points=45,when=ta.crossover(out,sma1))

    
//if strategy.position_avg_price<0
    
    
plot(sma1 , color=color.blue)
plot(out, color=color.green)
//plot(ema200,color=color.red)