Les ressources ont été chargées... Je charge...

Stratégie de dynamique à double échelle temporelle

Auteur:ChaoZhang est là., Date: 2024-04-25 17h33:02 Je vous en prie
Les étiquettes:SMA

双时间尺度动量策略

Résumé

Cette stratégie est une stratégie de dynamisme à deux échelles de temps. Elle détermine la direction de la tendance en utilisant des moyennes mobiles simples (SMA) sur les cycles de temps de niveau supérieur, et identifie les points d'inversion (PivotLow et PivotHigh) sur les cycles de temps de niveau inférieur. Elle est plus ouverte lorsque les cycles de temps de niveau supérieur présentent une tendance haussière et plus ouverte lorsque les cycles de temps de niveau inférieur présentent une tendance haussière.

Les principes stratégiques

Le principe principal de cette stratégie est que la direction de la tendance des cycles de temps de haut niveau affecte la tendance des cycles de temps de bas niveau. Lorsque les cycles de temps de haut niveau présentent une tendance haussière, les retours des cycles de temps de bas niveau sont plus susceptibles d'être des opportunités d'achat; lorsque les cycles de temps de haut niveau présentent une tendance baissière, les rebonds des cycles de temps de bas niveau sont plus susceptibles d'être des opportunités de vente. La stratégie utilise des moyennes mobiles simples (SMA) pour déterminer la direction de la tendance des cycles de temps de haut niveau, et utilise les points pivots (PivotLow et PivotHigh) pour identifier les points de retour des cycles de temps de bas niveau.

Les avantages stratégiques

  1. L'analyse à deux échelles de temps, qui utilise l'influence des cycles de temps de haut niveau sur les cycles de temps de bas niveau, augmente la probabilité de réussite des transactions.
  2. L'utilisation d'un SMA pour déterminer la direction de la tendance est plus fiable, et l'utilisation d'un point central pour capturer les points d'inversion est plus précise.
  3. Les paramètres sont réglables et adaptatifs. L'utilisateur peut ajuster la hauteur et la basseur de l'échelle de temps, le cycle de l'SMA, les paramètres du point central, etc. en fonction de ses besoins.
  4. La logique est claire, facile à comprendre et à mettre en œuvre.

Risque stratégique

  1. Risque de mutation des tendances. Si les tendances des cycles de temps de haut niveau changent soudainement, les cycles de temps de bas niveau peuvent ne pas avoir réagi, ce qui entraîne un échec de la stratégie.
  2. Risque de paramétrage. Une mauvaise configuration des paramètres peut entraîner une mauvaise performance de la stratégie. Par exemple, choisir une période SMA trop courte peut entraîner des transactions fréquentes et choisir une période trop longue peut entraîner un retard dans la détermination de la tendance.
  3. Risque de marché extrême. Dans des marchés extrêmes (comme les fortes baisses), cette stratégie peut échouer. Dans ce cas, les cycles de temps de bas niveau peuvent ne pas suivre la tendance des cycles de temps de haut niveau.

Optimisation stratégique

  1. Augmentation du jugement des changements de tendance. On peut ajouter une certaine logique pour déterminer si une tendance à un cycle de temps de haut niveau a changé afin d'ajuster plus rapidement les transactions à un cycle de temps de bas niveau.
  2. Optimiser la sélection des paramètres. Vous pouvez utiliser certaines méthodes d'optimisation des paramètres (comme les algorithmes génétiques, la recherche de grilles, etc.) pour trouver la meilleure combinaison de paramètres.
  3. Augmenter le contrôle des risques. Des mesures de contrôle des risques (par exemple, la gestion des positions, etc.) peuvent être ajoutées pour réduire les pertes dans les marchés extrêmes.
  4. La convergence de facteurs multiples. L'intégration d'autres indicateurs ou facteurs (tels que le taux de volatilité, le volume des transactions, etc.) dans la stratégie peut être envisagée pour améliorer la stabilité de la stratégie.

Résumé

Cette stratégie de dynamisme à deux échelles utilise les liens entre les cycles de temps de haut et de bas niveau, en déterminant la direction de la tendance sur les cycles de temps de haut niveau et en capturant les points d'inversion sur les cycles de temps de bas niveau pour réaliser le suivi et l'inversion des tendances. La stratégie est logique, ses avantages sont évidents, mais il y a aussi des risques.


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


Contenu lié

En savoir plus