Tendance de l'élan suivant la stratégie d'oscillation

Auteur:ChaoZhang est là., Date: 2023-11-16 16:46:51 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie combine des indicateurs de moyenne mobile, de volume-prix et d'oscillation pour former des filtres triples, visant à capturer les tendances à moyen terme et à obtenir de bons rendements lors de tendances sur les marchés.

Principaux

La stratégie est composée de trois éléments principaux:

  1. Indicateurs de moyenne mobile

Utilisez l'EMA à 20 jours et l'EMA à 60 jours pour construire un filtre de tendance. Un signal d'achat est généré lorsque le MA à court terme dépasse le MA à long terme. Un signal de vente est généré lorsque le MA à court terme dépasse le MA à long terme.

  1. Indicateur volume-prix

Utilisez le volume par rapport au chiffre d'affaires pour calculer l'indicateur de VP, en jugeant les directions des flux de capitaux.

  1. Les bandes de Bollinger

Utilisez la largeur du canal de Donchian de 20 jours pour calculer le paramètre des bandes de Bollinger, formant des bandes supérieures et inférieures.

La combinaison des trois composants construit une stratégie de suivi de tendance. Elle génère des signaux d'achat lorsque le short MA franchit le long MA, que le VP est en tendance haussière et que le prix vient de quitter la bande supérieure. Les signaux de vente sont générés lorsque le short MA franchit le long MA, que le VP est en tendance baissière et que le prix vient de quitter la bande inférieure.

Les avantages

La stratégie présente les avantages suivants:

  1. Les filtres à trois indicateurs aident à éviter les fausses pauses.

  2. En tenant compte de la tendance, des flux de capitaux et des surachats/surventes améliore la fiabilité du signal.

  3. Paramètres optimisés adaptés à différentes périodes et produits.

  4. Des retraits contrôlables et des rendements stables.

  5. Une logique claire et un réglage flexible des paramètres.

Les risques

Il y a aussi des risques:

  1. Les risques d'inversion de tendance Les changements de tendance peuvent entraîner un stop loss.

  2. La VP est en retard sur les variations de prix et peut manquer les points d'entrée ou de sortie.

  3. Les paramètres doivent être ajustés pour différents produits et délais.

  4. Le contrôle de l'abattage doit être amélioré.

Directions de renforcement

La stratégie peut être améliorée dans les domaines suivants:

  1. Ajouter des méthodes de stop loss comme le trailing stop pour contrôler davantage les retraits.

  2. Ajouter un module de dimensionnement des positions pour ajuster dynamiquement les tailles en fonction de la volatilité.

  3. Optimiser les paramètres pour trouver les meilleurs ensembles pour différents produits et périodes.

  4. Améliorer les modèles d'apprentissage automatique pour améliorer la précision du signal.

  5. Incorporer l'analyse des sentiments et des nouvelles pour juger des événements soudains.

Conclusion

La stratégie combine les indicateurs MA, VP et Bollinger Band pour bien performer dans la capture des tendances à moyen terme. Des améliorations supplémentaires dans le stop loss, le dimensionnement des positions et le réglage des paramètres peuvent obtenir de meilleurs résultats. La logique est claire et les paramètres sont flexibles pour la personnalisation.


/*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 ) 

Plus de