Chiến lược đảo ngược đột phá ngắn hạn xuyên biên giới 5EMA

Tác giả:ChaoZhang, Ngày: 2024-01-30 15:30:19
Tags:

img

Bài viết này sẽ giới thiệu một chiến lược giao dịch đảo ngược ngắn hạn dựa trên chỉ số 5EMA. Chiến lược chủ yếu sử dụng chỉ số 5EMA để đánh giá xu hướng giá và đảo ngược giao dịch khi giá vượt qua EMA.

Tổng quan chiến lược

Đây là một chiến lược định lượng ngắn hạn, chủ yếu được sử dụng cho giao dịch tần số cao. Chiến lược sẽ đồng thời đánh giá các tín hiệu tăng và giảm và có thể giao dịch theo cả hai hướng.

Lợi thế của chiến lược này là nắm bắt các cơ hội đảo ngược giá ngắn hạn và nhanh chóng vào thị trường. Rủi ro chính đến từ tổn thất do phá vỡ sai. Rủi ro có thể được giảm bằng cách tối ưu hóa các tham số.

Nguyên tắc chiến lược

  1. Sử dụng chỉ số EMA 5 giai đoạn để xác định xu hướng giá ngắn hạn

  2. Đánh giá liệu giá có vượt qua chỉ số EMA

  3. Khi giá vượt qua đường EMA từ trên xuống dưới, một tín hiệu bán được tạo ra.

  4. Khi giá vượt qua đường EMA từ dưới lên trên, một tín hiệu mua được tạo ra.

  5. Thiết lập dừng lỗ và lấy lợi nhuận để hạn chế lỗ duy nhất

Vì chỉ số EMA có thể xác định hiệu quả xu hướng ngắn hạn, nó có thể nhanh chóng nắm bắt các cơ hội giao dịch khi giá hiển thị sự đảo ngược đáng kể.

Ưu điểm của Chiến lược

  • Phản ứng nhanh, phù hợp để thu thập các cơ hội giao dịch ngắn hạn với tần số cao
  • Giao dịch hai chiều, có thể dài và ngắn cùng một lúc
  • Đặt mục "Thiết lập lỗ dừng hợp lý" và "Tìm lợi nhuận", hạn chế lỗ đơn
  • Cài đặt tham số đơn giản, dễ dàng tối ưu hóa các chiến lược

Rủi ro và giải pháp của các chiến lược

  • Mức lỗ không cần thiết do rủi ro phá vỡ sai
    • Tối ưu hóa các thông số chu kỳ EMA để đảm bảo sự ổn định của chỉ số
  • Tần suất giao dịch quá mức có thể dễ dàng theo đuổi mức cao và giết chết mức thấp
    • Giới hạn số lượng giao dịch tối đa mỗi ngày

Định hướng tối ưu hóa các chiến lược

  • Tối ưu hóa các thông số chỉ số EMA để tìm danh mục đầu tư chu kỳ tốt nhất
  • Tăng bộ lọc để giảm xác suất đột phá sai
  • Giới hạn số lượng giao dịch tối đa mỗi ngày
  • Kết hợp các chỉ số khác để xác định hướng xu hướng

Tóm lại

Nói chung, đây là một chiến lược đột phá ngắn hạn rất thực tế. Sử dụng chỉ số EMA để xác định sự đảo ngược giá rất đơn giản và hiệu quả, và là một công cụ quan trọng cho giao dịch định lượng. Thông qua tối ưu hóa tham số và cài đặt kiểm soát rủi ro, tỷ lệ thắng của các chiến lược có thể được cải thiện đáng kể, điều này được khuyến cáo cao.


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

Thêm nữa