3 10 Chiến lược đánh dấu hồ sơ dao động

Tác giả:ChaoZhang, Ngày: 2024-02-18 16:17:26
Tags:

img

Tổng quan

Chiến lược đánh dấu hồ sơ dao động 3 10 tạo ra tín hiệu giao dịch bằng cách tính toán sự khác biệt giữa trung bình di chuyển đơn giản 3 ngày và 10 ngày như chỉ số MACD và kết hợp phân tích khối lượng để xác định sức mạnh của người mua và người bán trên thị trường. Chiến lược cũng kết hợp xác nhận các cơ hội nhập và xuất bằng cách sử dụng các khu vực giá chính, đặc điểm khối lượng và đảo ngược chỉ số MACD.

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

Chỉ số cốt lõi của chiến lược này là MACD, bao gồm đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm. Đường nhanh là đường trung bình di chuyển đơn giản 3 ngày và đường chậm là đường trung bình di chuyển đơn giản 10 ngày. Sự khác biệt giữa chúng tạo thành biểu đồ MACD. Khi đường nhanh vượt qua đường chậm từ dưới, nó đại diện cho sức mua tăng và tạo ra tín hiệu mua. Ngược lại, khi đường nhanh vượt qua đường chậm từ trên, sức bán đang tăng và tín hiệu bán được tạo ra.

Ngoài ra, chiến lược bao gồm phân tích sức mạnh tương đối của khối lượng mua và bán dựa trên mối quan hệ kích thước giữa khối lượng mua và khối lượng bán của mỗi cây nến. Phương pháp cụ thể là: khối lượng mua = khối lượng x (Close - Low) ÷ (High - Low); khối lượng bán = khối lượng x (High - Close) ÷ (High - Low). Nếu khối lượng mua lớn hơn đáng kể khối lượng bán, điều đó có nghĩa là cây nến đóng với sức mua tương đối mạnh, đó là tín hiệu mua.

Bằng cách kết hợp chỉ số MACD và phân tích khối lượng, chiến lược có thể xác định hiệu quả mối quan hệ cung và cầu và hướng chờ đợi trên thị trường. Đồng thời, chiến lược cũng xác minh các điều kiện như liệu giá có ở một khu vực chính, liệu MACD có đảo ngược hiệu quả hay không, và liệu sự khác biệt giữa khối lượng mua và bán có đủ lớn, để lọc ra một số tiếng ồn bốc và đảm bảo khả năng và hiệu quả cao.

Phân tích lợi thế

  • Sử dụng chỉ số MACD để đánh giá hướng chờ thị trường
  • Phân tích chênh lệch khối lượng để xác định sức mạnh của người mua và người bán
  • Kiểm tra nhiều điều kiện đảm bảo khả năng hoạt động cao
  • Dùng chiến lược dừng lợi nhuận và dừng lỗ để kiểm soát rủi ro

Lợi thế lớn nhất của chiến lược này là nó kết hợp hoàn toàn phán đoán về mối quan hệ cung và cầu trên thị trường. Biểu đồ MACD có thể xác định hiệu quả sự tương phản giữa sức mua và sức bán và hướng đang chờ trong thị trường; phân tích chênh lệch khối lượng có thể xác định rõ ràng sức mạnh thống trị giữa người mua và người bán. Đồng thời, chiến lược đặt nhiều điều kiện để xem xét để tránh theo đuổi tăng và đánh bại giảm, đảm bảo xác suất lợi nhuận tương đối cao. Ngoài ra, cơ chế dừng lợi nhuận và dừng lỗ tích hợp của chiến lược cũng có thể hạn chế lỗ đơn lẻ.

Phân tích rủi ro

  • Rủi ro thất bại của MACD: Khi thị trường biến động hoặc củng cố theo một mô hình phẳng, MACD có thể tạo ra các tín hiệu sai.
  • Rủi ro thất bại khối lượng: Có thể có thao túng thị trường để tăng khối lượng giao dịch, làm giảm độ chính xác của phân tích khối lượng.
  • Khó khăn trong tối ưu hóa tham số. Chiến lược chứa nhiều tham số khó tối ưu hóa, khiến nó không phù hợp với các nhà đầu tư có khả năng điều chỉnh tham số tương đối yếu.

Các rủi ro trên có thể được tránh bằng cách: xác định chính xác xu hướng chính của thị trường để tránh sử dụng chiến lược này trong thời gian biến động thị trường; chú ý đến thông tin thị trường để xác định khối lượng giao dịch bị thổi phồng nhân tạo; điều chỉnh các tham số một cách cẩn thận hoặc tìm lời khuyên từ các chuyên gia.

Hướng dẫn tối ưu hóa

Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  • Sử dụng các chỉ số như KD, Bollinger Bands vv để thay thế hoặc hỗ trợ MACD và cải thiện độ chính xác phán đoán
  • Thêm các cơ chế quản lý vị trí để điều chỉnh tham số động
  • Tối ưu hóa điểm dừng lợi nhuận và dừng lỗ cho lợi nhuận đơn cao hơn
  • Chạy trên nhiều khung thời gian để cải thiện sự ổn định

Tóm lại, có thể thấy rằng có rất nhiều không gian để tối ưu hóa chiến lược này. Các nhà đầu tư có thể thực hiện các điều chỉnh và cải tiến thích hợp theo hoàn cảnh và điều kiện thị trường của riêng họ để đạt được hiệu quả chiến lược tốt hơn.

Tóm lại

Chiến lược đánh dấu hồ sơ dao động 3 10 tích hợp thành công các ý tưởng phân tích MACD, so sánh khối lượng và xác minh lọc đa điều kiện. Nó có khả năng mạnh mẽ trong việc xác định mối quan hệ cung-nhu cầu và hướng chờ thị trường, đồng thời kiểm soát rủi ro thông qua các cơ chế dừng lợi nhuận và dừng lỗ tích hợp. Chiến lược có không gian tối ưu hóa lớn và triển vọng ứng dụng rộng đáng được xem xét và nghiên cứu sâu sắc cho các nhà đầu tư.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

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)
takeProfit = input( title="Take Profit", defval=0.75)
stopLoss = input( title="Stop Loss", defval=0.5)

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(macdSlope, color=color.red, title="Total Volume")
//plot(signalSlope, color=color.green, title="Total Volume")
intrabarRange = high - low

getLookBackSlope(lookBack) => signal - signal[lookBack]
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
    float s = 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 - signalBiasValue )
            j += 1
    j

getSignalNoBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] < signalBiasValue and signal[i] > ( 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 and signalSlope[1] > 0
bool isNegativeMacdReversal = macdSlope < 0 and macdSlope[1] > 0

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

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

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

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

bool hasPositiveMACDBias = macd > macdBiasValue
bool hasNegativeMACDBias = macd < ( 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 )

// 7.48 Profit 52.5% 
if ( hasSignificantBuyerVolBias and getPriceRising(shortLookBack) == shortLookBack  and getBuyerVolBias(shortLookBack) == shortLookBack and hasPositiveMACDBias and hasBullInversion)
    strategy.entry("Short1", strategy.short, qty=10)
strategy.exit("TPS", "Short1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)

// 32.53 Profit 47.91%
if ( getPriceFalling(shortLookBack) and (getVolBias(shortLookBack) == false) and signalSlope < 0 and hasSignalSellerBias)
    strategy.entry("Long1", strategy.long, qty=10)
strategy.exit("TPS", "Long1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

Thêm nữa