Stratégie de rupture élevée et basse de la session asiatique

Auteur:ChaoZhang est là., Date: 2024-03-29 17:12:49 Je vous en prie.
Les étiquettes:

img

Résumé

L'idée principale de cette stratégie est d'utiliser les points hauts et bas de la session asiatique comme points de rupture. Dans les quelques heures suivant l'ouverture des marchés européens et américains, si le prix dépasse le sommet de la session asiatique, il va long; s'il dépasse le bas de la session asiatique, il va court. Stop loss et take profit sont configurés pour contrôler le risque. La stratégie n'ouvre qu'une transaction par jour, avec un maximum de 100 000 positions simultanées.

Principe de stratégie

  1. Déterminez l'heure de négociation de la session asiatique.
  2. Pendant la session asiatique, enregistrez les prix les plus élevés et les plus bas de la journée.
  3. À un certain moment (heures de décalage définies par l'utilisateur) après l'ouverture des marchés européens et américains, si le prix dépasse le sommet de la session asiatique, passez long; s'il dépasse le bas de la session asiatique, passez court.
  4. Le nombre de points pour le stop loss et le take profit peut être personnalisé.
  5. Ouvrez une seule nouvelle transaction par jour, avec un maximum de 100 000 positions simultanées.
  6. Si une position a déjà été ouverte pour la journée, aucune nouvelle opération ne sera ouverte.

Analyse des avantages

  1. En utilisant les caractéristiques relativement calmes de la session asiatique et en utilisant les points hauts et bas de la session asiatique comme points de rupture, il peut mieux saisir les opportunités de tendance des sessions européenne et américaine.
  2. La mise en place d'un stop loss et d'un take profit permet de contrôler efficacement le risque, de permettre des transactions rentables et d'arrêter rapidement les pertes sur les transactions non rentables.
  3. La limitation à une seule transaction par jour et à un nombre maximum de positions simultanées permet d'éviter une survente et une utilisation excessive des fonds.
  4. Les utilisateurs peuvent régler de manière flexible des paramètres tels que l'heure de session asiatique et les heures de décalage en fonction de leurs propres besoins.

Analyse des risques

  1. Les hauts et les bas de la session asiatique peuvent ne pas être les vrais hauts et les bas de la journée.
  2. Le stop loss et le take profit à point fixe peuvent ne pas être en mesure de faire face à de grandes fluctuations du marché.
  3. Dans les situations où la tendance n'est pas évidente ou où la volatilité du marché est élevée, la stratégie peut présenter des pertes d'ouverture et d'arrêt fréquentes.

Direction de l'optimisation

  1. Considérez l'idée d'ajuster dynamiquement le nombre de points pour le stop loss et le take profit en fonction d'indicateurs de volatilité tels que l'ATR afin de s'adapter aux différentes conditions du marché.
  2. Ajoutez quelques indicateurs de jugement de tendance, tels que MA, et n'allez long que lorsque la grande tendance est en hausse et court lorsque celle-ci est en baisse pour améliorer le taux de réussite.
  3. Considérez la possibilité de définir différents paramètres pour différentes périodes de temps, par exemple en utilisant un stop loss et un take profit plus petits au début des sessions de négociation européennes et américaines, et en augmentant le stop loss et le take profit lorsque la tendance est évidente.

Résumé

Cette stratégie utilise les points hauts et bas de la session asiatique comme points de rupture pour le trading et est adaptée à une utilisation sur des variétés présentant des tendances évidentes sur les marchés européen et américain. Cependant, les méthodes de stop loss et take profit à point fixe et les méthodes d'entrée de rupture standard ont également certaines limitations. En introduisant certains indicateurs dynamiques et basés sur la tendance, la stratégie peut être optimisée pour obtenir de meilleurs résultats.


/*backtest
start: 2024-02-27 00:00:00
end: 2024-03-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Asia Session", overlay=true)

var hourSessionStart = input(19, "Asia session start hour", minval=0, maxval=23)
var hourSessionStop  = input(1, "Asia session end hour", minval=0, maxval=23)
var offsetHours = input(3, "Offset hours after Asia session end")

var float hi              = na
var float lo              = na
var float plotHi          = na
var float plotLo          = na

var bool  inSession       = na
var bool  enteringSession = na
var bool  exitingSession  = na

inSession       := (hour >= hourSessionStart or hour < hourSessionStop)
enteringSession := inSession and not inSession[1]
exitingSession  := not inSession and inSession[1]

if enteringSession
    plotLo := na
    plotHi := na

if inSession
    lo := min(low,  nz(lo, 1.0e23))
    hi := max(high, nz(hi))

if exitingSession
    plotLo := lo
    plotHi := hi
    lo     := na
    hi     := na

bgcolor(inSession ? color.blue : na)

plot(plotLo, "Asia session Low",  color.red,   style=plot.style_linebr)
plot(plotHi, "Asia session High", color.green, style=plot.style_linebr)

// Implementazione delle condizioni di entrata
var float asiaSessionLow = na
var float asiaSessionHigh = na
var int maxTrades = 100000 // Impostiamo il massimo numero di operazioni contemporanee
var int tradesOpened = 0 // Variabile per tenere traccia del numero di operazioni aperte
var bool tradeOpened = false
var bool operationClosed = false // Nuova variabile per tenere traccia dello stato di chiusura dell'operazione

// Calcolo del range asiatico
if (inSession)
    asiaSessionLow := lo
    asiaSessionHigh := hi

// Apertura di un solo trade al giorno
if (enteringSession)
    tradeOpened := false

// Condizioni di entrata
var float stopLoss = 300 * syminfo.mintick
var float takeProfit = 300 * syminfo.mintick

if (not tradeOpened and not operationClosed and close < asiaSessionLow and tradesOpened < maxTrades and hour >= hourSessionStop + offsetHours)
    strategy.entry("Buy", strategy.long)
    tradeOpened := true
    tradesOpened := tradesOpened + 1 // Incrementiamo il contatore delle operazioni aperte

if (not tradeOpened and not operationClosed and close > asiaSessionHigh and tradesOpened < maxTrades and hour >= hourSessionStop + offsetHours)
    strategy.entry("Sell", strategy.short)
    tradeOpened := true
    tradesOpened := tradesOpened + 1 // Incrementiamo il contatore delle operazioni aperte

// Impostazione dello stop loss e del take profit
strategy.exit("Stop Loss / Take Profit", "Buy", stop=close - stopLoss, limit=close + takeProfit)
strategy.exit("Stop Loss / Take Profit", "Sell", stop=close + stopLoss, limit=close - takeProfit)


Plus de