Stratégie de trading Alligator suivant la tendance à long terme

SMMA SMA
Date de création: 2024-05-17 15:40:13 Dernière modification: 2024-05-17 15:40:13
Copier: 4 Nombre de clics: 718
1
Suivre
1617
Abonnés

Stratégie de trading Alligator suivant la tendance à long terme

Aperçu

La stratégie Alligator de suivi de tendance à long terme est une stratégie de trading quantitative basée sur l’indicateur Williams Alligator. Elle utilise une combinaison de moyennes mobiles de différentes périodes pour capturer les principales tendances du marché et s’applique aux transactions de suivi de tendance à moyen et long terme.

Principe de stratégie

L’indicateur Alligator est construit à l’aide de moyennes mobiles de trois périodes différentes:

  1. Ligne de la mâchoire: 13 cycles SMMA, horizontalement vers le futur 8 lignes K
  2. Ligne de dents: 8 cycles SMMA, horizontalement vers l’avenir 5 lignes K
  3. Lips: 5 cycles SMMA, horizontalement vers le futur 3 racines K

Lorsque l’ouverture de l’indicateur Alligator est orientée vers le haut, c’est-à-dire que la ligne Jaw est en bas, la ligne Teeth est au milieu, la ligne Lips est en haut, et que le prix est au-dessus de l’indicateur Alligator, la stratégie prend position. Cette situation indique qu’une vague de tendance à la hausse a été confirmée, et nous souhaitons conserver cette position jusqu’à la fin de la tendance.

Lorsque le prix tombe au-dessous de la ligne Jaw, la stratégie se calme. Cela nous garantit que nous ne pourrons pas continuer à détenir des positions en marché baissier.

Avantages stratégiques

  1. Convient pour les transactions à moyen et long terme: la stratégie est basée sur l’indicateur Alligator, capte efficacement les principales tendances du marché et convient parfaitement aux transactions à moyen et long terme.
  2. Faible fréquence de négociation: la stratégie consiste à ouvrir une position uniquement lorsque la tendance est confirmée et à la fermer à la fin de la tendance. La fréquence de négociation est relativement faible, ce qui permet de réduire efficacement le coût de la transaction.
  3. Large portée: La stratégie peut être appliquée à divers marchés financiers, tels que les devises étrangères, les crypto-monnaies, etc., avec une grande adaptabilité et flexibilité.
  4. Pas besoin d’optimiser les paramètres: la stratégie suit entièrement les tendances du marché, pas besoin d’optimiser les paramètres, simple et facile à utiliser.

Risque stratégique

  1. Risque de glissement potentiel: dans les cas de forte volatilité ou de manque de liquidité du marché, les ordres de négociation peuvent ne pas être exécutés au prix attendu, ce qui entraîne un risque de glissement.
  2. Manque de gestion des risques: la stratégie n’a pas de configuration de gestion des risques, et la taille de la position de chaque transaction doit être ajustée en fonction de ses propres préférences en matière de risque.
  3. Il est possible de manquer des opportunités de trading à court terme: la stratégie étant axée sur la capture de tendances à moyen et long terme, il est possible de manquer des opportunités de trading à court terme.

Orientation de l’optimisation de la stratégie

  1. Ajouter un module de gestion des risques: il est possible d’envisager d’ajouter des mesures de gestion des risques, telles que des arrêts de perte, des ajustements de position dynamiques, etc., afin de mieux contrôler les risques.
  2. Combinaison avec d’autres indicateurs techniques: vous pouvez essayer de combiner l’indicateur Alligator avec d’autres indicateurs techniques, tels que le RSI, le MACD, etc., pour améliorer la précision et la fiabilité de la stratégie.
  3. Optimiser les paramètres: Bien que cette stratégie ne nécessite pas d’optimiser les paramètres, on peut essayer de faire des retours sur différentes périodes de temps et sur les paramètres de transaction pour trouver la meilleure combinaison de paramètres.

Résumer

Alligator est une stratégie de trading quantitative simple, facile à utiliser et à grande échelle. En utilisant l’indicateur Alligator pour capturer les principales tendances du marché, la stratégie peut générer des rendements stables sur le moyen et le long terme. Bien que la stratégie présente des risques potentiels, la performance et la stabilité de la stratégie peuvent être encore améliorées par l’ajout d’un module de gestion des risques, combiné à d’autres indicateurs techniques et à des paramètres de configuration optimisés.

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

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

//_______ <version>
//@version=5

//_______ <declaration_statement>
strategy(title = "Alligator Long Term Trend Following Strategy [Skyrex.io]", 
         shorttitle = "Alligator Strategy [Skyrex.io]", 
         overlay = true, 
         format = format.inherit, 
         pyramiding = 1, 
         calc_on_order_fills = false, 
         calc_on_every_tick = true, 
         default_qty_type = strategy.percent_of_equity, 
         default_qty_value = 100, 
         initial_capital = 10000, 
         currency = currency.NONE,  
         commission_type = strategy.commission.percent, 
         commission_value = 0.1,
         slippage = 5)


//_______ <constant_declarations>
var color skyrexGreen = color.new(#2ECD99, 0)
var color skyrexGray = color.new(#F2F2F2, 0)
var color skyrexWhite = color.new(#FFFFFF, 0)

var color barcolor = na


//_______ <inputs>
// Trading bot settings
sourceUuid = input.string(title = "sourceUuid:", defval = "yourBotSourceUuid", group = "Trading Bot Settings")
secretToken = input.string(title = "secretToken:", defval = "yourBotSecretToken", group = "Trading Bot Settings")

// Trading Period Settings
lookBackPeriodStart = input(title = "Trade Start Date/Time", defval = timestamp('2023-01-01T00:00:00'), group = "Trading Period Settings")
lookBackPeriodStop = input(title = "Trade Stop Date/Time", defval = timestamp('2025-01-01T00:00:00'), group = "Trading Period Settings")

//_______ <function_declarations>
//@function       Used to calculate Simple moving average for Alligator
//@param src      Sourse for smma Calculations
//@param length   Number of bars to calculate smma
//@returns        The calculated smma value 
smma(src, length) =>
    smma =  0.0
    smma := na(smma[1]) ? ta.sma(src, length) : (smma[1] * (length - 1) + src) / length
    smma


//@function       Used to decide if current candle above the Alligator
//@param jaw      Jaw line of an Alligator
//@param teeth    Teeth line of an Alligator
//@param lips     Lips line of an Alligator
//@returns        Bool value  
is_LowAboveAlligator(jaw, teeth, lips) =>
    result = low > jaw and low > lips and low > teeth 
    result


//@function       Used to decide if current candle below the Alligator
//@param jaw      Jaw line of an Alligator
//@param teeth    Teeth line of an Alligator
//@param lips     Lips line of an Alligator
//@returns        Bool value  
is_HighBelowAlligator(jaw, teeth, lips) =>
    result = high < jaw and high < lips and high < teeth 
    result


//@function       Used to decide if Alligator's mouth is open
//@param jaw      Jaw line of an Alligator
//@param teeth    Teeth line of an Alligator
//@param lips     Lips line of an Alligator
//@returns        Bool value 
is_AlligatorHungry(jaw, teeth, lips) =>
    result = lips > jaw[5] and lips > teeth[2] and teeth > jaw[3]
    result


//_______ <calculations>
jaw = smma(hl2, 13)[8]
teeth = smma(hl2, 8)[5]
lips = smma(hl2, 5)[3]


jaw_o = smma(hl2, 13)
teeth_o = smma(hl2, 8)
lips_o = smma(hl2, 5)


//_______ <strategy_calls>
longCondition = is_LowAboveAlligator(jaw, teeth, lips) and is_AlligatorHungry(jaw_o, teeth_o, lips_o) 
if (longCondition)
    strategy.entry(id = "entry1", direction = strategy.long, alert_message = '{\n"base": "' + syminfo.basecurrency + '",\n"quote": "' + syminfo.currency + '",\n"position": "entry1",\n"price": "' + str.tostring(close) + '",\n"sourceUuid": "' + sourceUuid + '",\n"secretToken": "' + secretToken + '",\n"timestamp": "' + str.tostring(timenow) + '"\n}')

if close < jaw
    strategy.close(id = "entry1", alert_message = '{\n"base": "' + syminfo.basecurrency + '",\n"quote": "' + syminfo.currency + '",\n"position": "close",\n"price": "' + str.tostring(close) + '",\n"sourceUuid": "' + sourceUuid + '",\n"secretToken": "' + secretToken + '",\n"timestamp": "' + str.tostring(timenow) + '"\n}')



//_______ <visuals>
if strategy.opentrades > 0
    barcolor := skyrexGreen
else 
    barcolor := skyrexGray

barcolor(barcolor)
//_______ <alerts>