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.
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.
Menggunakan penunjuk EMA 5 tempoh untuk menentukan trend harga jangka pendek
Menghakimi sama ada harga memecahkan penunjuk EMA
Apabila harga memecahkan EMA dari atas ke bawah, isyarat jual dihasilkan.
Apabila harga memecahkan EMA dari bawah ke atas, isyarat beli dihasilkan.
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.
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