Stratégie de conduite ouverte

Auteur:ChaoZhang est là., Date: 2023-10-23 à 15h13h49
Les étiquettes:

img

Résumé

La stratégie d'ouverture observe le comportement des prix dans les 30 premières minutes après l'ouverture du marché chaque jour de négociation, identifie les fortes ruptures directionnelles et entre dans les transactions de tendance dans cette direction.

La logique de la stratégie

  1. Utilisez des barres de 30 minutes, car il faut suffisamment de temps pour mesurer les mouvements de prix extrêmes après l'ouverture.

  2. Identifiez les bars ouverts pendant ces périodes: 0700-0715, 0800-0815, 1300-1315, 1430-1445.

  3. Vérifiez si la barre d'ouverture satisfait:

    • Ouverture près de la barre basse, fermeture près de la barre haute (barre haute)

    • Ou ouvrir près de barre haute, fermer près de barre basse (barre basse)

    • Et le plus haut dépasse le plus haut de 5 bar précédent de 1 x 5 bar, ou le plus bas dépasse le plus bas de 5 bar précédent de 1 x 5 bar (breakout)

  4. Si les conditions ci-dessus sont remplies, entrez le commerce de tendance dans cette direction 3 barres après la barre de signal.

  5. Réglez le stop loss à haute/basse barre d'entrée.

  6. Maintenez la position pendant 3 bars (90 min), puis sortez.

Analyse des avantages

  • Capture des mouvements directionnels forts résultant d'une liquidité élevée après ouverture
  • Les filtres de rupture évitent les faux signaux des conditions de choc
  • Un délai plus long réduit le sur-échange
  • Stop loss évite les pertes excessives

Analyse des risques

  • Les périodes d'ouverture fixes présentent le risque de manquer des écarts de tendance
  • Un seuil de rupture insuffisant peut filtrer les signaux valides
  • Une durée de conservation fixe ne peut pas s'adapter à des conditions spécifiques
  • Aucun arrêt ne suit les tendances

Considérez les points suivants:

  • Déterminer dynamiquement la période ouverte avec plus de paramètres
  • Optimiser le seuil de rupture
  • Ajuster le temps de détention en fonction de la volatilité
  • Ajouter des procédures d'arrêt de trail

Directions d'amélioration

  • Incorporer davantage d'indicateurs pour améliorer la qualité du signal
  • Entrez des transactions dans des délais plus courts pour plus de fréquence
  • Optimiser les paramètres tels que la période d'ouverture, le seuil de rupture, les arrêts, etc. basés sur les backtests
  • Considérez les arrêts de trailing, les réentrées, etc. pour augmenter les bénéfices
  • Test de retour sur différents produits pour trouver le meilleur ajustement

Résumé

La stratégie d'ouverture suit la tendance en capturant de fortes ruptures directionnelles après l'ouverture. Par rapport aux entrées aléatoires, elle offre de meilleures caractéristiques de risque-rendement. La clé est le réglage correct des paramètres, la sélection des instruments et l'équilibrage de la fréquence et de la rentabilité.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-10-22 00:00:00
period: 10m
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/
// © Marcns_

//@version=5
// a script that highlights open drives around cash market opens throughout the day
// this indicator identifies the following cash open, open drives 0700 - 0715 / 0800 - 0815 / 1300 - 1315 / 1430 - 1445 
// an open drive is when a cash market opens and price runs either up or down away from the opening price, often this will be the high or the low the remainer of the session or day
// and often identify a trend session
strategy("Open Drive", commission_type =  strategy.commission.cash_per_contract, commission_value = 3.8 )

// open drive filter times - all times GMT
eu_sev = time(timeframe.period, "0700-0715", "GB")
eu_eig = time(timeframe.period, "0800-0815", "GB")
us_one = time(timeframe.period, "1300-1315", "GB")
us_two = time(timeframe.period, "1430-1445", "GB")


// identify bar that opens at low and closes at high + vice versa 
// bar needs to open at one extreme and close at another 
TrndExThreshold_Open = 0.15
TrndExThreshold_Close = 0.15

// add a bar range expansion filter - range of bar correlates to volume, high volume = wider range. This script will be able to filter for a break of a 5 bar range +100% or -100%

fbhi = ta.highest(5)
fblo = ta.lowest(5)

fbr = (fbhi - fblo)

RangeEx_up = 0.0

if high >= (fbhi[1] + fbr[1])
    RangeEx_up := 1.0
else
    na

// range ex down

RangeEx_do = 0.0

if low <= (fblo[1] - fbr[1]) 
    RangeEx_do := 1.0
else
    na


//#1 open within 5% of low

OpenAtLow = 0.0 

if (close > open) and (open-low) / (high-low) < TrndExThreshold_Open
    OpenAtLow := 1.0
else 
    na 

//#2 close within 5% of high
    
CloseAtHigh = 0.0

if (close > open) and (high-close) / (high-low) < TrndExThreshold_Close
    CloseAtHigh := 1.0
else
    na 

OD_Up = 0.0

if (OpenAtLow + CloseAtHigh + RangeEx_up == 3.0) and ( eu_sev or eu_eig or us_one or us_two)
    OD_Up := 1
else
    na

plot(OD_Up, title = "OD_up")



OpenAtHigh = 0.0 

if (close < open) and (high-open) / (high-low) < TrndExThreshold_Open
    OpenAtHigh := 1.0
else 
    na 

//#2 close within 5% of high
    
CloseAtLow = 0.0

if (close < open) and (close-low) / (high-low) < TrndExThreshold_Close
    CloseAtLow := 1.0
else
    na 

OD_Down = 0.0

if (OpenAtHigh + CloseAtLow + RangeEx_do == 3.0) and ( eu_sev or eu_eig or us_one or us_two)
    OD_Down := -1
else
    na

plot(OD_Down, title = "OD_down", color = color.red)


//3sma

ma = ta.sma(close,3)

// one time framing - highlight bars the make a series of lower highs or higher lows to identify trend 
// one time frame up 
otf_u = 0.0

if close > ma and close[1] > ma[1]
    otf_u := 1
else
    na
// one time frame down 
otf_d = 0.0

if close < ma and close[1] < ma[1]
    otf_d := 1
else
    na


//bgcolor(otf_u ? color.rgb(76, 175, 79, 70) : na)
//bgcolor(otf_d ? color.rgb(255, 82, 82, 66) : na)

// record high and low of entry bar into variable for absolute stop
// buy stop
bs = 0.0

if OD_Up
    bs := low[1]
else
    na

// sell stop
ss = 0.0

if OD_Down
    ss := high[1]
else
    na




// strategy entry and exits 
// long
if OD_Up
    strategy.entry("el", strategy.long, 2)
if ta.barssince(OD_Up)> 3 
    strategy.exit(id = "ex" , from_entry = "el", limit = close)

// short 
if OD_Down
    strategy.entry("es", strategy.short, 2)
if ta.barssince(OD_Down)> 3
    strategy.exit(id = "ex" , from_entry = "es", limit = close)



Plus de