Stratégie de day trading à terme avec croisement de moyennes mobiles doubles


Date de création: 2023-11-15 16:48:02 Dernière modification: 2023-11-15 16:48:02
Copier: 2 Nombre de clics: 683
1
Suivre
1617
Abonnés

Stratégie de day trading à terme avec croisement de moyennes mobiles doubles

Aperçu

La stratégie utilise le principe de la bihomogénéité croisée, combinée à l’indicateur ATR pour définir un stop loss, accompagnée d’un contrôle du temps de négociation, pour concevoir un ensemble de stratégies adaptées aux contrats à terme à jour. La stratégie est simple, claire, facile à maîtriser et adaptée aux débutants.

Principe de stratégie

La stratégie utilise le croisement de la ligne moyenne WMA de 5 cycles et de 20 cycles comme signal d’entrée. Lorsque la ligne moyenne WMA de 5 cycles franchit la ligne moyenne de 20 cycles du côté inférieur, faites plus; lorsque la ligne moyenne WMA de 5 cycles franchit la ligne moyenne de 20 cycles du côté supérieur, faites moins.

En outre, la stratégie utilise également l’indicateur ATR pour définir la position de stop-loss. L’indicateur ATR peut refléter dynamiquement l’ampleur des fluctuations du marché. La stratégie utilise la valeur de l’indicateur ATR multipliée par un multiple (par exemple 3 fois) pour déterminer la position de stop-loss, afin de contrôler les pertes individuelles.

Enfin, la stratégie consiste à ne déclencher le signal de négociation qu’à l’heure de négociation américaine (09h00-14h30 CST) afin d’éviter les transactions à l’ouverture et à la fermeture du marché, car ces deux périodes sont plus volatiles et plus sujettes à la formation de faux signaux.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. L’utilisation d’un croisement bi-homogène permet de capturer efficacement les points de basculement de la tendance et d’entrer en jeu à temps.

  2. Il est possible d’utiliser les grandes tendances pour filtrer certains signaux de trading bruyants et éviter les opérations de contre-courant.

  3. L’application de l’indicateur ATR modifie dynamiquement la position de l’arrêt de perte pour contrôler efficacement les pertes individuelles.

  4. Il est important de limiter les heures de négociation pour éviter les fluctuations importantes à l’ouverture et à la fermeture du marché.

  5. Les règles de la stratégie sont simples, claires, faciles à comprendre et à mettre en œuvre, adaptées aux débutants.

  6. Les paramètres personnalisables, tels que la période de la moyenne, le multiplicateur ATR, le temps de transaction, etc., permettent d’optimiser la stratégie.

Analyse des risques

La stratégie présente également les risques suivants:

  1. En cas de tremblement de terre, il peut y avoir plus de dégâts.

  2. Les passages à deux lignes équivalentes seront un peu retardés et risquent de manquer la brèche de la ligne courte.

  3. Une mauvaise définition des paramètres ATR peut entraîner un stop loss trop grand ou trop petit.

  4. Le gouvernement a décidé d’éliminer les médias sociaux et d’envoyer un message à la communauté internationale.

  5. Les variétés et les cycles de négociation inappropriés peuvent affecter l’efficacité de la stratégie.

  6. Les systèmes de négociation automatisés présentent un risque d’arbitrage.

  7. Les paramètres des différentes périodes de transaction doivent être ajustés.

Cette situation nécessite des améliorations par des méthodes telles que l’optimisation des paramètres, la combinaison d’indicateurs et des interventions humaines appropriées.

Direction d’optimisation

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

  1. Essayez différents systèmes homogènes, comme EMA, DMA, etc.

  2. Ajouter des filtres pour d’autres indicateurs techniques, tels que le MACD, le RSI, etc.

  3. Optimiser les paramètres ATR pour rendre le stop loss plus raisonnable.

  4. La recherche de points d’entrée efficaces combinée à des indicateurs de volume des transactions.

  5. Adaptez les paramètres en fonction des caractéristiques des différentes variétés.

  6. Il est important d’avoir une vision globale de la situation et d’éviter toute manipulation de marché.

  7. L’ajout d’un composant d’apprentissage automatique pour modéliser les données à l’aide de réseaux neuronaux.

  8. Il y a aussi des opportunités d’investissement dans le commerce de détail, comme la fusion de plusieurs cycles.

  9. Construire un portefeuille de stratégies pour améliorer la stabilité

Résumer

Cette stratégie est généralement simple et conviviale pour les débutants. Il y a beaucoup de place pour l’optimisation, mais il est possible d’introduire plus d’indicateurs techniques ou de méthodes d’apprentissage automatique pour l’améliorer. De plus, il est important d’ajuster les paramètres en fonction des caractéristiques des différentes variétés de transactions et de l’environnement du marché.

Code source de la stratégie
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
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/
// © james4392010

//@version=4

strategy(title="DayTradingFutures Cross-Strategy", overlay=true)




// === GENERAL INPUTS ===
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true)
//highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn



wmaFastSource   = input(defval = close, title = "Fast WMA Source")
wmaFastLength   = input(defval = 5, title = "Fast WMA Period")
wmaSlowSource   = input(defval = close, title = "Slow WMA Source")
wmaSlowLength   = input(defval = 20, title = "Slow WMA Period")
wmaDirectionSource  = input(defval = close, title = "Trend 50 Period Source")
wmaDirectionLength  = input(defval = 50, title = "Trend 50 Period")
timeinrange(res, sess) => time(res, sess) != 0



// === SERIES SETUP ===
/// a couple of ma's..
wmaFast = wma(close, 5)
wmaSlow = wma(close, 20)
wmaDirection = wma(close, 50)





// === PLOTTING ===
fast = plot(series=wmaFast, color=color.white, linewidth=2)
slow = plot(series=wmaSlow, color=color.yellow, linewidth=2)
direction = plot(series=wmaDirection, color=color.red, linewidth=2)


// === INPUT BACKTEST RANGE ===

//fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
//fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
//fromYear = input(defval = 2022, title = "From Year", minval = 2022)
 
// To Date Inputs
//toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
//toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
//toYear = input(defval = 2022, title = "To Year", minval = 2022)
//startDate = timestamp(fromYear, fromMonth, fromDay)
//finishDate = timestamp(toYear, toMonth, toDay)
//inDateRange= (time >= fromDay, fromMonth, fromYear and time <= toDay, toMonth, toYear) 



// === FUNCTION EXAMPLE ===
//inDateRange = (time >= fromDay, fromMonth, fromYear) and (time <= toDay, toMonth, toYear)


// === LOGIC ===

enterLong = crossover(wmaFast, wmaSlow) and close > wmaDirection and timeinrange(timeframe.period, "0900-1430")
enterShort = crossunder(wmaFast, wmaSlow) and close < wmaDirection and timeinrange(timeframe.period, "0900-1430")

//trend := nz(trend[1], trend)
//trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
//upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)

buySignal = enterLong 
//plotshape(enterLong ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green)
plotshape(enterLong and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white)
//dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)

sellSignal = enterShort
//plotshape(enterShort ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red)
plotshape(enterShort and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white)
//mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
//longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
//shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
//fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
//fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
alertcondition(buySignal, title="Buy", message="Buy!")
alertcondition(sellSignal, title="Sell", message="Sell!")
//changeCond = trend != trend[1]
//alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")



// Entry for strategy //

//tp=input(25,title="TakeProfit")
//sl=input(40,title="StopLoss")

strategy.entry("Long",1, when=buySignal)
//strategy.exit("Exit",profit=tp,loss=sl)
//strategy.exit("TakeProfit",profit=tp)
//strategy.exit("StopLoss",loss=sl)

strategy.entry("Short",1, when=sellSignal)
//strategy.exit("Exit",profit=tp,loss=sl)
//strategy.exit("TakeProfit",profit=tp)
//strategy.exit("StopLoss",loss=sl)
//strategy.exit("Exit", wmaFastwmaSlow)

//Buy and Sell Signals

//strategy.close_all(when =not timeinrange(timeframe.period, "1000-1430"))   


// === FILL ====

fill (fast, slow, color = wmaSlow > wmaDirection ? color.green : color.red)
//fill(when=enterLong, tp, color = color.new(color.green, 90), title = "Profit area")
//fill(when=enterLong, sl, color = color.new(color.red, 90), title = "Loss area")
//fill(when=enterShort, tp, color = color.new(color.green, 90), title = "Profit area")
//fill(when=enterShort, sl, color = color.new(color.red, 90), title = "Loss area")