
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ả.
Sử dụng 50 chu kỳ EMA và 200 chu kỳ SMA để tạo ra tín hiệu giao thoa chết.
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.
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.
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.
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ả.
Sử dụng lợi thế của EMA và SMA để nắm bắt xu hướng đường dài và đường trung.
Tăng chỉ số động lực để lọc, độ tin cậy cao hơn, giảm tín hiệu giả.
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ố.
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.
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ế.
EMA và SMA có thể bị tụt hậu và bỏ lỡ cơ hội rút ngắn.
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.
Đ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.
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ế.
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.
Kiểm tra các kết hợp khác nhau để tìm tham số tối ưu.
Thêm các đánh giá phụ trợ khác như MACD, KD.
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 đồ.
Thêm các biện pháp ngăn chặn để kiểm soát rủi ro.
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.
Thêm chỉ số năng lượng, tránh tín hiệu chéo không hợp lý.
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.
/*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