
Chiến lược này dựa trên hai chỉ số EMA. Chiến lược này được tính toán bằng cách tính toán đường EMA nhanh và đường EMA chậm, làm nhiều khi đi qua đường chậm trên đường nhanh và bằng phẳng khi đi qua đường chậm dưới đường nhanh. Chiến lược này đơn giản và dễ dàng, phù hợp với giao dịch ngắn hạn.
Chiến lược này được thực hiện dựa trên hai chỉ số EMA. Đầu tiên, tính toán EMA đường nhanh và EMA đường chậm. Chu kỳ EMA đường nhanh ngắn, có thể phản ánh sự thay đổi giá một cách nhạy cảm; chu kỳ EMA đường chậm dài, phản ánh xu hướng dài.
Cụ thể, chiến lược bao gồm các bước sau:
Nhập các tham số của EMA đường nhanh và EMA đường chậm, bao gồm độ dài chu kỳ SMA, nguồn dữ liệu, v.v.
Tính toán EMA đường nhanh và đường chậm
Định nghĩa thời gian kim cương: đường nhanh đi qua đường chậm từ dưới lên
Định nghĩa thời gian chết: đường nhanh từ trên xuống dưới đường chậm
Mua nhiều hơn trong thời gian vàng.
Hạ điểm khi chết
Có thể chọn cho phép thực hiện lệnh nhượng quyền và sử dụng chiến lược dừng lỗ
Xuất bản thông báo mua bán
Bằng cách sử dụng chiến lược giao thoa EMA đơn giản này, bạn có thể bắt được xu hướng ngắn hạn của giá và thu được lợi nhuận.
Chiến lược này có những ưu điểm sau:
Các ý tưởng chiến lược rất đơn giản, rõ ràng và dễ hiểu.
Chỉ cần hai chỉ số EMA, dễ dàng thực hiện.
Có thể nắm bắt được xu hướng giá trong thời gian ngắn và thu được lợi nhuận từ biến động.
Có thể tùy chỉnh chu kỳ EMA, linh hoạt để thích ứng với môi trường thị trường của các chu kỳ khác nhau.
Bạn có thể chọn cho phép thực hiện giao dịch nhàn rỗi hay không, và có thể kiểm soát rủi ro một cách linh hoạt.
Có thể chọn sử dụng chiến lược dừng lỗ để kiểm soát rủi ro giao dịch.
Các thông báo mua bán có thể được xuất ra để dễ dàng theo dõi.
Chiến lược dễ dàng tối ưu hóa, có thể thiết lập các tham số EMA linh hoạt, tối ưu hóa lợi nhuận.
Chiến lược này cũng có một số rủi ro:
Chiến lược EMA kép dễ tạo ra tín hiệu sai và có thể dẫn đến tổn thất không cần thiết.
Thiết lập điểm dừng không hợp lý có thể làm tăng tổn thất.
Tần suất giao dịch có thể quá cao, làm tăng chi phí giao dịch và rủi ro trượt.
Các tham số EMA cố định không thể thích ứng với sự thay đổi của thị trường.
Những người này có xu hướng đi theo những bước đi khó khăn, mất đi sự bình tĩnh và phán đoán.
Không thể đoán được xu hướng sẽ thay đổi, có thể sẽ đảo ngược.
Các biện pháp quản lý rủi ro:
Tối ưu hóa tham số EMA, giảm khả năng tín hiệu giả.
Thiết lập điểm dừng lỗ hợp lý, kiểm soát tổn thất đơn lẻ
Tối ưu hóa chu kỳ EMA, giảm tần suất giao dịch.
Các tham số EMA có thể được điều chỉnh động trong các giai đoạn thị trường khác nhau.
Tăng các chỉ số đánh giá xu hướng, tránh theo đuổi sự suy giảm.
Kết hợp các chỉ số đánh giá xu hướng để xác định xu hướng lớn.
Chiến lược này có thể được tối ưu hóa bằng cách:
Hoạt động tối ưu hóa các tham số EMA, sử dụng các kết hợp chu kỳ EMA khác nhau trong các giai đoạn thị trường khác nhau, tối ưu hóa hiệu quả của tham số.
Tăng các điều kiện lọc cổ phiếu, giao dịch chiến lược với các cổ phiếu đáp ứng các điều kiện nhất định, tăng tỷ lệ thành công.
Kết hợp với chỉ số biến động, giảm rủi ro tránh vị trí trong giai đoạn biến động thấp.
Kết hợp các chỉ số giao dịch, chỉ có thể xác nhận xu hướng khi có lượng cao.
Đặt các điều kiện giá, ví dụ như phá vỡ đường 20 ngày và giao dịch chiến lược EMA.
Tối ưu hóa chiến lược dừng lỗ và đặt các điều kiện dừng để khóa lợi nhuận.
Tăng khả năng đánh giá các xu hướng lớn, tránh các vị thế nghịch đảo.
Chiến lược tối ưu hóa liên tục kết hợp với các thuật toán học sâu và các thuật toán học máy khác nhau.
Nói tóm lại, chiến lược hai EMA Gold Fork-Dead Fork là một chiến lược đơn giản, dễ hiểu và thực hiện, có thể thu được lợi nhuận từ biến động giá, nhưng cũng có một số rủi ro lợi nhuận. Chúng ta có thể kiểm soát rủi ro bằng các biện pháp như tối ưu hóa tham số, dừng lỗ, lọc cổ phiếu và phán đoán xu hướng quy mô lớn. Chiến lược này có thể được tối ưu hóa và nâng cấp liên tục, đáng để nghiên cứu và cải tiến liên tục.
/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("EMA Strategy", shorttitle="EMA Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === Inputs ===
// short ma
maFastSource = input(defval=close, title="Fast MA Source")
maFastLength = input(defval=3, title="Fast MA Period", minval=1)
// long ma
maSlowSource = input(defval=close, title="Slow MA Source")
maSlowLength = input(defval=9, title="Slow MA Period", minval=1)
// invert trade direction
shorting = input(defval=false, title="Allow Shorting?")
// risk management
useStop = input(defval=false, title="Use Initial Stop Loss?")
slPoints = input(defval=25, title="Initial Stop Loss Points", minval=1)
useTS = input(defval=false, title="Use Trailing Stop?")
tslPoints = input(defval=120, title="Trail Points", minval=1)
useTSO = input(defval=false, title="Use Offset For Trailing Stop?")
tslOffset = input(defval=20, title="Trail Offset Points", minval=1)
// Messages for buy and sell
message_buy = input("Buy message", title="Buy Alert Message")
message_sell = input("Sell message", title="Sell Alert Message")
// Calculate start/end date and time condition
startDate = input(timestamp("2021-01-01T00:00:00"), type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time)
time_cond = true
// === Vars and Series ===
fastMA = ema(maFastSource, maFastLength)
slowMA = ema(maSlowSource, maSlowLength)
plot(fastMA, color=color.blue)
plot(slowMA, color=color.purple)
goLong() =>
crossover(fastMA, slowMA)
killLong() =>
crossunder(fastMA, slowMA)
strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_buy)
strategy.close("Buy", when=killLong() and time_cond, alert_message = message_sell)
// Shorting if using
if shorting
strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_sell)
strategy.close("Sell", when=goLong() and time_cond, alert_message = message_buy)
if useStop
strategy.exit("XLS", from_entry="Buy", stop=strategy.position_avg_price / 1.08)
strategy.exit("XSS", from_entry="Sell", stop=strategy.position_avg_price * 1.08)