Stratégie de croisement de moyenne mobile Golden Cross et Death Cross


Date de création: 2023-12-05 11:11:02 Dernière modification: 2023-12-05 11:11:02
Copier: 0 Nombre de clics: 713
1
Suivre
1619
Abonnés

Stratégie de croisement de moyenne mobile Golden Cross et Death Cross

Il s’agit d’une stratégie très classique de dérivation de la moyenne mobile. Cette stratégie utilise les moyennes mobiles de deux périodes différentes, TENKAN et KIJUN, pour former des signaux de dérivation et de dérivation, et effectuer des opérations longues et courtes.

Principe de stratégie

Cette stratégie est basée sur une méthode d’analyse technique des actions japonaises appelée “tableau d’équilibre à première vue” qui utilise plusieurs moyennes mobiles telles que la ligne TENKAN et la ligne KIJUN pour juger de la direction de la tendance du marché.

Tout d’abord, la ligne TENKAN est la ligne de 9 jours, qui représente la tendance à court terme; la ligne KIJUN est la ligne de 26 jours, qui représente la tendance à moyen terme. Lorsqu’elle traverse le milieu à court terme, elle génère un signal d’achat; lorsqu’elle traverse le milieu à court terme, elle génère un signal de vente.

La stratégie introduit ensuite les lignes aériennes et les lignes de nuage lumineux. La ligne aérienne est la moyenne des moyennes mobiles à court et moyen terme, et la ligne de nuage lumineux B est la moyenne mobile à 52 jours.

Enfin, pour filtrer les faux signaux, la stratégie détecte également si le prix est en relation avec la ligne OTO (la ligne de retard du prix du 26e jour). Le signal d’achat ne se produit que lorsque le prix est en dessous de la ligne OTO; le signal de vente ne se produit que lorsque le prix est au-dessus de la ligne OTO.

Avantages stratégiques

Il s’agit d’une stratégie très typique de la moyenne mobile, dont les avantages se manifestent principalement sous trois aspects:

  1. L’utilisation d’une moyenne de deux périodes différentes permet de déterminer efficacement la direction de la tendance à court et moyen terme.

  2. Les courbes lumineuses permettent de juger des tendances à long terme et d’éviter d’être en hausse dans un marché baissier à long terme.

  3. En détectant la relation entre les prix et les prix de retard, il est possible de filtrer de nombreux faux signaux et de réduire les transactions inutiles.

La stratégie utilise donc les multiples fonctions de la ligne moyenne pour saisir rapidement les opportunités de tendances à court, moyen et long terme.

Risque stratégique

Les principaux risques de cette stratégie sont les suivants:

  1. La stratégie de la ligne moyenne est susceptible de générer de nombreux faux signaux. Si les paramètres ne sont pas bien définis, ils peuvent être enfermés en raison de la fréquence des transactions.

  2. La stratégie est axée sur les aspects techniques sans tenir compte des facteurs fondamentaux. Les signaux techniques peuvent également être invalidés si des changements importants surviennent dans les performances de l’entreprise ou dans la politique du marché.

  3. La stratégie ne prend en compte que les décisions d’achat et de vente et ne met pas en place de mécanisme de stop loss. Une erreur de jugement peut augmenter les pertes.

Nous devons donc trouver des systèmes plus avancés, ou mettre en place des stop-loss raisonnables, ou ajouter des signaux fondamentaux, pour améliorer encore cette stratégie et réduire le risque.

Orientation de l’optimisation de la stratégie

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

  1. Nous pouvons trouver des valeurs de paramètres qui rendent les performances de la stratégie meilleures en faisant plus de retours de données.

  2. Augmentation des mécanismes de stop-loss. Un stop-loss raisonnable permet de contrôler efficacement la perte maximale de la stratégie.

  3. Ajout de signaux fondamentaux. Par exemple, les données de la révision des attentes de performance peuvent déterminer les perspectives de l’entreprise, ce qui améliore l’efficacité de la stratégie.

  4. Optimiser la stratégie de ligne OTO. Les implémentations existantes sont simples et nous pouvons trouver des méthodes plus stables et plus précises pour juger de la relation entre les prix et les prix historiques.

  5. En combinant les signaux de sélection des actions, des facteurs tels que le PE, le ROE et d’autres facteurs peuvent être ajoutés pour filtrer les indicateurs de qualité médiocre.

Résumer

Il s’agit d’une stratégie de moyenne mobile très typique et pratique. Elle s’intéresse à la fois aux tendances à court, moyen et long trois dimensions temporelles, et utilise les différentes fonctions de la ligne de parité pour concevoir des signaux de négociation, avec de bons résultats. Sur cette base, nous pouvons améliorer sa performance en utilisant des méthodes telles que l’optimisation des paramètres, l’arrêt des pertes et la sélection des actions.

Code source de la stratégie
/*backtest
start: 2022-11-28 00:00:00
end: 2023-12-04 00:00:00
period: 1d
basePeriod: 1h
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/
// © mdeous

//@version=4
strategy(
     title="Ichimoku Kinko Hyo Strategy", 
     shorttitle="Ichimoku Strategy", 
     overlay=true,
     pyramiding=0,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=100,
     initial_capital=1000,
     currency="USD",
     commission_type=strategy.commission.percent,
     commission_value=0.0
     )

//
// SETTINGS
//

// Ichimoku

int TENKAN_LEN = input(title="Tenkan-Sen Length", defval=9, minval=1, step=1)
int KIJUN_LEN = input(title="Kijun-Sen Length", defval=26, minval=1, step=1)
int SSB_LEN = input(title="Senkou Span B Length", defval=52, minval=1, step=1)
int OFFSET = input(title="Offset For Chikou Span / Kumo", defval=26, minval=1, step=1)

// Strategy

int COOLDOWN = input(title="Orders Cooldown Period", defval=5, minval=0, step=1)
bool USE_CHIKOU = input(title="Use Imperfect Chikou Position Detection", defval=false)

//
// HELPERS
//

color _red = color.red
color _blue = color.blue
color _lime = color.lime
color _fuchsia = color.fuchsia
color _silver = color.silver
color _aqua = color.aqua

f_donchian(_len) => avg(lowest(_len), highest(_len))

//
// ICHIMOKU INDICATOR
//

float tenkan = f_donchian(TENKAN_LEN)
float kijun = f_donchian(KIJUN_LEN)
float ssa = avg(tenkan, kijun)
float ssb = f_donchian(SSB_LEN)

plot(tenkan, title="Tenkan", color=_silver)
plot(close, title="Chikou", offset=-OFFSET+1, color=_aqua)
_ssa = plot(ssa, title="SSA", offset=OFFSET-1, color=_lime)
_ssb = plot(ssb, title="SSB", offset=OFFSET-1, color=_red)
fill(_ssa, _ssb, color=ssa > ssb ? _lime : _fuchsia, transp=90)

//
// STRATEGY
//

// Check if price is "above or below" Chikou (i.e. historic price line):
// This detection is highly imperfect, as it can only know what Chikou position
// was 2*offset candles in the past, therefore if Chikou crossed the price
// line in the last 2*offset periods it won't be detected.
// Use of this detection is disabled by default,

float _chikou_val = close[OFFSET*2+1]
float _last_val = close[OFFSET+1]
bool above_chikou = USE_CHIKOU ? _last_val > _chikou_val : true
bool below_chikou = USE_CHIKOU ? _last_val < _chikou_val : true

// Identify short-term trend with Tenkan

bool _above_tenkan = min(open, close) > tenkan
bool _below_tenkan = max(open, close) < tenkan

// Check price position compared to Kumo

bool _above_kumo = min(open, close) > ssa
bool _below_kumo = max(open, close) < ssb

// Check if Kumo is bullish or bearish

bool bullish_kumo = ssa > ssb
bool bearish_kumo = ssa < ssb

// Correlate indicators to confirm the trend

bool bullish_trend = _above_tenkan and _above_kumo and bullish_kumo
bool bearish_trend = _below_tenkan and _below_kumo and bearish_kumo

// Build signals

bool buy1 = (close > open) and ((close > ssa) and (open < ssa)) // green candle crossing over SSA
bool buy2 = bullish_kumo and bearish_kumo[1] // bullish Kumo twist

bool sell1 = (close < open) and ((close < ssb) and (open > ssb)) // red candle crossing under SSB
bool sell2 = bearish_kumo and bullish_kumo[1] // bearish Kumo twist

bool go_long = below_chikou and (bullish_trend and (buy1 or buy2))
bool exit_long = above_chikou and (bearish_trend and (sell1 or sell2))

//
// COOLDOWN
//

f_cooldown() =>
    _cd_needed = false
    for i = 1 to COOLDOWN by 1
        if go_long[i]
            _cd_needed := true
            break
    _cd_needed

go_long := f_cooldown() ? false : go_long

//
// ORDERS
//

strategy.entry("buy", strategy.long, when=go_long)
strategy.close_all(when=exit_long)

//
// ALERTS
//

alertcondition(
     condition=go_long,
     title="Buy Signal",
     message="{{exchange}}:{{ticker}}: A buy signal for {{strategy.market_position_size}} units has been detected (last close: {{close}})."
     )
alertcondition(
     condition=exit_long,
     title="Sell Signal",
     message="{{exchange}}:{{ticker}}: A sell signal for {{strategy.market_position_size}} units has been detected (last close: {{close}})."
     )