3 10 Chiến lược đánh dấu đường viền dao động


Ngày tạo: 2024-02-18 16:17:26 sửa đổi lần cuối: 2024-02-18 16:17:26
sao chép: 0 Số nhấp chuột: 750
1
tập trung vào
1617
Người theo dõi

3 10 Chiến lược đánh dấu đường viền dao động

Tổng quan

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

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

Chỉ số trung tâm của chiến lược này là MACD, nó bao gồm một đường trung bình di chuyển nhanh và một đườ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ự chênh lệch giữa chúng tạo thành đường trụ MACD.

Ngoài ra, chiến lược này kết hợp số lượng giao dịch mua và số lượng giao dịch bán của mỗi dòng K với mối quan hệ lớn của số lượng giao dịch mua và bán, để đánh giá mức độ tương đối mạnh của thị trường. Cách cụ thể là: số lượng mua = số lượng giao dịch x (giá đóng cửa - giá thấp nhất) ÷ (giá cao nhất - giá thấp nhất); số lượng bán = số lượng giao dịch x (giá cao nhất - giá đóng cửa) ÷ (giá cao nhất - giá thấp nhất).

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

Phân tích lợi thế

  • Sử dụng chỉ số MACD để xác định xu hướng của thị trường
  • Phân tích chênh lệch khối lượng giao dịch cho thấy thị trường mua và bán mạnh mẽ
  • Chọn nhiều điều kiện để đảm bảo hoạt động có xác suất cao
  • Sử dụng chiến lược 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à kết hợp đầy đủ các mối quan hệ cung cầu của thị trường. Đường MACD có thể xác định hiệu quả sự tương phản giữa các lực lượng mua và bán và xu hướng của thị trường; Phân tích chênh lệch khối lượng giao dịch có thể xác định rõ ràng các lực lượng thống trị trong các thị trường. Đồng thời, chiến lược thiết lập nhiều điều kiện để kiểm tra, tránh theo đuổi đà giảm, đảm bảo khả năng kiếm lợi nhuận cao hơn. Ngoài ra, cơ chế dừng lỗ trong chiến lược cũng có thể hạn chế tổn thất đơn lẻ.

Phân tích rủi ro

  • Rủi ro thất bại của MACD. MACD có thể tạo ra tín hiệu giả khi thị trường bị dao động hoặc gạch ngang.
  • Rủi ro thất bại về khối lượng giao dịch. Thị trường có thể có hiện tượng kéo khối lượng giao dịch lên, khi đó độ chính xác của phân tích khối lượng giao dịch sẽ giảm.
  • Các tham số tối ưu hóa rất khó. Chiến lược này bao gồm nhiều tham số, rất khó để tối ưu hóa và không phù hợp với các nhà đầu tư có khả năng điều chỉnh tham số yếu.

Những rủi ro trên có thể được tránh bằng cách: đánh giá chính xác xu hướng thị trường chính, tránh sử dụng chiến lược này trong các trạm rung động; chú ý đến thông tin thị trường, xác định khi khối lượng giao dịch được nâng lên; điều chỉnh các tham số một cách thận trọng, có thể lấy lời khuyên từ các cơ quan chuyên môn.

Hướng tối ưu hóa

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

  • Sử dụng các chỉ số như KD, Brinband thay thế hoặc cộng tác với MACD để cải thiện độ chính xác phán đoán
  • Thêm cơ chế quản lý vị trí để thay đổi các tham số chiến lược
  • Tối ưu hóa điểm dừng lỗ để đạt được lợi nhuận cao hơn
  • Hoạt động trong nhiều chu kỳ thời gian, tăng sự ổn định

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

Tóm tắt

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

Mã nguồn chiến lược
/*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)