
Chiến lược này là một chiến lược xoay, áp dụng cho thị trường xu hướng như tiền điện tử và cổ phiếu, sử dụng khung thời gian lớn hơn, chẳng hạn như 8 giờ. Chiến lược này sử dụng nhiều đường trung bình di chuyển bao gồm SMA, EMA, VWMA, ALMA, SMMA, LSMA và VWMA, được áp dụng cho các điểm cao và thấp, tạo thành hai kênh trung bình.
Đặt nhiều khi giá đóng cửa cao hơn mức trung bình áp dụng cho điểm cao; Đặt trống khi giá đóng cửa thấp hơn mức trung bình áp dụng cho điểm thấp.
Chiến lược này sử dụng 7 chỉ số trung bình di chuyển khác nhau, bao gồm SMA, EMA, VWMA, ALMA, SMMA, LSMA và VWMA. Các trung bình di chuyển này được áp dụng cho giá cao nhất và giá thấp nhất của đường K, tạo ra hai đường trung bình.
Mức trung bình được áp dụng cho giá cao nhất được gọi là avg_high và mức trung bình được áp dụng cho giá thấp nhất được gọi là avg_low. Hai mức trung bình này tạo thành một kênh.
Khi giá đóng cửa lớn hơn mức trung bình_ cao, hãy làm nhiều hơn; khi giá đóng cửa thấp hơn mức trung bình_ thấp, hãy làm trống.
Lệnh dừng là giá mở và lệnh dừng là giá mở.(1+tp_long); khi mở lỗ, đường dừng là giá mở và đường dừng là giá mở(1-tp_short)。
Lợi thế lớn nhất của chiến lược này là sử dụng nhiều chỉ số trung bình di chuyển để tăng khả năng kiếm lợi nhuận. Các chỉ số trung bình di chuyển với các chu kỳ khác nhau và cách tính toán khác nhau phản ứng với giá khác nhau, kết hợp với việc sử dụng có thể tạo ra tín hiệu giao dịch đáng tin cậy hơn.
Một lợi thế khác là giao dịch theo phương thức kênh. Các kênh lên xuống giới hạn phạm vi dừng, giảm rủi ro và phù hợp hơn với chiến lược xoay.
Chiến lược này có hai rủi ro chính:
Nhiều tổ hợp chỉ số trung bình di chuyển được sử dụng, các tham số được thiết lập phức tạp hơn, cần nhiều thử nghiệm và tối ưu hóa để tìm ra tổ hợp tham số tối ưu.
Trong thị trường ngang và không có xu hướng rõ ràng, chiến lược này dễ gây ra tổn thất và nhiều tín hiệu giao dịch không hiệu quả.
Để giảm thiểu các rủi ro này, cần chọn các loại giao dịch có xu hướng rõ ràng, đồng thời thực hiện nhiều phản hồi và tối ưu hóa đối với các tham số để tìm các thiết lập tham số phù hợp nhất với tình trạng thị trường hiện tại.
Chiến lược này cũng cần phải được tối ưu hóa về những khía cạnh sau:
Kiểm tra nhiều loại trung bình di chuyển hơn để tìm một sự kết hợp tốt hơn. Bạn có thể xem xét SMA, EMA, KAMA, TEMA, v.v.
Tối ưu hóa tham số cho chiều dài đường trung bình di chuyển và chiều rộng đường dẫn để tìm các thiết lập tham số tối ưu.
Kiểm tra các thiết lập dừng dừng khác nhau. Bạn có thể xem xét các phương pháp như dừng trailing hoặc dừng động.
Kết hợp các chỉ số định hướng để tránh giao dịch thường xuyên trong các thị trường không có xu hướng rõ ràng. Ví dụ: ADX, ATR, v.v.
Tối ưu hóa logic entry và exit, thiết lập các điều kiện lọc bổ sung, giảm giao dịch không hiệu lực.
Chiến lược này là một chiến lược theo dõi xu hướng chuyển động. Chiến lược này được áp dụng cho các loại giao dịch có xu hướng rõ ràng, hiệu quả tốt hơn sau khi tối ưu hóa các tham số. Tuy nhiên, khi thị trường chuyển hướng dễ chịu tổn thất lớn hơn, cần tối ưu hóa thêm để giảm rủi ro.
/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 1h
basePeriod: 15m
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/
// © exlux99
//@version=4
strategy(title="High/Low channel swing", shorttitle="Multi MA swing", overlay=true)
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
//monday and session
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
//////
length_ma= input(defval=12, title="Length Moving averages", minval=1)
////////////////////////////////SETUP///////////////////////////////////////////
sma_high = sma(high, length_ma)
ema_high = ema(high, length_ma)
wma_high = wma(high, length_ma)
alma_high = alma(high,length_ma, 0.85, 6)
smma_high = rma(high,length_ma)
lsma_high = linreg(high, length_ma, 0)
vwma_high = vwma(high,length_ma)
avg_high = (sma_high+ema_high+wma_high+alma_high+smma_high+lsma_high+vwma_high)/7
///////////////////////////////////////////
sma_low = sma(low, length_ma)
ema_low = ema(low, length_ma)
wma_low = wma(low, length_ma)
alma_low = alma(low,length_ma, 0.85, 6)
smma_low = rma(low,length_ma)
lsma_low = linreg(low, length_ma, 0)
vwma_low = vwma(low,length_ma)
avg_low = (sma_low+ema_low+wma_low+alma_low+smma_low+lsma_low+vwma_low)/7
////////////////////////////PLOTTING////////////////////////////////////////////
plot(avg_high , title="avg", color=color.green, linewidth = 4)
plot(avg_low , title="avg", color=color.red, linewidth = 4)
long= close > avg_high
short = close < avg_low
tplong=input(0.06, title="TP Long", step=0.01)
sllong=input(0.05, title="SL Long", step=0.01)
tpshort=input(0.045, title="TP Short", step=0.01)
slshort=input(0.05, title="SL Short", step=0.01)
if(time_cond)
strategy.entry("long",1,when=long)
strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong")
strategy.close("long", when=crossunder(low,avg_low))
strategy.entry("short",0,when=short)
strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort")
strategy.close("short",when=crossover(high,avg_high))