Tendance à l'AM sur plusieurs périodes suivant la stratégie

Auteur:ChaoZhang est là., Date: 2024-01-04 17h43 et 17h
Les étiquettes:

img

Résumé

Cette stratégie est basée sur le croisement de la moyenne mobile sur plusieurs délais pour suivre les tendances à moyen et long terme. Elle adopte une position pyramidale pour poursuivre les hausses et atteindre une croissance exponentielle du capital.

La logique de la stratégie

  1. Construire des délais multiples basés sur une moyenne de 9 jours, une moyenne de 100 jours et une moyenne de 200 jours.
  2. Générer des signaux d'achat lorsque l'EM de courte durée dépasse l'EM de longue durée.
  3. Vérifiez les positions existantes avant d'ajouter une nouvelle entrée, arrêtez la pyramide lorsque 6 positions sont déjà ouvertes.
  4. Fixer 3% de TP/SL pour le contrôle des risques.

Ci-dessus est la logique de base du trading.

Les avantages

  1. Capter efficacement les tendances à moyen et long terme et profiter d'une croissance exponentielle.
  2. Le croisement MA multi-temps évite le bruit à court terme.
  3. Le TP/SL fixe contrôle le risque pour chaque position.
  4. Des entrées pyramidales en lots pour obtenir des rendements excessifs.

Risques et solutions

  1. Le risque de pertes énormes si vous ne parvenez pas à réduire les pertes lors d'un renversement de tendance.
  2. Le risque d'appel de marge en cas de perte dépassant la tolérance.
  3. Le risque de perte de plus de 700% en cas de forte tendance à la baisse.

Directions d'optimisation

  1. Testez différentes combinaisons de MA pour trouver les paramètres optimaux.
  2. Optimisez la quantité des étapes pyramidales, testez pour trouver le meilleur nombre.
  3. Testez les réglages TP/SL fixes. Élargissez la plage TP pour une plus grande rentabilité.

Résumé

La stratégie est très adaptée pour capturer les tendances à moyen et long terme. Les entrées pyramidales en lots peuvent atteindre un ratio risque-rendement très élevé. Il existe également certains risques d'exploitation, qui doivent être contrôlés par ajustement des paramètres. Dans l'ensemble, il s'agit d'une stratégie prometteuse qui vaut la peine d'être vérifiée et optimisée.


/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 1m
basePeriod: 1m
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/
    // © Coinrule
    
//@version=3
strategy(shorttitle='Pyramiding Entry On Early Trends',title='Pyramiding Entry On Early Trends (by Coinrule)', overlay=false, pyramiding= 7, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 20, commission_type=strategy.commission.percent, commission_value=0.1)
    
    
//Backtest dates
fromMonth = input(defval = 1,  title = "From Month")     
fromDay   = input(defval = 10,    title = "From Day")       
fromYear  = input(defval = 2020, title = "From Year")       
thruMonth = input(defval = 1,    title = "Thru Month")     
thruDay   = input(defval = 1,    title = "Thru Day")     
thruYear  = input(defval = 2112, title = "Thru Year")       
    
showDate  = input(defval = true, title = "Show Date Range")
    
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"
    
    
//MA inputs and calculations
inSignal=input(9, title='MAfast')
inlong1=input(100, title='MAslow')
inlong2=input(200, title='MAlong')
    
MAfast= sma(close, inSignal)
MAslow= sma(close, inlong1)
MAlong= sma(close, inlong2)
    
    
Bullish = crossover(close, MAfast) 
    
longsignal = (Bullish and MAfast > MAslow and MAslow < MAlong and window())
    
//set take profit
    
ProfitTarget_Percent = input(3)
Profit_Ticks = (close * (ProfitTarget_Percent / 100)) / syminfo.mintick
    
//set take profit
    
LossTarget_Percent = input(3)
Loss_Ticks = (close * (LossTarget_Percent / 100)) / syminfo.mintick
    
    
//Order Placing
    
strategy.entry("Entry 1", strategy.long, when = (strategy.opentrades == 0) and longsignal)
    
strategy.entry("Entry 2", strategy.long, when = (strategy.opentrades == 1) and longsignal)
        
strategy.entry("Entry 3", strategy.long, when = (strategy.opentrades == 2) and longsignal)
    
strategy.entry("Entry 4", strategy.long, when = (strategy.opentrades == 3) and longsignal)
    
strategy.entry("Entry 5", strategy.long, when = (strategy.opentrades == 4) and longsignal)
        
strategy.entry("Entry 6", strategy.long, when = (strategy.opentrades == 5) and longsignal)
        
strategy.entry("Entry 7", strategy.long, when = (strategy.opentrades == 6) and longsignal)
    
    
    
if (strategy.position_size > 0)
    strategy.exit(id="Exit 1", from_entry = "Entry 1", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 2", from_entry = "Entry 2", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 3", from_entry = "Entry 3", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 4", from_entry = "Entry 4", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 5", from_entry = "Entry 5", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 6", from_entry = "Entry 6", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 7", from_entry = "Entry 7", profit = Profit_Ticks, loss = Loss_Ticks)
     


Plus de