Chiến lược này sử dụng các kỹ thuật chéo trung bình động đơn giản và hai lợi nhuận để kiểm soát rủi ro và tăng lợi nhuận. Nó phù hợp với giao dịch trung hạn và nắm bắt cơ hội trong những thay đổi xu hướng.
Chiến lược này dựa trên giao thoa EMA và WMA để xác định xu hướng thị trường.
Khi vào, hai mức lấy lợi nhuận được thiết lập. Lợi nhuận đầu tiên được cố định ở mức giá nhập + 20 pips, và lợi nhuận thứ hai được cố định ở mức giá nhập + 40 pips. Trong khi đó, lệnh dừng lỗ được đặt ở mức giá nhập - 20 pips.
Khi giá đạt mức lợi nhuận đầu tiên, nó sẽ đóng một nửa vị trí.
Có ba kết quả có thể cho mỗi giao dịch:
Giá đạt điểm dừng lỗ, mất 2% ngay lập tức.
Giá đếm trước lấy lợi nhuận trước, đóng nửa vị trí khóa 1% lợi nhuận, sau đó tiếp tục chạy cho đến khi dừng lại, kết thúc với break even.
Sau khi đạt được lợi nhuận đầu tiên, giá tiếp tục chạy và đạt được lợi nhuận thứ hai, kết thúc với 1% + 2% = 3% tổng lợi nhuận.
Lợi thế lớn nhất của chiến lược lấy lợi nhuận kép này là nó kiểm soát rủi ro và tránh tổn thất đơn lớn. Stop loss giới hạn mức lỗ tối đa trong 2% khi thị trường di chuyển ngược lại. Hai lợi nhuận lấy lợi nhuận cho phép lợi nhuận lớn hơn khi xu hướng đi theo mong đợi.
So với chiến lược lấy lợi nhuận đơn / dừng lỗ, chiến lược này có ba kết quả - mất mát, thắng hoặc phá vỡ, làm giảm xác suất dừng lỗ. Ngay cả khi dừng lại, lỗ tối đa được giới hạn ở mức 2%. So với các chiến lược truyền thống, cơ chế lấy lợi nhuận kép làm giảm đáng kể DD và cải thiện tỷ lệ thắng.
Một lợi thế khác là sự đơn giản của nó. EMA và WMA là các chỉ số nổi tiếng dễ hiểu. Lập luận lấy lợi nhuận / dừng lỗ là đơn giản để theo dõi.
Mặc dù có những lợi thế, cũng có những rủi ro cần phải nhận thức được cho chiến lược này.
Thứ nhất, như các chỉ số trung bình động, EMA và WMA có khả năng tương đối yếu trong việc xác định thị trường dao động.
Thứ hai, các mức thu lợi nhuận / dừng lỗ cố định có thể không thích nghi với biến động thị trường.
Cuối cùng, chiến lược không thể đáp ứng các sự kiện bất ngờ, với nguy cơ bị mắc kẹt. Các sự kiện tin tức lớn có thể tạo ra khoảng cách giá lớn trực tiếp vi phạm mức lợi nhuận / lỗ, gây ra tổn thất lớn.
Có một số khía cạnh để tối ưu hóa thêm chiến lược:
Cải thiện tín hiệu nhập cảnh. Kiểm tra các chỉ số xu hướng hoặc xu hướng tốt hơn so với EMA và WMA để tạo ra các tín hiệu chất lượng cao hơn.
Sử dụng các phương pháp như ATR, trailing stop loss vv để làm cho mức lợi nhuận / lỗ thích nghi với thị trường.
Thêm bộ lọc. Yêu cầu xác nhận khối lượng hoặc chỉ số thứ cấp trước khi vượt qua để tránh bẫy. Cũng xem xét liệu có nên giao dịch xung quanh các sự kiện lớn hay không.
Tối ưu hóa kích thước vị trí, điều chỉnh kích thước vị trí theo quy tắc quản lý vốn.
Tóm lại, đây là một chiến lược theo xu hướng đơn giản và thực tế. Nó sử dụng EMA và WMA chéo cho các mục nhập, và lợi nhuận hai lần để kiểm soát rủi ro. So với các chiến lược truyền thống, nó có tỷ lệ thắng cao hơn và rủi ro thấp hơn. Tất nhiên, các giới hạn của các chỉ số và cài đặt lợi nhuận / lỗ nên được xem xét. Tăng cường thêm có thể làm cho chiến lược mạnh mẽ hơn.
/*backtest start: 2023-11-06 00:00:00 end: 2023-11-13 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("FS ATR & PS (MA)", overlay=true) // Strategy Buy = input(true) Sell = input(true) // Time Period start_year = input(title='Start year' ,defval=2019) start_month = input(title='Start month' ,defval=1) start_day = input(title='Start day' ,defval=1) start_hour = input(title='Start hour ' ,defval=0) start_minute = input(title='Start minute' ,defval=0) end_time = input(title='set end time?',defval=false) end_year = input(title='end year' ,defval=2019) end_month = input(title='end month' ,defval=12) end_day = input(title='end day' ,defval=31) end_hour = input(title='end hour' ,defval=23) end_minute = input(title='end minute' ,defval=59) // MA ema_period = input(title='EMA period',defval=10) wma_period = input(title='WMA period',defval=20) ema = ema(close,ema_period) wma = wma(close,wma_period) // Entry Condition longCondition = crossover(ema,wma) and Buy and nz(strategy.position_size) == 0 and time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true) shortCondition = crossunder(ema,wma) and Sell and nz(strategy.position_size) == 0 and time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true) // Exit Condition a = input(20)*10 b = input(40)*10 c = a*syminfo.mintick d = b*syminfo.mintick long_stop_level = float(na) long_profit_level1 = float(na) long_profit_level2 = float(na) long_even_level = float(na) short_stop_level = float(na) short_profit_level1 = float(na) short_profit_level2 = float(na) short_even_level = float(na) long_stop_level := longCondition ? close - c : long_stop_level [1] long_profit_level1 := longCondition ? close + c : long_profit_level1 [1] long_profit_level2 := longCondition ? close + d : long_profit_level2 [1] long_even_level := longCondition ? close + 0 : long_even_level [1] short_stop_level := shortCondition ? close + c : short_stop_level [1] short_profit_level1 := shortCondition ? close - c : short_profit_level1 [1] short_profit_level2 := shortCondition ? close - d : short_profit_level2 [1] short_even_level := shortCondition ? close + 0 : short_even_level [1] // Position Sizing Risk = input(defval=10, title="Risk per trade%", step=1, minval=0, maxval=100)/100 size = 1 // Strategy if longCondition strategy.entry("Buy" , strategy.long, qty=size) strategy.exit ("Exit1", stop=long_stop_level, limit=long_profit_level1, qty=size/2) strategy.exit ("Exit2", stop=long_stop_level, limit=long_profit_level2) if shortCondition strategy.entry("Sell" , strategy.short, qty=size) strategy.exit ("Exit3", stop=short_stop_level, limit=short_profit_level1, qty=size/2) strategy.exit ("Exit4", stop=short_stop_level, limit=short_profit_level2) // Plot plot(strategy.position_size <= 0 ? na : long_stop_level , color=#dc143c, style=plot.style_linebr, linewidth=1) plot(strategy.position_size <= 0 ? na : long_profit_level1 , color=#00ced1, style=plot.style_linebr, linewidth=1) plot(strategy.position_size <= 0 ? na : long_profit_level2 , color=#00ced1, style=plot.style_linebr, linewidth=1) plot(strategy.position_size <= 0 ? na : long_even_level , color=#ffffff, style=plot.style_linebr, linewidth=1) plot(strategy.position_size >= 0 ? na : short_stop_level , color=#dc143c, style=plot.style_linebr, linewidth=1) plot(strategy.position_size >= 0 ? na : short_profit_level1, color=#00ced1, style=plot.style_linebr, linewidth=1) plot(strategy.position_size >= 0 ? na : short_profit_level2, color=#00ced1, style=plot.style_linebr, linewidth=1) plot(strategy.position_size >= 0 ? na : short_even_level , color=#ffffff, style=plot.style_linebr, linewidth=1) plot(ema,color=#00ced1) plot(wma,color=#dc143c)