WaveTrend và CMF dựa trên xu hướng theo chiến lược

Tác giả:ChaoZhang, Ngày: 2023-11-16 16:38:03
Tags:

img

Tổng quan

Chiến lược này kết hợp chỉ số WaveTrend và chỉ số dòng tiền Chaikin (CMF) để xác định hướng xu hướng và theo dõi xu hướng. Nó chạy trong khoảng thời gian 15 phút, sử dụng WaveTrend để xác định xu hướng giá và CMF để xác nhận xu hướng, do đó thực hiện theo xu hướng cực ngắn hạn.

Chiến lược logic

Chỉ số WaveTrend có thể xác định hiệu quả hướng xu hướng của giá cả. Nó bao gồm đường trung bình kênh, đường trung bình kênh và chỉ số kênh. Đường trung bình kênh là một đường trung bình động nhân tố của giá, phản ánh xu hướng giá. Đường trung bình kênh là một đường trung bình động của đường trung bình kênh, được sử dụng để xác định đường trung bình kênh. Chỉ số kênh phản ánh mức độ lệch của giá từ đường trung bình kênh và tạo ra tín hiệu mua quá mức / bán quá mức.

Chỉ số CMF có thể đánh giá dòng chảy và dòng chảy của tiền và xác nhận xu hướng. Chỉ số này dựa trên đường tích lũy / phân phối điều chỉnh theo khối lượng, phản ánh sự so sánh sức mua và bán. Một giá trị khoảng 0 cho thấy sự cân bằng giữa dòng chảy và dòng chảy tiền. Dưới 0 cho thấy dòng chảy tiền và trên 0 cho thấy dòng chảy tiền.

Chiến lược này chạy trên khung thời gian 15 phút. Nó sử dụng đầu tiên chỉ số WaveTrend để xác định hướng xu hướng giá, sau đó sử dụng chỉ số CMF để xác nhận, để theo dõi xu hướng. Cụ thể, khi chỉ số kênh WaveTrend dưới -60 và CMF dưới -0.2, nó đi dài. Khi chỉ số kênh WaveTrend trên 60 và CMF lớn hơn 0.2, nó đi ngắn. Các điều kiện thoát chủ yếu dựa trên chỉ số CMF - nó đóng vị trí dài khi CMF lớn hơn 0.18, và đóng vị trí ngắn khi CMF nhỏ hơn -0.18.

Phân tích lợi thế

  1. Chỉ số WaveTrend có thể xác định hiệu quả hướng xu hướng giá.
  2. Chỉ số CMF có thể xác nhận hướng xu hướng và tránh giao dịch sai.
  3. Kết hợp WaveTrend và CMF có thể đạt được xu hướng theo dõi cực ngắn hạn.
  4. Thời gian 15 phút làm cho nó phù hợp hơn cho giao dịch ngắn hạn.

Phân tích rủi ro

  1. WaveTrend có thể tạo ra các tín hiệu sai trong quá trình củng cố.
  2. CMF có thể chậm lại và bỏ lỡ các điểm chuyển hướng.
  3. Giao dịch trên khung thời gian duy nhất có rủi ro cao hơn, nên mở rộng thời gian nắm giữ.
  4. Thiếu chiến lược dừng lỗ, không thể kiểm soát lỗ duy nhất.

Giải pháp:

  1. Thêm các chỉ số khác để xác nhận để tránh tín hiệu sai.
  2. Điều chỉnh các thông số CMF để có độ nhạy cao hơn.
  3. Mở rộng thời gian giữ để giảm rủi ro trong một khung thời gian duy nhất.
  4. Thêm stop loss di chuyển, break-even stop vv để kiểm soát mất mát.

Tối ưu hóa

  1. Thêm kích thước vị trí để theo dõi xu hướng tốt hơn.
  2. Thêm chiến lược dừng lỗ để hạn chế lỗ đơn.
  3. Thêm các chỉ số như stochastics để tránh lỗi từ chỉ số duy nhất.
  4. Kiểm tra các khoảng thời gian giữ khác nhau để tìm ra tối ưu.
  5. Tối ưu hóa các thông số CMF để tìm kết hợp tốt nhất.

Tóm lại

Chiến lược này sử dụng WaveTrend để xác định xu hướng và CMF để xác nhận, để theo xu hướng cực ngắn hạn. Lợi thế của nó nằm trong sự kết hợp chỉ số hợp lý và theo xu hướng hiệu quả, với khung thời gian 15 phút làm cho nó phù hợp với giao dịch ngắn hạn.


/*backtest
start: 2023-11-08 00:00:00
end: 2023-11-15 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "CMF - WaveTrend", shorttitle = "CMF - WaveTrend", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.EUR)

//Chaikin Money Flow

len = input(20, minval=1, title="Length")
mas = input(title="Aggregation", defval="SUM", options=["SUM", "EMA", "WMA"])
e = input(10.0, title="Volume Exponent (0-10 reduces & 10+ increases volume effect)")
p = input(false, title="Show in Percentage")
mvs = input(false, "Factor in Price (Money Volume)")
src=input(hlc3, title="Source for price factor")

trl = min(low,close[1]), trh = max(high,close[1]) // 'true range' fixes issues caused by gaps in price
wv = pow(volume,e/10.0)*(mvs ? src : 1)
ad = (trh==trl ? 0 : (2*close-(trh+trl))/tr(true))*wv
cmf = mas=="SUM" ? sum(ad, len)/sum(wv, len) : mas=="EMA" ? ema(ad, len)/ema(wv, len) : mas=="WMA" ? wma(ad, len)/wma(wv, len) : na
cmf_p  = if p
    50*cmf+50
else
    cmf
b = p ? 50 : 0


//WaveTrend
n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")
 
ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
 
wt1 = tci
wt2 = sma(wt1,4)
// 


longCondition = wt1 < -60 and cmf < - 0.20
if (longCondition)
 
    strategy.entry("My Long Entry Id", strategy.long)
    
 
shortCondition = wt1 > 60 and cmf > 0.20
if (shortCondition)
 
    strategy.entry("My Short Entry Id", strategy.short)
    
closeLongCondition = cmf_p > 0.18 ? true : false
closeShortCondition = cmf_p < -0.18 ? true : false
    
    
strategy.close("My Long Entry Id", when=(closeLongCondition == true))
strategy.close("My Short Entry Id", when=(closeShortCondition == true))

Thêm nữa