
Chiến lược này là một chiến lược chéo đường trung bình di chuyển điển hình, nó sử dụng hai nhóm trung bình, một nhóm trung bình nhanh và một nhóm trung bình chậm cùng một lúc. Khi đường trung bình nhanh vượt qua đường trung bình chậm, nó tạo ra tín hiệu mua; Khi đường trung bình nhanh vượt qua đường trung bình chậm, nó tạo ra tín hiệu bán.
Lập luận chính của chiến lược này dựa trên sự giao nhau của hai nhóm đường trung bình nhanh và chậm để đánh giá thời gian vào và ra sân.
Đầu tiên, hãy tính hai nhóm đường trung bình chậm và nhanh:
Sau đó, đánh giá xem liệu EMA nhanh có phải là giao dịch vàng hay giao dịch chết với SMA chậm:
Để lọc các tín hiệu giả mạo, một nhóm thứ hai của EMA và SMA đã được xác nhận:
Bằng cách này, thông qua hai nhóm xác nhận nhanh và chậm, bạn có thể lọc ra nhiều tín hiệu giả, do đó tăng độ tin cậy của tín hiệu.
Khi phán quyết tạo ra tín hiệu mua, hãy mua nhiều; khi phán quyết tạo ra tín hiệu bán, hãy tháo lỗ.
Ngoài ra, chiến lược này cũng thiết lập logic dừng dừng lỗ. Khi giữ vị trí, giá dừng và giá dừng sẽ được theo dõi dựa trên tỷ lệ thua lỗ được thiết lập.
Chiến lược này có một số lợi thế:
Chiến lược này cũng có một số rủi ro:
Để kiểm soát rủi ro, chúng tôi khuyên bạn nên:
Chiến lược này cũng có thể được tối ưu hóa theo các khía cạnh sau:
Nhìn chung, chiến lược này có các đặc điểm đơn giản, trực quan, dễ thực hiện và có thể được tối ưu hóa theo thị trường và nhu cầu. Chiến lược này có thể được sử dụng với các chỉ số kỹ thuật khác hoặc kết hợp các chiến lược khác.
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © JMLSlop
//@version=4
src = close
strategy("Crossover moving averages", shorttitle="Cross MA-EMA", overlay=true, calc_on_order_fills=false)
// first fast EMA
len = input(8, "Length", type=input.integer, minval=1)
doma1 = input(true, title="EMA")
out1 = ema(src, len)
//Second fast EMA
len2 = input(21, minval=1, title="Length")
doma2 = input(true, title="EMA")
out2 = ema(src, len2)
//First slow MA
len3 = input(50, minval=1, title="Length")
doma3 = input(true, title="SMA")
out3 = sma(src, len3)
//Second slow MA
len4 = input(200, minval=1, title="Length")
doma4 = input(true, title="SMA")
out4 = sma(src, len4)
// Profit
profit = input(8, "Profit/lost %", type=input.float, minval=1) * 0.01
plot(doma1 and out1 ? out1: na, color=color.blue, linewidth=1, title="1st EMA")
plot(doma2 and out2 ? out2: na, color=color.red, linewidth=1, title="2nd EMA")
plot(doma3 and out3 ? out3: na, color=color.green, linewidth=2, title="1st MA")
plot(doma4 and out4 ? out4: na, color=color.orange, linewidth=3, title="2nd MA")
// Orders config
takeProfitPrice =
(strategy.position_size > 0) ? strategy.position_avg_price + open*profit : (strategy.position_size < 0) ? strategy.position_avg_price - (open*profit) : na
longStopPrice = strategy.position_avg_price * (1 - profit)
shortStopPrice = strategy.position_avg_price * (1 + profit)
longCondition2 = (out2>out3 and (crossover(out1, out4) or crossover(out1[1], out4[1]) or crossover(out1[2], out4[2]) or (crossover(out1[3], out4[3]))) or (out2>out3 and (crossover(out1, out3) or crossover(out1[1], out3[1]) or crossover(out1[2], out3[2]) or crossover(out1[3], out3[3]))))
if (longCondition2)
strategy.entry("Enter L", strategy.long)
shortCondition2 = (out2<out3 and (crossunder(out1, out4) or crossunder(out1[1], out4[1]) or crossunder(out1[2], out4[2]) or crossunder(out1[3], out4[3]))) or (out2<out3 and (crossunder(out1, out3) or crossunder(out1[1], out3[1]) or crossunder(out1[2], out3[2]) or crossunder(out1[3], out3[3])))
if (shortCondition2)
strategy.entry("Enter S", strategy.short)
if (strategy.position_size > 0)
strategy.exit("Exit L", limit=takeProfitPrice, stop=longStopPrice)
if (strategy.position_size < 0)
strategy.exit("Exit S", limit=takeProfitPrice, stop=shortStopPrice)