Stratégie d'oscillation d'attaque de tendance de prix de volume de moyenne mobile


Date de création: 2023-11-16 16:46:51 Dernière modification: 2023-11-16 16:46:51
Copier: 1 Nombre de clics: 627
1
Suivre
1617
Abonnés

Stratégie d’oscillation d’attaque de tendance de prix de volume de moyenne mobile

Aperçu

Cette stratégie, combinant les moyennes mobiles, les mesures et les chocs, forme un triple filtre qui vise à capturer les courts courants de la courbe moyenne et à obtenir de meilleurs rendements dans des conditions de tendance.

Le principe

La stratégie se compose de trois volets principaux:

  1. Indicateur de moyenne mobile

Un filtre de tendance est construit à l’aide d’une moyenne mobile à 20 jours et d’une moyenne mobile à 60 jours. Un signal d’achat est formé lorsque la moyenne mobile à court terme est traversée par la moyenne mobile à long terme. Un signal de vente est formé lorsque la moyenne mobile à court terme est traversée par la moyenne mobile à long terme.

  1. Indicateur de prix

L’indicateur de quantité de transactions divisé par le volume de transactions est utilisé pour déterminer la direction des flux de fonds. Une hausse du prix de la quantité indique un afflux net de fonds et une baisse du prix de la quantité indique un afflux net de fonds.

  1. Indicateur de la ceinture de Brin

Le paramètre de la bande de Brin est calculé à l’aide de la largeur du canal donchien à 20 jours, formant une trajectoire ascendante et descendante. Lorsque le prix est proche de la trajectoire ascendante, cela indique une éventuelle pression de reprise; lorsque le prix est proche de la trajectoire descendante, cela indique une éventuelle opportunité de rebond de soutien.

Les trois éléments sont combinés pour construire une stratégie multi-champ permettant de capturer les courts courants de tendance. Un signal d’achat est formé lorsque le cours est en hausse juste après avoir quitté la bande de Brin et que le cours est en hausse juste après avoir quitté la bande de Brin. Un signal de vente est formé lorsque le cours est en baisse juste après avoir quitté la bande de Brin et que le cours est en baisse juste après avoir quitté la bande de Brin et que le cours est en baisse juste avant la bande de Brin.

Les avantages

Cette stratégie présente les avantages suivants:

  1. Les filtres à triple indice permettent d’éviter efficacement les fausses brèches.

  2. Les signaux sont plus fiables en tenant compte des tendances, des flux de capitaux et des sur-achats et des sur-vente.

  3. Les paramètres de l’indicateur sont optimisés pour différents cycles et variétés.

  4. Les retraits sont contrôlables, les bénéfices stables.

  5. La logique est claire et compréhensible, les paramètres sont flexibles.

Les risques

Cette stratégie comporte aussi des risques:

  1. Risque de rupture de tendance. Lorsque la tendance du marché change, cela peut entraîner un arrêt de la perte.

  2. Le retard de l’indicateur de quantité et de prix. Le retard de l’indicateur de quantité et du prix peut entraîner une perte de points d’achat et de vente.

  3. Difficulté d’ajustement des paramètres. Différentes variétés et périodes nécessitent un ajustement des paramètres, sinon l’effet peut être médiocre.

  4. Le contrôle des retraits doit être amélioré. Il est possible d’optimiser davantage le contrôle des retraits par la gestion dynamique des pertes ou des positions.

Direction d’optimisation

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

  1. Augmentation des stratégies de stop loss et contrôle des retraits par le déplacement des stops, le suivi des stops, etc.

  2. Ajout d’un module de gestion des positions afin d’ajuster la taille des positions en fonction de la dynamique de la volatilité du marché.

  3. Optimiser les paramètres de l’indicateur pour trouver la combinaison optimale de paramètres pour les différents cycles de variété.

  4. L’augmentation de la capacité de jugement des modèles d’apprentissage automatique améliore la précision des signaux.

  5. Le système d’évaluation de l’état d’urgence, combiné à des indicateurs d’humeur et à des aspects de l’information, améliore le jugement sur les événements soudains.

Résumer

Cette stratégie utilise des moyennes mobiles, des indicateurs de prix et des indicateurs de bandes de Brin, et fonctionne mieux pour capturer les tendances à la courte et moyenne ligne. En optimisant davantage les aspects de stop loss, de gestion des positions et de sélection des paramètres, il est possible d’obtenir de meilleurs résultats. La logique de la stratégie est claire et facile à comprendre, les indicateurs et les paramètres peuvent être ajustés en fonction des besoins différents, et elle est très flexible.

Code source de la stratégie
/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 29/04/2019
// This is combo strategies for get 
// a cumulative signal. Result signal will return 1 if two strategies 
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Secon strategy
// The Average Directional Movement Index Rating (ADXR) measures the strength 
// of the Average Directional Movement Index (ADX). It's calculated by taking 
// the average of the current ADX and the ADX from one time period before 
// (time periods can vary, but the most typical period used is 14 days).
// Like the ADX, the ADXR ranges from values of 0 to 100 and reflects strengthening 
// and weakening trends. However, because it represents an average of ADX, values 
// don't fluctuate as dramatically and some analysts believe the indicator helps 
// better display trends in volatile markets.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

fADX(Len) =>
    up = change(high)
    down = -change(low)
    trur = rma(tr, Len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
    sum = plus + minus 
    100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)

ADXR(LengthADX, LengthADXR, Signal1, Signal2) =>
    xADX = fADX(LengthADX)
    xADXR = (xADX + xADX[LengthADXR]) / 2
    pos = 0.0
    pos := iff(xADXR < Signal1, 1,
           iff(xADXR > Signal2, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal and Average Directional Movement Index Rating", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
LengthADX = input(title="Length ADX", defval=14)
LengthADXR = input(title="Length ADXR", defval=14)
Signal1 = input(13, step=0.01)
Signal2 = input(45, step=0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posADXR = ADXR(LengthADX, LengthADXR, Signal1, Signal2 )
pos = iff(posReversal123 == 1 and posADXR == 1 , 1,
	   iff(posReversal123 == -1 and posADXR == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? red: possig == 1 ? green : blue )