Strategy 5EMA untuk Peralihan Penembusan Jangka Pendek Salib

Penulis:ChaoZhang, Tarikh: 2024-01-30 15:30:19
Tag:

img

Artikel ini akan memperkenalkan strategi perdagangan pembalikan jangka pendek berdasarkan penunjuk 5EMA. Strategi ini terutamanya menggunakan penunjuk 5EMA untuk menilai trend harga dan membalikkan perdagangan apabila harga memecahkan EMA.

Ringkasan Strategi

Ini adalah strategi kuantitatif jangka pendek, terutama digunakan untuk perdagangan frekuensi tinggi. Strategi ini akan menilai isyarat bullish dan bearish pada masa yang sama dan boleh berdagang dalam kedua-dua arah. Isyarat perdagangan dihasilkan apabila harga menembusi penunjuk 5EMA, dan kedudukan panjang atau pendek dimasukkan mengikut arah terobosan.

Kelebihan strategi ini adalah untuk menangkap peluang pembalikan harga jangka pendek dan masuk ke pasaran dengan cepat. Risiko utama berasal dari kerugian yang disebabkan oleh pecah palsu. Risiko dapat dikurangkan dengan mengoptimumkan parameter.

Prinsip Strategi

  1. Menggunakan penunjuk EMA 5 tempoh untuk menentukan trend harga jangka pendek

  2. Menghakimi sama ada harga memecahkan penunjuk EMA

  3. Apabila harga memecahkan EMA dari atas ke bawah, isyarat jual dihasilkan.

  4. Apabila harga memecahkan EMA dari bawah ke atas, isyarat beli dihasilkan.

  5. Tetapkan stop loss dan mengambil keuntungan untuk mengehadkan kerugian tunggal

Oleh kerana penunjuk EMA dapat menentukan trend jangka pendek dengan berkesan, ia dapat dengan cepat menangkap peluang perdagangan apabila harga menunjukkan pembalikan yang signifikan. Parameter 5EMA agak fleksibel dan bertindak balas dengan cepat kepada pasaran, menjadikannya sesuai untuk perdagangan frekuensi tinggi.

Kelebihan Strategi

  • Tanggapan cepat, sesuai untuk menangkap peluang perdagangan jangka pendek dengan kekerapan tinggi
  • Perdagangan dua hala, boleh panjang dan pendek pada masa yang sama
  • Seting stop loss dan take profit yang munasabah, loss tunggal terhad
  • Tetapan parameter mudah, mudah untuk mengoptimumkan strategi

Risiko dan Penyelesaian Strategi

  • Rugi yang tidak perlu disebabkan oleh risiko keluar palsu
    • Mengoptimumkan parameter kitaran EMA untuk memastikan kestabilan penunjuk
  • Frekuensi perdagangan yang berlebihan boleh dengan mudah mengejar tinggi dan membunuh rendah
    • Had jumlah dagangan maksimum sehari

Pengoptimuman Arah Strategi

  • Mengoptimumkan parameter penunjuk EMA untuk mencari portfolio kitaran terbaik
  • Meningkatkan penapis untuk mengurangkan kebarangkalian pecah palsu
  • Had jumlah dagangan maksimum sehari
  • Gabungkan penunjuk lain untuk menentukan arah trend

Ringkasan

Secara umum, ini adalah strategi pecah jangka pendek yang sangat praktikal. Menggunakan penunjuk EMA untuk menentukan pembalikan harga adalah sangat mudah dan berkesan, dan alat penting untuk perdagangan kuantitatif. Melalui pengoptimuman parameter dan tetapan kawalan risiko, kadar kemenangan strategi dapat ditingkatkan dengan besar, yang sangat disyorkan.


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

Lebih lanjut