Grenzüberschreitende kurzfristige Strategie zur Umkehrung des Durchbruchs

Schriftsteller:ChaoZhang, Datum: 2024-01-30 15:30:19
Tags:

img

In diesem Artikel wird eine kurzfristige Umkehrhandelsstrategie auf der Grundlage des 5EMA-Indikators vorgestellt.

Strategieübersicht

Dies ist eine kurzfristige quantitative Strategie, die hauptsächlich für den Hochfrequenzhandel verwendet wird. Die Strategie beurteilt gleichzeitig bullische und bärische Signale und kann in beide Richtungen gehandelt werden. Handelssignale werden erzeugt, wenn die Preise den 5EMA-Indikator durchbrechen und Long- oder Short-Positionen entsprechend der Richtung des Durchbruchs eingegeben werden.

Der Vorteil der Strategie besteht darin, kurzfristige Preisumkehrchancen zu erfassen und schnell in den Markt einzusteigen. Das Hauptrisiko kommt von Verlusten durch falsche Ausbrüche. Das Risiko kann durch Optimierung der Parameter reduziert werden.

Strategieprinzip

  1. Verwendung des 5-Perioden-EMA-Indikators zur Bestimmung der kurzfristigen Kursentwicklung

  2. Beurteilen Sie, ob der Preis den EMA-Indikator durchbricht

  3. Wenn der Preis die EMA von oben nach unten durchbricht, wird ein Verkaufssignal generiert.

  4. Wenn der Preis den EMA von unten nach oben durchbricht, wird ein Kaufsignal generiert.

  5. Stop-Loss- und Take-Profit-Einstellungen zur Begrenzung einzelner Verluste

Da der EMA-Indikator kurzfristige Trends effektiv bestimmen kann, kann er schnell Handelschancen erfassen, wenn die Preise signifikante Umkehrungen zeigen. Der Parameter 5EMA ist relativ flexibel und reagiert schnell auf den Markt, was ihn für den Hochfrequenzhandel geeignet macht.

Vorteile der Strategie

  • Schnelle Reaktion, geeignet für die hochfrequente Erfassung von kurzfristigen Handelsmöglichkeiten
  • Zwei-Wege-Handel, kann lang und kurz zugleich sein
  • Vermögenswerte, für die die Risikopositionen gemäß Artikel 429 Absatz 1 der CRR gelten.
  • Einfache Parameter-Einstellungen, einfache Optimierung von Strategien

Risiken und Lösungen von Strategien

  • Die Risikopositionen sind die Risikopositionen, für die die Risikopositionen gemäß Artikel 429 Absatz 1 Buchstabe c der CRR gelten.
    • Optimierung der EMA-Zyklusparameter zur Gewährleistung der Indikatorstabilität
  • Übermäßige Handelsfrequenz kann leicht Höchststände verfolgen und Tiefstände töten
    • Höchstzahl der Geschäfte pro Tag

Optimierungsrichtung der Strategien

  • Optimierung der EMA-Indikatorparameter zur Suche nach dem besten Zyklusportfolio
  • Filter erhöhen, um die Wahrscheinlichkeit eines falschen Ausbruchs zu verringern
  • Höchstzahl der Geschäfte pro Tag
  • Kombination anderer Indikatoren zur Bestimmung der Trendrichtung

Zusammenfassung

Im Allgemeinen ist dies eine sehr praktische kurzfristige Breakout-Strategie. Die Verwendung von EMA-Indikatoren zur Bestimmung von Preisumkehrungen ist sehr einfach und effektiv und ein wichtiges Werkzeug für den quantitativen Handel. Durch Parameteroptimierung und Risikokontrolleinstellungen kann die Gewinnrate von Strategien erheblich verbessert werden, was sehr empfohlen wird.


/*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

Mehr