Stratégie de croisement à court terme avec inversion de la percée 5EMA


Date de création: 2024-01-30 15:30:19 Dernière modification: 2024-01-30 15:30:19
Copier: 0 Nombre de clics: 677
1
Suivre
1617
Abonnés

Stratégie de croisement à court terme avec inversion de la percée 5EMA

Cet article présente une stratégie de revers de rupture basée sur l’indicateur 5EMA. Cette stratégie utilise principalement l’indicateur 5EMA pour déterminer la tendance des prix et effectuer un revers lorsque les prix franchissent l’EMA.

Aperçu de la stratégie

La stratégie est une stratégie de quantification de courte ligne, principalement utilisée pour le trading à haute fréquence. La stratégie juge à la fois les signaux d’excédent et d’excédent, permettant une transaction bidirectionnelle. Elle génère un signal de transaction lorsque le prix franchit l’indicateur 5EMA, entrant dans une position d’excédent ou d’excédent selon la direction de la rupture.

L’avantage de la stratégie est de saisir les occasions de revers de prix de la ligne courte et d’entrer rapidement sur le terrain. Le risque provient principalement des pertes causées par les fausses percées. Le risque de perte peut être réduit par des paramètres d’optimisation.

Principe de stratégie

  1. Utilisation de l’indicateur EMA à 5 cycles pour déterminer la tendance à court terme des prix

  2. Déterminez si le prix a dépassé l’EMA

  3. Les prix ont tendance à se déplacer vers le haut et vers le bas lorsque le prix franchit l’EMA, générant un signal de vente.

  4. Un signal d’achat est généré lorsque le prix franchit l’EMA de bas en haut

  5. Définir des points d’arrêt et de rupture pour limiter les pertes individuelles

L’indicateur EMA étant capable de juger efficacement les tendances à court terme, il est capable de saisir rapidement les opportunités de négociation en cas de revers significatif des prix. Les paramètres de l’EMA 5 sont plus flexibles, réagissent rapidement au marché et conviennent aux transactions à haute fréquence.

Avantages stratégiques

  • Une réaction rapide, adaptée à la fréquence élevée, pour saisir les opportunités de transactions en ligne courte.
  • Les transactions bidirectionnelles permettent d’effectuer plus de couvertures en même temps.
  • Le stop-loss est raisonnable et les pertes individuelles sont limitées.
  • Une configuration de paramètres simple et une stratégie facile à optimiser

Risques stratégiques et solutions

  • Le risque de fausse percée entraîne des pertes inutiles
    • Optimiser les paramètres de cycle EMA pour assurer la stabilité de l’indicateur
  • La fréquence des transactions est trop élevée pour être suivie par des hauts et des bas.
    • Limiter le nombre maximum de transactions par jour

Orientation de l’optimisation de la stratégie

  • Optimiser les paramètres de l’indicateur EMA pour trouver la meilleure combinaison de cycles
  • Augmenter le filtre pour réduire la probabilité de fausse percée
  • Limiter le nombre maximum de transactions par jour
  • Indicateur de tendance combiné à d’autres

Résumer

Cette stratégie est une stratégie de rupture de courte ligne très pratique dans l’ensemble. L’utilisation de l’indicateur EMA pour déterminer le renversement des prix est très simple et efficace et constitue un outil important pour la quantification des transactions.

Code source de la stratégie
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © samscripter

//@version=5
strategy("5 ema strategy",overlay = true,process_orders_on_close = true)

// Choose trade direction

t_dir = input.string("Both", title="Trade Direction",options=["Long", "Short", "Both"],group = 'Trade Direction Set')

long_side  = t_dir == "Long" or t_dir == "Both"
short_side = t_dir == "Short" or t_dir == "Both"

// number of trade
mx_num =input.int(4,title = 'number Of trade',group = 'Maximum Number Of Trade')
var hi =0.0
var lo =0.0

var group_ma1="Ema Set"

//Ema 1
on_ma=input.bool(true,"Enable EMa 1 Plot On/Off"  ,group =group_ma1)
ma_len= input.int(5, minval=1, title="Ema Length",group =group_ma1)
ma_src = input.source(close, title="Ema Source"   ,group = group_ma1)
ma_out = ta.ema(ma_src, ma_len)

// buy and sell ema condition  
plot(on_ma?ma_out:na, color=color.white, title="MA")


if close>ma_out and open>ma_out and low>ma_out and high>ma_out
    lo:=low

if close<ma_out and open<ma_out and low<ma_out and high<ma_out
    hi:=high
    
// condition when price is crossunder lo take sell and when price crossoing hi take buy 
var buyp_sl =float(na)
var sellp_sl =float(na)

//count number trade since day stra
var count_buysell=0

if  close>hi[1] 
    if strategy.position_size==0 and count_buysell<mx_num and long_side
        strategy.entry('El',strategy.long,comment = 'Long')
        count_buysell:=count_buysell+1
        buyp_sl:=math.min(low,low[1])
    hi:=na
if  close<lo[1]
    if strategy.position_size==0 and count_buysell<mx_num and short_side
        strategy.entry('Es',strategy.short,comment = 'short')
        count_buysell:=count_buysell+1
        sellp_sl:=math.max(high,high[1])
    lo:=na

//take profit multiply 

tpnew = input.float(title="take profit", step=0.1, defval=1.5, group='Tp/SL')


//stop loss previous candle high and previous candle low
buy_sl = ta.valuewhen(strategy.position_size != 0 and strategy.position_size[1] == 0,buyp_sl , 0)
sell_sl= ta.valuewhen(strategy.position_size != 0 and strategy.position_size[1] == 0,sellp_sl, 0)

//take profit
takeProfit_buy = strategy.position_avg_price - ((buy_sl - strategy.position_avg_price) *tpnew)
takeProfit_sell = strategy.position_avg_price - ((sell_sl - strategy.position_avg_price) *tpnew)


//  Submit exit orders
if strategy.position_size > 0
    strategy.exit(id='XL', stop=buy_sl,limit=takeProfit_buy,comment_loss = 'Long Sl',comment_profit = 'Long Tp')

if strategy.position_size < 0
    strategy.exit(id='XS', stop=sell_sl,limit=takeProfit_sell,comment_loss = 'Short Sl',comment_profit = 'Short Tp')
    
//plot data
plot(series=strategy.position_size < 0 ?sell_sl : na, style=plot.style_circles, color=color.red, linewidth=2, title="St red Stop")
plot(series=strategy.position_size > 0 ?buy_sl  : na, style=plot.style_circles, color=color.green, linewidth=2, title="St green Stop")


// plot take profit
plot(series=strategy.position_size < 0 ? takeProfit_sell : na, style=plot.style_circles, color=color.orange, linewidth=2, title="take profit sell")
plot(series=strategy.position_size > 0 ? takeProfit_buy: na, style=plot.style_circles, color=color.blue, linewidth=2, title="take profit buy")

if ta.change(time('D'))
    count_buysell:=0