Chiến lược giao dịch khung thời gian đa dạng dựa trên kênh giá và MACD


Ngày tạo: 2023-12-08 15:15:37 sửa đổi lần cuối: 2023-12-08 15:15:37
sao chép: 0 Số nhấp chuột: 616
1
tập trung vào
1621
Người theo dõi

Chiến lược giao dịch khung thời gian đa dạng dựa trên kênh giá và MACD

Tổng quan

Chiến lược này kết hợp các chỉ số kênh giá và MACD để theo dõi xu hướng và đánh giá mua quá mức trong nhiều khung thời gian để đưa ra quyết định mua và bán. Chiến lược này cũng kết hợp với lệnh dừng để quản lý rủi ro.

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

Chỉ số kênh giá xây dựng kênh giá dựa trên đường trung bình EMA của giá cao nhất và giá thấp nhất, đánh giá xu hướng bằng cách phá vỡ kênh giá; Chỉ số MACD đánh giá xu hướng đa khí, trên trục không là thị trường đa đầu, dưới là thị trường không đầu.

Các tín hiệu giao dịch của chiến lược này xuất phát từ:

  1. Hình phân tích MACD đảo sang màu đỏ Enter nhiều đầu, đảo sang màu xanh lá cây Enter trống

  2. Giá gần đáy kênh và MACD ở dưới trục 0

  3. Giá gần đỉnh kênh và MACD trên trục 0

  4. MACD trên trục 0 Enter nhiều đầu, dưới trục 0 Enter trống

Tín hiệu Exit xuất phát từ thiết lập Stop Loss Stop.

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

  1. Kiểm tra kết hợp đa chỉ số để tránh đột phá giả

  2. Kết hợp các chỉ số trong các khung thời gian khác nhau để xác định hướng đi của xu hướng

  3. Tiến hành các biện pháp ngăn chặn để kiểm soát hiệu quả các tổn thất đơn lẻ

Rủi ro chiến lược

  1. Không gian tối ưu hóa tham số hạn chế, dễ quá tối ưu hóa

  2. Cài đặt tham số cổng giá quá thấp sẽ làm mất nhiều cơ hội

  3. Đặt điểm dừng quá nhỏ, sẽ chịu tổn thất lớn hơn

Giải pháp:

  1. Sử dụng phương pháp “walk forward” để tránh các tham số quá tối ưu hóa

  2. Cài đặt tham số kênh giá thành tham số thích nghi

  3. Giới thiệu Stop Loss Variable để điều chỉnh động khoảng cách Stop Loss

Hướng tối ưu hóa chiến lược

  1. Tối ưu hóa các hàm MACD

  2. Tính toán tự điều chỉnh các tham số kênh giá tối ưu

  3. Thêm nhiều điều kiện lọc để tránh đột phá giả làm cho hiệu quả cao hơn

Tóm tắt

Chiến lược này tích hợp lợi thế của chỉ số kênh giá và chỉ số MACD, thiết lập và tối ưu hóa các tham số hợp lý, có hiệu quả tốt trong việc phán đoán xu hướng và phán đoán mua quá mức, cơ chế dừng lỗ kiểm soát rủi ro mất mát một lần, là một chiến lược giao dịch ổn định hơn. Tiếp theo có thể được cải thiện từ việc tối ưu hóa tham số, thêm điều kiện lọc, tối ưu hóa cơ chế dừng lỗ.

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

//@version=2
strategy("Sonic R + Barcolor MACD", overlay=true)
HiLoLen     = input(34, minval=2,title="High Low channel Length")
pacL        = ema(low,HiLoLen)
pacH        = ema(high,HiLoLen)
// Plot the Price Action Channel (PAC) base on EMA high,low and close//
L=plot(pacL, color=yellow, linewidth=1, title="High PAC EMA",transp=0)
H=plot(pacH, color=yellow, linewidth=1, title="Low PAC EMA",transp=0)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
hisup= iff(delta>delta[1] and delta>0, 1,
	     iff(delta<delta[1], -1, nz(hisup[1], 0)))
hisdown = iff(delta<delta[1] and delta<0, 1,
	     iff(delta>delta[1], -1, nz(hisdown[1], 0)))
barcolor(hisup==1 and MACD>0 ? lime: hisdown==1 and MACD<0 ? red : blue )
//SR
PeriodLookBack = input(34)
xHighest = highest(PeriodLookBack)
xLowest = lowest(PeriodLookBack)
Trend= close>xHighest[1] ? 1: close< xLowest[1]?-1 : nz(Trend[1],0)
// Strategy//
conbuy= hisdown==1 or MACD<0 ? 1: hisup[5]==1 and MACD[5]>0 ?-1 : nz(conbuy[1],0)
gobuy= conbuy==1 and close-open<2*(pacH-pacL) and high-close<(pacH-pacL)/2 and hisup==1 and MACD>0 and close-pacH<1.5*(pacH-pacL) and close>open and high-close<close-open and close>pacH
consell= hisup==1 or MACD>0 ?1 : hisdown[5]==1 and MACD[5]<0 ?-1 : nz(consell[1],0)
gosell= consell==1 and open-close<2*(pacH-pacL) and close-low<(pacH-pacL)/2 and hisdown==1 and MACD<0 and pacL-close<1.5*(pacH-pacL) and close<open and close-low<open-close and close<pacL
if(gobuy)
    strategy.entry("Buy",strategy.long)
if(gosell)
    strategy.entry("Sell",strategy.short)
//if(Trend==-1 and close<pacL)
//    strategy.close("Buy")
//if(Trend==1 and close>pacH)
//    strategy.close("Sell")
 ////////////// TP and SL//
SL = input(defval=100.00, title="Stop Loss Point", type=float, step=1)
rr= input(defval=0.1,title="Reward/Risk",type=float)
useTPandSL = input(defval = false, title = "Use exit order strategy?")
Stop = SL
Take=SL*rr
Q = 100
if(useTPandSL)
    strategy.exit("Out Long", "Buy", qty_percent=Q, profit= Take, loss=Stop)
    strategy.exit("Out Short", "Sell", qty_percent=Q, profit= Take, loss=Stop)