
Chiến lược này sử dụng các kỹ thuật chéo trung bình di chuyển đơn giản và hai điểm dừng để kiểm soát rủi ro và tăng khả năng kiếm lợi nhuận. Chiến lược này phù hợp với giao dịch ngắn hạn và trung bình, có thể nắm bắt cơ hội khi xu hướng thay đổi.
Chiến lược này dựa trên sự giao thoa của EMA và WMA để đánh giá xu hướng thị trường. Khi EMA trên đi qua WMA, làm nhiều hơn; khi EMA dưới đi qua WMA, làm trống.
Mỗi lần mở vị trí, chiến lược sẽ thiết lập hai mức dừng. Mức dừng đầu tiên được cố định là giá mở vị trí + 20 điểm, mức dừng thứ hai được cố định là giá mở vị trí + 40 điểm. Đồng thời thiết lập một mức dừng lỗ, được cố định là giá mở vị trí - 20 điểm.
Khi giá chạm mức dừng đầu tiên, bán một nửa vị trí. Các vị trí còn lại tiếp tục giữ, theo đuổi mức dừng thứ hai hoặc bị dừng.
Như vậy, mỗi giao dịch có ba kết quả:
Giá kích hoạt dừng lỗ, mất mát trực tiếp 2%.
Giá sẽ kích hoạt dừng đầu tiên, bằng một nửa lệnh, khóa lợi nhuận 1%, sau đó tiếp tục hoạt động cho đến khi bị dừng lại, cuối cùng cân bằng, không có lợi nhuận.
Giá tiếp tục hoạt động sau khi kích hoạt điểm dừng đầu tiên, sau đó kích hoạt điểm dừng thứ hai, và cuối cùng có lợi nhuận 1% + 2% = 3%.
Ưu điểm lớn nhất của chiến lược dừng hai điểm là bạn có thể kiểm soát rủi ro và tránh thua lỗ lớn một lần. Khi thị trường không thuận lợi, dừng lỗ có thể kiểm soát lỗ trong vòng 2%. Khi thị trường sáng, hai mức dừng có thể thu được nhiều tiền hơn.
Chiến lược này có ba kết quả so với chiến lược dừng lỗ đơn: thua lỗ, lợi nhuận và không thua lỗ, làm giảm xác suất dừng lỗ. Ngay cả khi dừng lỗ, tổn thất tối đa cũng được kiểm soát ở mức 2%. So với chiến lược dừng lỗ truyền thống, chiến lược dừng lỗ đôi này có thể làm giảm đáng kể DD và tăng tỷ lệ thắng.
Một lợi thế khác là hoạt động đơn giản. EMA và WMA là các chỉ số được biết đến rộng rãi và dễ hiểu.
Mặc dù chiến lược này có một số lợi thế, nhưng cũng có một số rủi ro cần lưu ý.
Đầu tiên, EMA và WMA là các chỉ số đường trung bình, có khả năng nhận biết yếu về tình trạng biến động. Khi xu hướng không rõ ràng, có thể tạo ra nhiều tín hiệu sai, dẫn đến giao dịch quá thường xuyên.
Thứ hai, điểm dừng cố định có thể không phù hợp với sự biến động của thị trường. Khi biến động lớn, điểm dừng có thể bị phá vỡ và không có tác dụng bảo vệ.
Cuối cùng, chiến lược này không thể đáp ứng các sự kiện bất ngờ và có nguy cơ bị mạo hiểm. Khi một sự kiện tin tức quan trọng xảy ra, thị trường có thể nhảy vọt mạnh, trực tiếp đâm qua đường dừng lỗ, gây ra tổn thất lớn.
Chiến lược này có thể được tối ưu hóa thêm bằng cách:
Cải thiện tín hiệu nhập. Bạn có thể thử một chỉ số đường trung bình hoặc chỉ số xu hướng tốt hơn EMA và WMA để cải thiện chất lượng tín hiệu.
Động thái điều chỉnh điểm dừng lỗ. Bạn có thể điều chỉnh điểm dừng lỗ theo ATR, di động, v.v.
Thêm điều kiện lọc. Bạn có thể thêm xác nhận số lượng giao dịch hoặc chỉ số phụ trước khi Gold Forks, tránh bị đặt. Bạn cũng có thể chọn có giao dịch hay không dựa trên lịch sự kiện quan trọng.
Tối ưu hóa quản lý vị trí. Bạn có thể tối ưu hóa kích thước vị trí cụ thể cho mỗi giao dịch theo nguyên tắc quản lý tiền.
Chiến lược này nói chung là một chiến lược theo dõi xu hướng đơn giản và thực tế. Nó sử dụng EMA và WMA để tạo ra tín hiệu giao dịch và sử dụng kỹ thuật dừng hai lần để kiểm soát rủi ro.
/*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)