Chiến lược lọc giao thoa MA của sao Mộc và sao Thổ


Ngày tạo: 2023-11-03 16:13:20 sửa đổi lần cuối: 2023-11-03 16:13:20
sao chép: 0 Số nhấp chuột: 655
1
tập trung vào
1617
Người theo dõi

Chiến lược lọc giao thoa MA của sao Mộc và sao Thổ

Tổng quan

Chiến lược này sử dụng chéo của hai đường trung bình di chuyển như một tín hiệu giao dịch và lọc kết hợp với chỉ số BB và chỉ số năng lượng động tùy chỉnh để tăng độ tin cậy của tín hiệu chéo MA và giảm tín hiệu giả.

Nguyên tắc

  1. Sử dụng 50 chu kỳ EMA và 200 chu kỳ SMA để tạo ra tín hiệu giao thoa chết.

  2. Khi giá đang tăng, yêu cầu giá cao hơn đường 200 ngày và giá trị chỉ số năng lượng động tùy chỉnh nhỏ hơn 25 để tạo ra tín hiệu mua.

  3. Khi giá đang trong xu hướng giảm, yêu cầu giá thấp hơn đường 200 ngày và giá trị chỉ số năng lượng động tùy chỉnh lớn hơn 75 để tạo ra tín hiệu bán.

  4. Chỉ số năng lượng động tùy chỉnh được lập bản đồ theo khoảng cách giữa đường BB và đường ray lên xuống trong phạm vi 0-100.

  5. Chỉ số động lực có thể thể hiện thông tin vị trí của giá tương đối với bước sóng, thiết lập giá trị thềm để lọc, có thể giảm hiệu quả giao chéo giả.

Phân tích lợi thế

  1. Sử dụng lợi thế của EMA và SMA để nắm bắt xu hướng đường dài và đường trung.

  2. Tăng chỉ số động lực để lọc, độ tin cậy cao hơn, giảm tín hiệu giả.

  3. Khoảng cách trên và dưới đường ray BB phản ánh cường độ dao động, kết hợp với thống kê ngược để xử lý tiêu chuẩn hóa, tránh phụ thuộc vào tham số.

  4. Có thể tùy chỉnh chu kỳ EMA và SMA và giá trị giá trị động lực, thích ứng với môi trường thị trường khác nhau.

  5. Chiến lược của nó rất rõ ràng, dễ hiểu, có thể điều chỉnh các tham số, và rất thực tế.

Phân tích rủi ro

  1. EMA và SMA có thể bị tụt hậu và bỏ lỡ cơ hội rút ngắn.

  2. Tuy nhiên, trong một số trường hợp, nó có thể được sử dụng để xác định các biến động trong một thời gian dài.

  3. Điểm mốc chỉ số năng lượng động cần được đánh giá lại nhiều lần để xác định các tham số phù hợp, có nguy cơ tối ưu hóa đường cong.

  4. Chiến lược đường trung bình chu kỳ lớn, thu nhập tương đối ổn định nhưng thu nhập tuyệt đối có thể hạn chế.

  5. Có thể giảm chu kỳ trung bình khi thích hợp, hoặc thêm các chỉ số hỗ trợ phán đoán khác để cải thiện khả năng thích ứng của chiến lược.

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

  1. Kiểm tra các kết hợp khác nhau để tìm tham số tối ưu.

  2. Thêm các đánh giá phụ trợ khác như MACD, KD.

  3. Tối ưu hóa các tham số của chỉ số năng lượng động học, chẳng hạn như chu kỳ quay ngược, phạm vi bản đồ.

  4. Thêm các biện pháp ngăn chặn để kiểm soát rủi ro.

  5. Các tham số của các giống khác nhau không nhất quán, có thể xem xét sử dụng tính năng học máy để trích xuất.

  6. Thêm chỉ số năng lượng, tránh tín hiệu chéo không hợp lý.

Tóm tắt

Chiến lược này tích hợp theo dõi xu hướng chu kỳ và tùy chỉnh các chỉ số năng lượng có hai bộ lọc, có độ tin cậy cao, có giá trị thực tế cao. Bằng cách tối ưu hóa tham số và tăng cường các chỉ số kỹ thuật hỗ trợ, có thể đạt được hiệu suất tốt hơn.

Mã nguồn chiến lược
/*backtest
start: 2023-10-26 00:00:00
end: 2023-10-27 13:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="EMA Difference Mapping with Trades", shorttitle="EMA Diff Map", overlay=false)

// Inputs
emaLength = input(20, "EMA Length")
stdDevLength = input(2, "Standard Deviation Length")
priceSource = close
takeProfitPoints = input(1000, title="Take Profit (in Points)")
stopLossPoints = input(2500, title="Stop Loss (in Points)")

// Calculate EMA
ema = ema(priceSource, emaLength)

// Calculate Standard Deviation
stdDev = stdev(priceSource, stdDevLength)

// Calculate differences
diff1 = (ema + stdDev) - ema
diff2 = ema - (ema - stdDev)

// Calculate min and max differences from last year
lookbackPeriod = 504 // Number of trading days in a year
minDiff1 = lowest(diff1, lookbackPeriod)
maxDiff1 = highest(diff1, lookbackPeriod)
minDiff2 = lowest(diff2, lookbackPeriod)
maxDiff2 = highest(diff2, lookbackPeriod)

// Map differences based on requirements
mappedDiff1 = 50 + 50 * ((diff1 - minDiff1) / (maxDiff1 - minDiff1))
mappedDiff2 = 50 - 50 * ((diff2 - minDiff2) / (maxDiff2 - minDiff2))

// Combine mapped differences into a single line
mappedLine = if close > ema
    mappedDiff1
else
    mappedDiff2

// Plot 'mappedLine' in the main chart area conditionally
plot(mappedLine, title="EMA Difference Mapping", color=(close > ema ? color.blue : na), style=plot.style_line, linewidth=2)

// Calculate the 50EMA and 200SMA
ema50 = ema(close, 50)
sma200 = sma(close, 200)

// Plot the 50EMA and 200SMA on the main chart
plot(ema50, color=color.blue, title="50 SMA", linewidth=2)
plot(sma200, color=color.red, title="200 SMA", linewidth=2)

// Initialize trade variables
var bool waitingForBuy = na
var bool waitingForSell = na
var bool buyConditionMet = false
var bool sellConditionMet = false

if not sellConditionMet and crossunder(ema50, sma200)
    sellConditionMet := true
    waitingForBuy := false

if sellConditionMet 
    waitingForSell := true
    sellConditionMet := false

if waitingForSell and close < sma200 and mappedLine > 75
    strategy.entry("Sell", strategy.short)
    strategy.exit("Sell Exit", "Sell", profit=takeProfitPoints, loss=stopLossPoints)
    waitingForSell := false

// Define the strategy conditions and execute trades
if not buyConditionMet  and crossover(ema50, sma200)
    buyConditionMet := true
    waitingForSell := false

if buyConditionMet 
    waitingForBuy := true
    buyConditionMet := false

if waitingForBuy and close > sma200 and mappedLine < 25
    strategy.entry("Buy", strategy.long)
    strategy.exit("Buy Exit", "Buy", profit=takeProfitPoints, loss=stopLossPoints)
    waitingForBuy := false