Stratégie d'achat par ATR basée sur le temps

Auteur:ChaoZhang est là., Date: 2024-02-28 17h36 et 50 min
Les étiquettes:

img

Résumé

L'idée de base de cette stratégie est de combiner le temps et les indicateurs ATR pour définir le moment de l'achat et les points de stop-loss. La stratégie émet un signal d'achat chronométré au moment spécifié, utilise le prix de clôture à ce moment-là comme prix d'achat, puis définit le point de stop-loss au prix d'achat plus la valeur ATR. Cela peut filtrer certains moments d'achat inappropriés tout en utilisant ATR pour contrôler les risques.

Principe de stratégie

La stratégie se compose principalement des éléments suivants:

  1. Paramètres d'entrée: y compris le paramètre timeTrade et ATR de temps d'acquisition atrLength. timeTrade détermine le temps d'acquisition et atrLength détermine le paramètre de période de ATR.

  2. Calcul de l'indicateur ATR: calculer la valeur ATR atrValue sur la base du paramètre atrLength.

  3. Définir les conditions d'achat: générer des signaux d'achat lorsque la combinaison des heures et des minutes est égale à timeTrade.

  4. Émission d'un ordre d'achat: passez à long terme lorsque la condition d'achat est remplie et enregistrez le prix d'achat.

  5. Fixer le point de stop loss: le point de stop loss est fixé au prix d'achat plus la valeur ATR.

  6. Tracer: tracer la ligne de niveau de stop-loss.

Analyse des avantages

Le plus grand avantage de cette stratégie est la double confirmation du moment d'achat et du point de stop loss par temps et indicateur ATR. Cela évite de suivre aveuglément le marché pour acheter et contrôle efficacement les risques. Deuxièmement, le point de stop loss fixé par ATR change dynamiquement, ce qui peut définir une plage de stop loss raisonnable en fonction des fluctuations du marché. Enfin, la logique de la stratégie est simple et facile à comprendre et à suivre.

Analyse des risques

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

  1. Une mauvaise définition du temps d'achat peut faire perdre de meilleures opportunités d'achat ou acheter sur des marchés indésirables.

  2. Les paramètres de l'ATR qui ne sont pas correctement réglés auront une incidence sur les performances de la stratégie si le point d'arrêt des pertes est trop grand ou trop petit.

  3. Incapable de suivre efficacement les tendances à long terme, plus adapté aux opérations à court terme.

  4. Les facteurs d'analyse fondamentaux ne sont pas pris en compte.

Directions d'optimisation

Cette stratégie peut être encore optimisée dans les domaines suivants:

  1. Déterminer un délai d'acceptation plus scientifique en combinant des modèles multifactoriels.

  2. Optimiser les paramètres ATR en combinant les modèles de volatilité.

  3. Améliorer le mécanisme de suivi des tendances pour s'adapter à des périodes de détention plus longues.

  4. Incorporer une analyse fondamentale pour juger du caractère raisonnable des délais d'achat.

Conclusion

Dans l'ensemble, il s'agit d'une stratégie de trading intraday relativement simple et intuitive à haute fréquence. L'idée principale est d'utiliser la double confirmation du temps et les indicateurs ATR pour déterminer le moment de l'achat et les points de stop-loss. Les avantages sont les risques contrôlables et relativement faciles à mettre en œuvre.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Time-based Strategy with ATR Take Profit", overlay=true)

// Initialize take profit levels
var float takeProfitLevel = na
var float takeProfitLevelForSell = na
var float buyprice = na
var float sellprice = na



// Input for the time when the trade should be executed
tradeTime = input(0700, "Trade Execution Time (HHMM)", "Specify the time in HHMM format", group="Time Settings")

// Calculate ATR for the last 5 minutes
atrLength = input(14, "ATR Length", "Specify ATR length", group="ATR Settings")
atrValue = request.security(syminfo.tickerid, "5", ta.atr(atrLength))

// Define conditions for buy and sell
buyCondition = hour * 100 + minute == tradeTime // and strategy.position_size == 0
sellCondition = hour * 100 + minute == tradeTime // and strategy.position_size > 0
// Execute Buy and Sell orders


if (buyCondition)
    strategy.entry("Buy", strategy.long)
    buyprice := close
    takeProfitLevel := buyprice + atrValue
strategy.exit("Take Profit BUY", from_entry="Buy", limit =takeProfitLevel) 
    

  

// if (sellCondition)
//     strategy.entry("Sell", strategy.short)
//     sellprice := close
//     takeProfitLevelForSell := sellprice -atrValue
// strategy.exit("Take Profit Sell", from_entry="Sell", limit=takeProfitLevelForSell)


// Plot horizontal lines for take profit levels


plot(takeProfitLevel, color=color.green, title="Take Profit Level (Buy)")
plot(takeProfitLevelForSell, color=color.red, title="Take Profit Level (Sell)")


Plus de