Chiến lược đảo ngược chéo trục số MACD nhiều chu kỳ thời gian

Tác giả:ChaoZhang, Ngày: 2024-02-18 15:27:21
Tags:

多时间周期MACD零轴交叉反转策略

Thông tin chi tiết

Chiến lược đảo ngược chéo MACD đa chu kỳ bằng cách tính toán các chỉ số MACD trong các chu kỳ khác nhau, nhận ra các tín hiệu có thể đảo ngược giá, sử dụng phương pháp theo dõi xu hướng dừng lỗ, theo đuổi hiệu quả sử dụng vốn cao hơn.

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

Chiến lược này tính toán trung bình di chuyển SMA 3 chu kỳ và 10 chu kỳ cùng một lúc, xây dựng đường chậm nhanh, và tính toán lại chỉ số MACD và đường tín hiệu. Khi đường nhanh và đường tín hiệu xảy ra giao thoa trục không lên hoặc xuống, báo hiệu rằng giá đạt đến điểm quan trọng và có thể có sự đảo ngược. Ngoài ra, chiến lược này cũng kết hợp với các đánh giá tình trạng không gian nhiều giao dịch, chỉ số RSI, vv, để xác định độ tin cậy của tín hiệu đảo ngược.

Đặc biệt, chiến lược đảo ngược giá bằng cách sử dụng các phương pháp sau: 1. MACD đường chéo, cho thấy giá đã đạt đến điểm quan trọng
2. Đánh giá áp lực mua bán trong giao dịch
3. Chỉ số RSI xem động lực giảm, kết hợp với sự thay đổi độ nghiêng MACD, để đánh giá cường độ tín hiệu đảo ngược
4. Các đường dây nhanh và đường tín hiệu ngược nhau, tạo ra tín hiệu đảo ngược

Khi tín hiệu đảo ngược có độ tin cậy cao, chiến lược sử dụng phương pháp theo dõi xu hướng để tìm kiếm lợi nhuận cao hơn.

Phân tích ưu thế

Một số người cho rằng chiến lược này có một số lợi thế:

  1. Phân tích nhiều chỉ số để làm cho tín hiệu đảo ngược đáng tin cậy hơn
  2. Phân tích điểm đảo ngược với độ chính xác cao hơn bằng cách sử dụng MACD.
  3. Chỉ số RSI và quyết định hỗ trợ giao dịch, đáng tin cậy cao
  4. Xu hướng theo dõi phương pháp dừng lỗ, theo đuổi hiệu quả sử dụng vốn cao hơn

Phân tích rủi ro

Một số người cho rằng chiến lược này cũng có một số rủi ro:

  1. Các chỉ số MACD có khả năng phát ra tín hiệu sai và dễ bị lừa
  2. Trong quá trình thay thế nhiều không gian, tổn thất dừng có nhiều khả năng bị phá vỡ
  3. Thiết lập tham số không đúng có thể dẫn đến giao dịch quá thường xuyên, tăng chi phí giao dịch và mất điểm trượt

Bạn có thể giảm rủi ro bằng cách: 1. Phong cách thích hợp để nới lỏng mức dừng để tránh bị bóp
2. Tối ưu hóa các tham số, giảm tần suất giao dịch
3. Chỉ xem xét vào gần các điểm kháng cự hỗ trợ quan trọng

Định hướng tối ưu

Các phương pháp tối ưu hóa khác của chiến lược bao gồm:

  1. Thêm các thuật toán học máy để giúp đánh giá độ tin cậy của tín hiệu đảo ngược
  2. Tăng các chỉ số cảm xúc để đánh giá nhiều khoảng trống tâm lý
  3. Kết hợp với các vị trí kháng cự hỗ trợ quan trọng, tăng độ chính xác vào
  4. Tối ưu hóa cách ngăn chặn lỗ và tăng hiệu quả sử dụng vốn
  5. Kiểm tra sự kết hợp tốt nhất của các tham số, giảm tần suất giao dịch

Tóm lại

Chiến lược đảo ngược chéo MACD đa chu kỳ, tích hợp thông tin từ nhiều khía cạnh như giá cả, giao dịch hoàn thành và chỉ số biến động, xác định thời điểm quay trở lại, dừng lỗ kịp thời sau khi lợi nhuận đầy đủ, có thể thu được lợi nhuận tốt hơn trong thị trường đảo ngược. Chiến lược này có thể được cải thiện hơn nữa thông qua các phương pháp học máy và tối ưu hóa điểm quan trọng để giảm tần suất giao dịch và rủi ro, tăng khoảng cách lợi nhuận.


/*backtest
start: 2023-02-11 00:00:00
end: 2024-02-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("3 10.0 Oscillator Profile Flagging", shorttitle="3 10.0 Oscillator Profile Flagging", overlay=false)

signalBiasValue = input(title="Signal Bias", defval=0.26)
macdBiasValue = input(title="MACD Bias", defval=0.8)
shortLookBack = input( title="Short LookBack", defval=3)
longLookBack = input( title="Long LookBack", defval=10.0)
takeProfit = input( title="Take Profit", defval=0.8)
stopLoss = input( title="Stop Loss", defval=0.75)

fast_ma = ta.sma(close, 3)
slow_ma = ta.sma(close, 10)
macd = fast_ma - slow_ma
signal = ta.sma(macd, 16)
hline(0, "Zero Line", color = color.black)

buyVolume = volume*((close-low)/(high-low))
sellVolume = volume*((high-close)/(high-low))
buyVolSlope = buyVolume - buyVolume[1]
sellVolSlope = sellVolume - sellVolume[1]
signalSlope = ( signal - signal[1] )
macdSlope = ( macd - macd[1] )
plot(macd, color=color.blue, title="Total Volume")
plot(signal, color=color.orange, title="Total Volume")
intrabarRange = high - low
rsi = ta.rsi(close, 14)
rsiSlope = rsi - rsi[1]

getRSISlopeChange(lookBack) =>
    j = 0
    for i = 0 to lookBack
        if ( rsi[i] - rsi[ i + 1 ] ) > -5
            j += 1
    j

getBuyerVolBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if buyVolume[i] > sellVolume[i]
            j += 1
    j

getSellerVolBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if sellVolume[i] > buyVolume[i]
            j += 1
    j

getVolBias(lookBack) =>
    float b = 0.0
    float s = 0.0
    for i = 1 to lookBack
        b += buyVolume[i]
        s += sellVolume[i]
    b > s

getSignalBuyerBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] > signalBiasValue
            j += 1
    j

getSignalSellerBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] < ( 0.0 - signalBiasValue )
            j += 1
    j

getSignalNoBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] < signalBiasValue and signal[i] > ( 0.0 - signalBiasValue )
            j += 1
    j

getPriceRising(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if close[i] > close[i + 1]
            j += 1
    j


getPriceFalling(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if close[i] < close[i + 1] 
            j += 1
    j

getRangeNarrowing(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if intrabarRange[i] < intrabarRange[i + 1] 
            j+= 1
    j

getRangeBroadening(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if intrabarRange[i] > intrabarRange[i + 1] 
            j+= 1
    j

bool isNegativeSignalReversal = signalSlope < 0.0 and signalSlope[1] > 0.0
bool isNegativeMacdReversal = macdSlope < 0.0 and macdSlope[1] > 0.0

bool isPositiveSignalReversal = signalSlope > 0.0 and signalSlope[1] < 0.0
bool isPositiveMacdReversal = macdSlope > 0.0 and macdSlope[1] < 0.0

bool hasBearInversion = signalSlope > 0.0 and macdSlope < 0.0
bool hasBullInversion = signalSlope < 0.0 and macdSlope > 0.0

bool hasSignalBias = math.abs(signal) >= signalBiasValue
bool hasNoSignalBias = signal < signalBiasValue and signal > ( 0.0 - signalBiasValue )

bool hasSignalBuyerBias = hasSignalBias and signal > 0.0
bool hasSignalSellerBias = hasSignalBias and signal < 0.0

bool hasPositiveMACDBias = macd > macdBiasValue
bool hasNegativeMACDBias = macd < ( 0.0 - macdBiasValue )

bool hasBullAntiPattern = ta.crossunder(macd, signal)
bool hasBearAntiPattern = ta.crossover(macd, signal)

bool hasSignificantBuyerVolBias = buyVolume > ( sellVolume * 1.5 )
bool hasSignificantSellerVolBias = sellVolume > ( buyVolume * 1.5 )

// 393.60 Profit 52.26% 15m
if ( hasBullInversion and rsiSlope > 1.5 and volume > 300000.0 )
    strategy.entry("15C1", strategy.long, qty=10.0)
strategy.exit("TPS", "15C1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 356.10 Profit 51,45% 15m
if ( getVolBias(shortLookBack) == false and rsiSlope > 3.0 and signalSlope > 0)
    strategy.entry("15C2", strategy.long, qty=10.0)
strategy.exit("TPS", "15C2", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 124 Profit 52% 15m
if ( rsiSlope < -11.25 and macdSlope < 0.0 and signalSlope < 0.0)
    strategy.entry("15P1", strategy.short, qty=10.0)
strategy.exit("TPS", "15P1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)

// 455.40 Profit 49% 15m
if ( math.abs(math.abs(macd) - math.abs(signal)) < .1 and buyVolume > sellVolume and hasBullInversion)
    strategy.entry("15P2", strategy.short, qty=10.0)
strategy.exit("TPS", "15P2", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)

Nhiều hơn nữa