Stratégie Momentum à double échelle temporelle

SMA
Date de création: 2024-04-25 17:33:02 Dernière modification: 2024-04-25 17:33:02
Copier: 0 Nombre de clics: 592
1
Suivre
1617
Abonnés

Stratégie Momentum à double échelle temporelle

Aperçu

La stratégie est une stratégie de dynamique à deux échelles de temps. Elle détermine la direction de la tendance en utilisant des moyennes mobiles simples (SMA) pour les périodes de niveau supérieur et des points pivots (PivotLow et PivotHigh) pour les périodes de niveau inférieur.

Principe de stratégie

Le principe de base de cette stratégie est que la direction de la tendance des cycles de temps de niveau supérieur affecte la tendance des cycles de temps de niveau inférieur. Lorsqu’un cycle de temps de niveau supérieur présente une tendance à la hausse, un retournement de cycle de temps de niveau inférieur est plus susceptible d’être une opportunité d’achat; lorsqu’un cycle de temps de niveau supérieur présente une tendance à la baisse, un rebond du cycle de temps de niveau inférieur est plus susceptible d’être une opportunité de faillite.

Avantages stratégiques

  1. L’analyse à deux échelles de temps, qui utilise l’influence des cycles de temps de niveau supérieur sur les cycles de temps de niveau inférieur, augmente la probabilité de succès des transactions.
  2. L’utilisation d’un SMA pour déterminer la direction de la tendance est plus fiable, et l’utilisation d’un pivot pour capturer le revers est plus précise.
  3. Les paramètres sont réglables et adaptatifs. L’utilisateur peut ajuster la haute et basse échelle de temps, la période du SMA, les paramètres des axes centraux, etc. selon ses besoins.
  4. La logique est claire, facile à comprendre et à mettre en œuvre.

Risque stratégique

  1. Risque de rupture de tendance. Si la tendance de la période de temps de niveau supérieur change brusquement, la période de temps de niveau inférieur peut ne pas avoir encore réagi, ce qui entraîne l’échec de la stratégie.
  2. Risques liés à la configuration des paramètres. Une configuration inappropriée des paramètres peut entraîner une mauvaise performance de la stratégie. Par exemple, le choix d’une période SMA trop courte peut entraîner des transactions fréquentes, le choix d’une période trop longue peut entraîner un retard dans le jugement des tendances.
  3. Risque d’extrême situation. Dans des situations extrêmes (comme la chute d’une tempête), la stratégie peut ne pas fonctionner. Dans ces situations, les cycles de temps de bas niveau peuvent ne pas suivre la tendance des cycles de temps de haut niveau.

Orientation de l’optimisation de la stratégie

  1. Ajout d’un jugement sur les changements de tendance. Il est possible d’ajouter une certaine logique pour juger si les tendances des périodes de niveau supérieur ont changé, afin d’ajuster plus rapidement les transactions des périodes de niveau inférieur.
  2. Optimiser la sélection des paramètres. Des méthodes d’optimisation des paramètres peuvent être utilisées (comme les algorithmes génétiques, la recherche de grille, etc.) pour trouver la combinaison optimale de paramètres.
  3. Augmentation du contrôle des risques. Des mesures de contrôle des risques peuvent être ajoutées (par exemple, stop-loss, gestion des positions, etc.) pour réduire les pertes dans des situations extrêmes.
  4. L’intégration de plusieurs facteurs. On peut envisager d’intégrer d’autres indicateurs ou facteurs (tels que la volatilité, le volume de transactions, etc.) dans la stratégie pour améliorer la stabilité de la stratégie.

Résumer

La stratégie de dynamique à deux échelles de temps utilise le lien entre les cycles de temps de haut et bas niveau pour suivre la tendance et inverser la tendance en déterminant la direction de la tendance dans les cycles de temps de haut niveau et en capturant les points de retournement dans les cycles de temps de bas niveau. La logique de la stratégie est claire, les avantages sont évidents, mais il existe également des risques.

Code source de la stratégie
/*backtest
start: 2023-04-19 00:00:00
end: 2024-04-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Riester

//@version=5
strategy("Dual Timeframe Momentum", overlay=true, precision=6, pyramiding=0, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=25.0, commission_value=0.05)

n = input.int(20, "Moving Average Period", minval=1)
src = input.source(close, "Source")
high_tf = input.timeframe("240", "Resolution")
pivot_l = input.int(5, "Pivot Let Bars")
pivot_r = input.int(2, "Pivot Right Bars")

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Calculations
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

// 1. Define low and high timeframe prices
low_src = src
high_src = request.security(syminfo.tickerid, high_tf, src)

// 2. Use simple moving average to determine trend of higher timeframe (up or down)
high_tf_ma = ta.sma(high_src, n)
plot(high_tf_ma,  color=color.yellow)
high_tf_trend = high_tf_ma > high_tf_ma[1] ? 1 : -1

// 3. Use pivots to identify reversals on the low timeframe
low_tf_pl = ta.pivotlow(high_src, pivot_l, pivot_r)
plot(low_tf_pl, style=plot.style_line, linewidth=3, color= color.green, offset=-pivot_r)

low_tf_ph = ta.pivothigh(high_src, pivot_l, pivot_r)
plot(low_tf_ph, style=plot.style_line, linewidth=3, color= color.red, offset=-pivot_r)

bool long = low_tf_pl and high_tf_trend == 1
bool short = low_tf_ph and high_tf_trend == -1

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Plots
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

// this message is an alert that can be sent to a webhook, which allows for simple automation if you have a server that listens to alerts and trades programmatically.
enter_long_alert = '{"side": "Long", "order": "Enter", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'
exit_long_alert = '{"side": "Long", "order": "Exit", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'

if long
    strategy.entry(id="Long", direction=strategy.long, limit=open, alert_message=enter_long_alert)

if short
    strategy.close(id="Long", comment="Close Long", alert_message=exit_long_alert)