La stratégie de trading basée sur LazyBear

Auteur:ChaoZhang est là., Date: 2023-12-19 12:07:14 Je vous en prie.
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de trading basée sur l'indicateur de tendance de la vague de LazyBear.

La logique de la stratégie

Le noyau de cette stratégie est l'indicateur de tendance de vague de LazyBear. Il calcule d'abord le prix moyen (AP), puis la moyenne mobile exponentielle d'AP (ESA) et le mouvement absolu des prix (D). Basé sur l'ESA et D, la stratégie calcule l'indice de volatilité (CI), qui est ensuite alimenté dans une moyenne mobile exponentielle pour générer la ligne de tendance de vague (WT). WT est ensuite traité en WT1 et WT2 en utilisant des moyennes mobiles simples. Lorsque WT1 traverse WT2, il déclenche la croix d'or et va long. Lorsque WT1 traverse en dessous de WT2, il déclenche la croix de mort et court.

Analyse des avantages

Il s'agit d'une stratégie de tendance très simple mais pratique, dont les principaux avantages sont:

  1. Il identifie clairement l'évolution des prix et le sentiment du marché sur la base de l'indicateur Wave Trend
  2. Logique de trading simple basée sur des croisements or/mort des lignes WT
  3. Paramètres personnalisables pour ajuster la sensibilité du WT pour différents cycles
  4. Flexibilité pour ajouter d'autres filtres tels que la fenêtre d'heure de négociation

Analyse des risques

Cette stratégie présente certains risques:

  1. En tant que stratégie de suivi de tendance, il peut générer de nombreux faux signaux pendant les marchés à fourchette
  2. Le retard de WT peut entraîner des virages manqués
  3. Les paramètres par défaut peuvent ne pas convenir à tous les produits et cycles
  4. Aucun mécanisme de stop loss, période de rétention peut être très longue

Les principales solutions sont les suivantes:

  1. Optimiser les paramètres pour régler la sensibilité du WT
  2. Ajouter d'autres indicateurs de confirmation pour éviter les faux signaux
  3. Utiliser le stop-loss et le profit
  4. Limiter les transactions ou positions quotidiennes

Directions d'optimisation

Il est possible d'optimiser davantage:

  1. Optimiser les paramètres WT pour une meilleure sensibilité ou stabilité
  2. Utiliser différents ensembles de paramètres basés sur les cycles
  3. Ajouter des indicateurs tels que le volume, la volatilité pour la confirmation
  4. Ajoutez le stop loss et le profit
  5. Enrichir la logique de trading comme la pyramide, le trading de grille
  6. Explorez de meilleures fonctionnalités et règles à l'aide de l'apprentissage automatique

Résumé

En résumé, il s'agit d'une stratégie de suivi des tendances très simple et pratique. En modélisant la tendance des tendances des fluctuations de prix, il identifie les conditions de marché d'achat et de vente excédentaires pour générer des signaux commerciaux à l'aide des croix d'or et des croix de la mort WT. La stratégie est facile à mettre en œuvre mais peut nécessiter une optimisation supplémentaire pour la sensibilité et la stabilité.


/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//
// @author LazyBear
//
// If you use this code in its original/modified form, do drop me a note. 
//
//@version=4
     
// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2021, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")
 
ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
 
wt1 = tci
wt2 = sma(wt1,4)

plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=3)
plot(osLevel2, color=color.green, style=3)

plot(wt1, color=color.white)
plot(wt2, color=color.fuchsia)
plot(wt1-wt2, color=color.new(color.blue, 80), style=plot.style_area)

//Strategy
strategy(title="T!M - Wave Trend Strategy", overlay = false, precision = 8, max_bars_back = 200, pyramiding = 0, initial_capital = 1000, currency = currency.NONE, default_qty_type = strategy.cash, default_qty_value = 1000, commission_type = "percent", commission_value = 0.1, calc_on_every_tick=false, process_orders_on_close=true)
    
longCondition  = crossover(wt1, wt2)
shortCondition = crossunder(wt1, wt2)

strategy.entry(id="Long Entry", comment="buy", long=true, when=longCondition and window())
strategy.close("Long Entry", comment="sell", when=shortCondition and window())      

//strategy.entry(id="Short Entry", long=false, when=shortCondition)

Plus de