
Chiến lược giao dịch này dựa trên một hệ thống trung bình di chuyển đơn giản và hệ thống giao thoa đường trung bình. Nó sử dụng các đường trung bình di chuyển nhanh và giao thoa đường trung bình di chuyển chậm trong các chu kỳ khác nhau như một tín hiệu cho việc tháo dỡ nhiều.
Chiến lược này sử dụng một chu kỳ nhanh như trung bình di chuyển đơn giản 60 ngày và một chu kỳ chậm như trung bình di chuyển đơn giản 200 ngày. Trung bình di chuyển nhanh phản ứng nhanh hơn với sự thay đổi giá, phản ánh xu hướng giá gần đây; trung bình di chuyển chậm phản ứng chậm hơn với sự thay đổi giá, phản ánh xu hướng trung bình dài hạn.
Khi đường trung bình ngắn hạn đi qua đường trung bình dài hạn từ phía dưới, cho thấy giá ngắn hạn bắt đầu tăng lên, vào thị trường đa đầu, thì làm nhiều. Khi đường trung bình ngắn hạn đi qua đường trung bình dài hạn từ phía trên xuống, cho thấy giá ngắn hạn bắt đầu giảm xuống, vào thị trường trống, thì làm trống.
Chiến lược này sử dụng nguyên tắc giao nhau của đường trung bình để xác định hướng xu hướng. Khi giá tăng ngắn hạn tăng nhanh, đường trung bình ngắn hạn sẽ đẩy đường trung bình dài hạn lên và đi qua nó từ bên dưới. Điều này cho thấy thị trường đi vào xu hướng tăng, nên làm nhiều hơn. Ngược lại, khi giá giảm ngắn hạn nhanh, đường trung bình ngắn hạn sẽ kéo xuống đường trung bình dài hạn và đi qua nó từ trên, cho thấy thị trường đi vào xu hướng giảm, nên làm trống.
Các điểm biến của xu hướng giá được nắm bắt bằng cách giao nhau giữa đường trung bình nhanh và đường trung bình chậm, và điều chỉnh vị trí mở rộng cho phù hợp. Đây là nguyên tắc chính của chiến lược này để đánh giá xu hướng và tạo ra tín hiệu giao dịch.
Có thể điều chỉnh các tham số chu kỳ của đường trung bình di chuyển để phù hợp với tần số dao động của các giống khác nhau; cải thiện chiến lược dừng lỗ và dừng lại, sử dụng các chỉ số phức tạp hơn để giảm tín hiệu sai; thêm các phương pháp như lọc khối lượng giao dịch để tối ưu hóa chiến lược và tăng sự ổn định của chiến lược.
Chiến lược này có thể được tối ưu hóa hơn nữa ở những khía cạnh sau:
Tối ưu hóa các tham số chu kỳ chậm và nhanh của trung bình di chuyển để phù hợp với các giống với tần số dao động khác nhau. Bạn có thể thử nghiệm nhiều hơn để tìm các tham số tối ưu.
Thay đổi các điều kiện nhập cảnh, thêm các chỉ số lọc, chẳng hạn như tăng giao dịch, để giảm tín hiệu sai.
Cải thiện chiến lược dừng lỗ, chẳng hạn như theo dõi dừng lỗ hoặc dừng động, để lợi nhuận hiệu quả hơn.
Xem xét chi phí giao dịch như phí xử lý, thêm mô-đun đánh giá chi phí để mô phỏng thực tế hơn.
Thiết kế Vũ trụ tham số để tìm các tham số tốt nhất cho các đặc điểm khác nhau.
Tăng nhận dạng đặc điểm địa phương, hỗ trợ đánh giá điểm biến động xu hướng, nâng cao khả năng nắm bắt thời gian mở và đóng vị trí.
Bằng cách tối ưu hóa chiến lược của hệ thống, có thể cải thiện đáng kể lợi nhuận và ổn định, giảm rút lui.
Chiến lược giao dịch này dựa trên sự chuyển đổi của xu hướng giá định giá trên đường trung bình, thuộc chiến lược theo dõi xu hướng điển hình. Nó sử dụng đường trung bình của các chu kỳ khác nhau để làm nhiều tín hiệu giảm giá, xác định hướng xu hướng thông qua kết hợp đường trung bình nhanh và đường trung bình chậm, và thực hiện bắt xu hướng hiệu quả. Chiến lược này ổn định, đáng tin cậy, dễ hiểu và thực hiện, có thể thích ứng với hầu hết các loại thông qua tối ưu hóa tham số, là một loại chiến lược cơ bản của giao dịch định lượng.
/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 00:00:00
period: 10m
basePeriod: 1m
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/
// © thebearfib
//
//@version=5
//
strategy("x-over 150d_200d_sma - Free", overlay = true)
repaint = input.bool(defval = false, title = "[RePaint] Uncheck to see real time results") //when you deselect it - it shows what would have happened in real time while trading the system
srcmc = request.security(syminfo.tickerid, 'D', open, lookahead= repaint ? barmerge.lookahead_on : barmerge.lookahead_off, gaps=barmerge.gaps_off)
fast_length = input(title="Fast Length", defval=60)
slow_length = input(title="Slow Length", defval=275)
_fast = ta.sma(srcmc, fast_length)
_slow = ta.sma(srcmc, slow_length)
plot(_fast,
title="Fast SMA",
color=color.red,
linewidth = 1)
plot(_slow,
title="Slow SMA",
color=color.white,
linewidth = 3)
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Calculating —————————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//
longProfitPerc = input.float(title="Long Take Profit (%)", minval=0.01, step=1.0, defval=42) * .01
longStopPerc = input.float(title="Long Stop (%)", minval=0.01, step=1.0, defval=13) * .01
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Stop Conditions ————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
longExitPrice = strategy.opentrades > 0 ? strategy.position_avg_price * (1 + longProfitPerc) : srcmc * (1 + longProfitPerc)
longStopPrice = strategy.opentrades > 0 ? strategy.position_avg_price * (1 - longStopPerc) : srcmc * (1 - longStopPerc)
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Long Conditions ————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
longCondition = srcmc > _slow and ta.crossover(_fast, _slow)
closeCondition = ta.crossover(srcmc, _slow)
if (longCondition)
strategy.entry("Entry (long)", strategy.long, comment="→ 𝗟𝗴 𝗘𝗻𝘁𝗿𝘆")
if (closeCondition)
strategy.close("Entry (long)", comment=" 𝗟𝗴 𝗘𝘅𝗶𝘁 ←")
if (strategy.position_size > 0)
strategy.exit(id="XL", limit=longExitPrice, stop = longStopPrice, comment_profit = "Take Profit", comment_loss = "Stop Loss")
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Never the End Just the beginning —————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//