Suivez la stratégie de l'ours

Auteur:ChaoZhang est là., Date: le 26 février 2024 14:12:09
Les étiquettes:

img

Résumé

La stratégie Follow The Bear (FTB) est une stratégie de trading forex conçue pour capturer un schéma récurrent de l'action des prix de l'EUR/USD pendant l'ouverture du marché européen. La stratégie vise à tirer parti des taureaux de l'euro piégés qui sont obligés de libérer leurs positions longues à mesure que le prix commence à se rétracter. Plus précisément, elle surveille les bougies d'inversion d'étoile filante ou de marteau sur le graphique d'une heure de l'EUR/USD. Une fois détectée et confirmée avec des filtres supplémentaires tels qu'un RSI suracheté, elle entrera agressivement dans des positions courtes avec un arrêt serré au-dessus de la bougie d'inversion et une cible de profit basée sur un ratio risque/rendement raisonnable.

La logique de la stratégie

La prémisse de base de la stratégie FTB est basée sur l'hypothèse que les bulls en euros et les algorithmes qui poussent le prix de l'EUR/USD vers le haut seront piégés lorsque la tendance haussière s'arrêtera ou s'inversera peu de temps après l'ouverture du marché européen/london.

La stratégie vise à capitaliser sur cette théorie baissière en surveillant les modèles de bougies inversées pendant le fuseau horaire européen (par exemple 2h à 7h).

Lorsque de telles bougies se forment, elles signalent que les longs pris au piège sont confrontés à la liquidation.

  1. Indice de volatilité supérieur au niveau de surachat de 70
  2. La bougie précédente est fermée.
  3. La bougie actuelle a atteint un nouveau sommet récent

Après avoir passé tous les filtres, la stratégie entre dans des positions courtes sur la clôture de bougie avec un stop loss placé juste au-dessus du maximum et un objectif de profit calculé sur la base d'un ratio risque/rendement 1:1 (configurable).

Un détail clé est que la stratégie ne négocie que pendant la session européenne.

Analyse des avantages

En tant que stratégie simple d'inversion de la moyenne à court terme, l'approche FTB présente plusieurs points forts clés:

  1. Capture un modèle de comportement négociable avec un bon taux de gain
  2. Logic facile à comprendre et à optimiser
  3. Évite le bruit de jour en négociant la nuit
  4. Des règles de gestion des risques bien définies
  5. Connectivité transparente avec le trading automatique

Dans l'ensemble, en tant que stratégie de scalping nocturne à basse fréquence, la stabilité et la fiabilité du FTB sont assez attrayantes.

Analyse des risques

Bien que la stratégie présente des avantages, comme pour tout système de négociation, des risques existent, notamment:

  1. Différences et écarts plus importants au cours de la nuit
  2. La simplicité pourrait conduire à une optimisation excessive
  3. Faiblesse de la précision des modèles sur certains marchés
  4. La viabilité des données historiques est limitée
  5. Limites des tests antérieurs

Quelques moyens de lutter contre les risques:

  1. Ajustez le tampon stop-loss
  2. Ajouter des filtres et combiner des stratégies
  3. Optimiser la robustesse dans toutes les conditions du marché
  4. Utiliser une période de backtest plus longue
  5. Tests à terme approfondis avant la négociation en direct

Pistes d'optimisation

Compte tenu de la nature fondamentale de la stratégie et des risques qu'elle comporte, certains domaines à améliorer:

  1. Temps de fonctionnement confirmation des signaux à 5m ou 15m pour la robustesse
  2. Apprentissage automatique modèle de train pour les signaux
  3. Arrêt dynamique ajuster les arrêts en fonction de la volatilité
  4. Légalisation des risques optimiser le dimensionnement des positions pour une croissance plus régulière

Conclusion

La stratégie Follow the Bear fournit une approche simple de la vente à découvert à court terme en capitalisant sur les retracements alimentés par les taureaux de l'euro piégés.


/*backtest
start: 2024-02-18 00:00:00
end: 2024-02-25 00:00:00
period: 3h
basePeriod: 15m
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/
// © ZenAndTheArtOfTrading / PineScriptMastery
// FTB Strategy (PineConnector Version)
// Last Updated: 21st July, 2021
// @version=4
strategy("[2021] FTB Strategy", shorttitle="FTB", overlay=true)

// Risk Settings
var g_risk      = "Risk Settings"
pips            = input(title="Stop Pips", type=input.float, defval=2.0, group=g_risk, tooltip="How many pips above high to put stop loss")
rr              = input(title="Risk:Reward", type=input.float, defval=1.0, group=g_risk, tooltip="This determines the risk:reward profile of the setup")
// Filters
var g_filter    = "Filter Settings"
timezone        = input(title="Timezone", type=input.session, defval="0200-0700", group=g_filter, tooltip="Which timezone to search for FTB signals in")
days            = input(title="Days To Trade", defval="13457", group=g_filter, tooltip="Which days to trade this strategy on (Monday & Friday disabled by default)")
useRsiFilter    = input(title="RSI OB/OS?", type=input.bool, defval=true, group=g_filter, tooltip="If true then the RSI must be considered overbought before a signal is valid")
useCloseFilter  = input(title="Previous Bar Must Be Bullish?", type=input.bool, defval=false, group=g_filter, tooltip="If true then the previous bar must have closed bullish")
useHighFilter   = input(title="High Filter", type=input.bool, defval=false, group=g_filter, tooltip="If true then the signal bar must be the highest bar over X bars")
highLookback    = input(title="High Lookback", type=input.integer, defval=10, group=g_filter, tooltip="This is for setting the High Filter lookback distance")
fib             = input(title="Candle Close %", defval=0.5, group=g_filter, tooltip="For identifying shooting star candles (0.5 = must close <= 50% mark of candle size)")
rsiLen          = input(title="RSI Length", type=input.integer, defval=3, group=g_filter, tooltip="RSI length")
rsiOB           = input(title="RSI OB", type=input.float, defval=70.0, group=g_filter, tooltip="RSI overbought threshold")
// PineConnector Settings
var g_pc        = "PineConnector Settings"
pc_id           = input(title="License ID", defval="YOUR_ID", type=input.string, group=g_pc, tooltip="This is your PineConnector license ID")
pc_risk         = input(title="Risk Per Trade", defval=1, step=0.5, type=input.float, group=g_pc, tooltip="This is how much to risk per trade (% of balance or lots)")
pc_prefix       = input(title="MetaTrader Prefix", defval="", type=input.string, group=g_pc, tooltip="This is your broker's MetaTrader symbol prefix")
pc_suffix       = input(title="MetaTrader Suffix", defval="", type=input.string, group=g_pc, tooltip="This is your broker's MetaTrader symbol suffix")
pc_spread       = input(title="Spread", defval=0.5, type=input.float, group=g_pc, tooltip="Enter your average spread for this pair (used for offsetting limit order)")
pc_limit        = input(title="Use Limit Order?", defval=true, type=input.bool, group=g_pc, tooltip="If true a limit order will be used, if false a market order will be used")

// Generate PineConnector alert string
var symbol = pc_prefix + syminfo.ticker + pc_suffix
var limit = pc_limit ? "limit" : ""
pc_entry_alert(direction, sl, tp) =>
    price = pc_limit ? "price=" + tostring(pc_spread) + "," : ""
    pc_id + "," + direction + limit + "," + symbol + "," + price + "sl=" + tostring(sl) + ",tp=" + tostring(tp) + ",risk=" + tostring(pc_risk)

// Get RSI filter
rsiValue = rsi(close, rsiLen)
rsiFilter = not useRsiFilter or rsiValue >= rsiOB

// Check high & close filter
highFilter = not useHighFilter or high == highest(high, highLookback)
closeFilter = not useCloseFilter or close[1] > open[1]

// InSession() determines if a price bar falls inside the specified session
inSession(sess) => na(time(timeframe.period, sess + ":" + days)) == false

// Calculate 50% mark of candle size
bearFib = (high - low) * fib + low

// Check filters
filters = inSession(timezone) and closeFilter and high > high[1] and rsiFilter and highFilter and open != close

// Detect valid shooting star pinbar pattern
var takenTradeAlready = false
star = true

// Calculate stops & targets
shortStopPrice = high + (syminfo.mintick * pips * 10)
shortStopDistance = shortStopPrice - close
shortTargetPrice = close - (shortStopDistance * rr)

// Save stops & targets for the current trade
var tradeStopPrice = 0.0
var tradeTargetPrice = 0.0

// If we detect a valid shooting star, save our stops & targets, enter short and generate alert
if star and barstate.isconfirmed
    tradeStopPrice := shortStopPrice
    tradeTargetPrice := shortTargetPrice
    takenTradeAlready := true
    alertString = pc_entry_alert("sell", tradeStopPrice, tradeTargetPrice)
    alert(alertString, alert.freq_once_per_bar_close)
    strategy.entry(id="Short", long=strategy.short, when=strategy.position_size == 0, comment=alertString)

// If we have exited the FTB session then reset our takenTradeAlready flag for the next session
if not inSession(timezone) and inSession(timezone)[1]
    takenTradeAlready := false
    
// If price has exceeded target then cancel limit order if it's still active
if pc_limit and low <= tradeTargetPrice and strategy.position_size == 0
    alert(pc_id + ",cancelshort," + symbol)
    tradeTargetPrice := na

// Draw stops & targets
plot(star ? tradeStopPrice : na, color=color.red, style=plot.style_linebr, title="SL")
plot(star ? shortTargetPrice : na, color=color.green, style=plot.style_linebr, title="TP")
// Draw short signals
plotshape(star ? 1 : na, style=shape.triangledown, color=color.red)
// Change background color to highlight detection zone
bgcolor(color=inSession(timezone) ? color.new(color.red,80) : na, title="Session")

// Exit trade whenever our stop or target is hit
strategy.exit(id="Short Exit", from_entry="Short", limit=tradeTargetPrice, stop=tradeStopPrice, when=strategy.position_size != 0)

Plus de