Chiến lược giao dịch đột phá kênh trung bình động


Ngày tạo: 2024-01-29 14:31:25 sửa đổi lần cuối: 2024-01-29 14:31:25
sao chép: 0 Số nhấp chuột: 631
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch đột phá kênh trung bình động

Tổng quan

Chiến lược này dựa trên nguyên tắc giao thoa vàng của đường trung bình di chuyển đơn giản, đưa ra quyết định mua và bán thông qua giao thoa của đường trung bình 7 ngày và đường trung bình 14 ngày. Giao thoa này phát ra tín hiệu mua khi đường trung bình 7 ngày phá vỡ đường trung bình 14 ngày từ phía dưới; và phát ra tín hiệu bán khi đường trung bình 7 ngày phá vỡ đường trung bình 14 ngày từ phía trên. Chiến lược này đồng thời có chức năng dừng lỗ, dừng lỗ và theo dõi dừng lỗ để khóa lợi nhuận và kiểm soát rủi ro.

Nguyên tắc chiến lược

Lịch lý giao dịch cốt lõi của chiến lược này dựa trên nguyên tắc chéo giữa đường trung bình 7 ngày và đường trung bình 14 ngày. Xu hướng ngắn hạn của giá phản ứng đường trung bình 7 ngày, xu hướng trung bình của giá phản ứng đường trung bình 14 ngày.

Cụ thể, chiến lược này tính toán trung bình di chuyển đơn giản vào ngày 7 và ngày 14 thông qua chỉ số SMA. Sau khi mỗi đường K được hình thành, so sánh mối quan hệ giữa đường 7 và đường 14 hiện tại. Nếu đường 7 đi qua đường 14, sẽ phát đi nhiều tín hiệu và vào vị trí dài; Nếu đường 7 đi qua đường 14 dưới đường 7, sẽ phát đi tín hiệu trống và vào vị trí ngắn.

Ngoài ra, chiến lược cũng thiết lập dừng lỗ, ngăn chặn và theo dõi dừng lỗ để khóa lợi nhuận và kiểm soát rủi ro. Các tham số cụ thể có thể được tối ưu hóa dựa trên kết quả kiểm tra lại.

Lợi thế chiến lược

Chiến lược này có những ưu điểm sau:

  1. Các quy tắc đơn giản, rõ ràng, dễ hiểu và phù hợp với người mới học;
  2. Nguyên tắc chéo ngang có hiệu quả, tỷ lệ thắng cao hơn;
  3. Có hệ thống dừng, dừng và theo dõi để kiểm soát rủi ro một cách hiệu quả;
  4. Các tham số ít hơn, dễ dàng kiểm tra và tối ưu hóa.

Rủi ro và giải pháp

Chiến lược này cũng có một số rủi ro:

  1. Khi xu hướng bị đảo ngược, tín hiệu giao thoa sẽ bị chậm trễ, không thể phản ứng kịp thời với sự thay đổi xu hướng, có thể dẫn đến tổn thất lớn;
  2. Trong thị trường ngang nghiêm trọng, các tín hiệu chéo đường trung bình thường xuyên, sẽ tạo ra nhiều tín hiệu giả hơn, ảnh hưởng đến hiệu quả chiến lược.

Để đối phó với những rủi ro trên, các biện pháp sau đây có thể được xem xét:

  1. Kết hợp với các chỉ số khác để lọc các tín hiệu chéo đường đồng nhất, chẳng hạn như MACD, KDJ, v.v. để tránh tín hiệu sai tại điểm biến xu hướng;
  2. Tăng mức dừng lỗ, giảm thời gian nắm giữ để giảm tác động của tổn thất đơn lẻ;
  3. Tối ưu hóa tham số đường trung bình theo các tình huống thị trường khác nhau, tăng chu kỳ đường trung bình thích hợp trong thị trường ngang, giảm tần suất tín hiệu chéo.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Kiểm tra các kết hợp và tham số khác nhau để tìm ra tham số tối ưu;
  2. Thêm các chỉ số khác để lọc tín hiệu và tăng hiệu quả chiến lược;
  3. Tối ưu hóa các tham số dừng lỗ, giảm thu hồi và tăng lợi nhuận;
  4. Điều chỉnh các tham số theo các loại khác nhau và thời gian giao dịch.

Tóm tắt

Chiến lược này rất thích hợp cho người mới bắt đầu học, nguyên tắc đơn giản, dễ hiểu và thực hiện. Đồng thời có khả năng thích ứng thị trường tốt, có thể nhận được lợi nhuận ổn định thông qua điều chỉnh và tối ưu hóa các tham số.

Mã nguồn chiến lược
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bensonsuntw

strategy("Strategy Template[Benson]", pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

backtest_year = input(2019, type=input.integer, title='backtest_year')
backtest_month = input(01, type=input.integer, title='backtest_month', minval=1, maxval=12)
backtest_day = input(01, type=input.integer, title='backtest_day', minval=1, maxval=31)
start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00)
stop_loss_and_tp = input(title="Enable Stop Loss and Take Profit", type=input.bool, defval=true)
trail_stop = input(title="Enable Trail Stop", type=input.bool, defval=true)
buy_stop_loss = input(0.2, type=input.float, title='buy_stop_loss')
sell_stop_loss = input(0.1, type=input.float, title='sell_stop_loss')
buy_tp = input(0.4, type=input.float, title='buy_tp')
sell_tp =input(0.2, type=input.float, title='sell_tp')
trail_stop_long = input(1.1, type=input.float, title='trail_stop_long')
trail_stop_short = input(0.9, type=input.float, title='trail_stop_short')
trail_stop_long_offset = input(0.05, type=input.float, title='trail_stop_long_offset')
trail_stop_short_offset = input(0.05, type=input.float, title='trail_stop_short_offset')


// you can set your own logic here
shortCondition = crossunder(sma(close,7),sma(close,14))
longCondition = crossover(sma(close,7),sma(close,14))

strategy.entry("Buy", strategy.long, when=longCondition  )
strategy.close("Buy", when=shortCondition)
strategy.exit("Close Buy","Buy", limit= stop_loss_and_tp?strategy.position_avg_price * (1+buy_tp):na, stop = stop_loss_and_tp?strategy.position_avg_price * (1-buy_stop_loss):na,trail_price=trail_stop?strategy.position_avg_price *trail_stop_long:na,trail_offset=trail_stop?-strategy.position_avg_price *trail_stop_long_offset:na)

strategy.entry("Sell", strategy.short, when=shortCondition)
strategy.close("Sell", when=longCondition)
strategy.exit("Close Sell","Sell", limit= stop_loss_and_tp?strategy.position_avg_price * (1-sell_tp):na, stop = stop_loss_and_tp?strategy.position_avg_price * (1+sell_stop_loss):na,trail_price=trail_stop?strategy.position_avg_price *trail_stop_short:na,trail_offset=trail_stop?strategy.position_avg_price *trail_stop_short_offset:na)


net_profit = strategy.netprofit + strategy.openprofit

plot(net_profit, title="Net Profit", linewidth=2, style=plot.style_area, transp=50, color=net_profit >= 0 ? #26A69A : color.red)