
Chiến lược này kết hợp hai EMA Gold Cross, bộ lọc tiếng ồn ATR tiêu chuẩn và chỉ số xu hướng ADX để cung cấp cho các nhà giao dịch tín hiệu mua đáng tin cậy hơn. Chiến lược này tổng hợp nhiều chỉ số để lọc các tín hiệu giả mạo và xác định các cơ hội giao dịch đáng tin cậy hơn.
Chiến lược này sử dụng EMA 8 chu kỳ và 20 chu kỳ để xây dựng hệ thống chéo vàng EMA kép. Khi EMA chu kỳ ngắn vượt qua EMA chu kỳ dài, nó sẽ tạo ra tín hiệu mua.
Ngoài ra, chiến lược cũng có một số chỉ số phụ để lọc:
14 chu kỳ ATR, sau khi xử lý tiêu chuẩn hóa, lọc các biến động giá quá nhỏ trên thị trường.
14 chu kỳ ADX, được sử dụng để xác định cường độ của xu hướng. Chỉ xem xét tín hiệu giao dịch trong xu hướng mạnh.
14 chu kỳ giao dịch SMA, lọc các thời điểm giao dịch nhỏ hơn.
Chỉ số Super Trend chu kỳ 4⁄14, đánh giá xu hướng thị trường đa chiều.
Chỉ sau khi đáp ứng các điều kiện về hướng xu hướng, ATR, ADX và khối lượng giao dịch, EMA Gold Cross sẽ kích hoạt tín hiệu mua.
Chiến lược này tích hợp nhiều chỉ số như EMA, ATR, ADX, Super Trend, tạo ra một hệ thống lọc tín hiệu mạnh mẽ và độ tin cậy cao thông qua các chỉ số bổ sung.
Các tham số như ATR, ADX và thời gian giữ vị trí có thể được điều chỉnh theo tình hình thực tế.
Sử dụng các tiêu chuẩn tham số khác nhau để đánh giá thị trường trống bằng chỉ số Super Trend để tránh bỏ lỡ cơ hội.
Các tham số chiến lược rất phức tạp, rất khó để tối ưu hóa và cần nhiều phản hồi để tìm các tham số tối ưu.
Mặc dù có nhiều bộ lọc, nhưng do tính chất của chỉ số bị tụt hậu, vẫn có nguy cơ kích hoạt sai. Cần cân nhắc đầy đủ lý thuyết dừng lỗ.
Do bị ảnh hưởng bởi nhiều chỉ số và các đợt sóng, tần suất giao dịch chiến lược sẽ thấp hơn và có thể không có giao dịch trong thời gian dài.
Tìm ra sự kết hợp tối ưu của các tham số chỉ số thông qua dữ liệu phản hồi lớn.
Dựa trên một lượng lớn dữ liệu lịch sử, các thuật toán học máy được sử dụng để tự động tối ưu hóa các tham số chiến lược, để thực hiện khả năng thích ứng của chiến lược.
Nó kết hợp nhiều chỉ số để đánh giá cấu trúc thị trường, cảm xúc và nhiều yếu tố khác nhau để làm phong phú thêm các chiến lược.
Chiến lược tổng hợp này xem xét các yếu tố xu hướng, biến động và giá trị, tạo thành hệ thống giao dịch thông qua lọc đa chỉ số và điều chỉnh tham số. Về tổng hợp, chiến lược này có độ tin cậy cao, có thể nâng cao hiệu quả giao dịch của chiến lược bằng cách tối ưu hóa thêm các tham số và mô hình của nó.
/*backtest
start: 2023-11-29 00:00:00
end: 2023-12-06 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Description:
//This strategy is a refactored version of an EMA cross strategy with a normalized ATR filter and ADX control.
//It aims to provide traders with signals for long positions based on market conditions defined by various indicators.
//How it Works:
//1. EMA: Uses short (8 periods) and long (20 periods) EMAs to identify crossovers.
//2. ATR: Uses a 14-period ATR, normalized to its 20-period historical range, to filter out noise.
//3. ADX: Uses a 14-period RMA to identify strong trends.
//4. Volume: Filters trades based on a 14-period SMA of volume.
//5. Super Trend: Uses a Super Trend indicator to identify the market direction.
//How to Use:
//- Buy Signal: Generated when EMA short crosses above EMA long, and other conditions like ATR and market direction are met.
//- Sell Signal: Generated based on EMA crossunder and high ADX value.
//Originality and Usefulness:
//This script combines EMA, ATR, ADX, and Super Trend indicators to filter out false signals and identify more reliable trading opportunities.
//USD Strength is not working, just simulated it as PSEUDO CODE: [close>EMA(50)]
//Strategy Results:
//- Account Size: $1000
//- Commission: Not considered
//- Slippage: Not considered
//- Risk: Less than 5% per trade
//- Dataset: Aim for more than 100 trades for sufficient sample size
//Note: This script should be used for educational purposes and should not be considered as financial advice.
//Chart:
//- The script's output is plotted as Buy and Sell signals on the chart.
//- No other scripts are included for clarity.
//- Have tested with 30mins period
//- You are encouraged to play with parameters, let me know if you
//@version=5
strategy("Advanced EMA Cross with Normalized ATR Filter, Controlling ADX", shorttitle="ALP V5", overlay=true )
// Initialize variables
var bool hasBought = false
var int barCountSinceBuy = 0
// Define EMA periods
emaShort = ta.ema(close, 8)
emaLong = ta.ema(close, 20)
// Define ATR parameters
atrLength = 14
atrValue = ta.atr(atrLength)
maxHistoricalATR = ta.highest(atrValue, 20)
minHistoricalATR = ta.lowest(atrValue, 20)
normalizedATR = (atrValue - minHistoricalATR) / (maxHistoricalATR - minHistoricalATR)
// Define ADX parameters
adxValue = ta.rma(close, 14)
adxHighLevel = 30
isADXHigh = adxValue > adxHighLevel
// Initialize risk management variables
var float stopLossPercent = na
var float takeProfitPercent = na
// Calculate USD strength
// That's not working as usd strenght, since I couldn't manage to get usd strength
//I've just simulated it as if the current close price is above 50 days average (it's likely a bullish trend), usd is strong (usd_strenth variable is positive)
usd_strength = close / ta.ema(close, 50) - 1
// Adjust risk parameters based on USD strength
if (usd_strength > 0)
stopLossPercent := 3
takeProfitPercent := 6
else
stopLossPercent := 4
takeProfitPercent := 8
// Initialize position variable
var float positionPrice = na
// Volume filter
minVolume = ta.sma(volume, 14) * 1.5
isVolumeHigh = volume > minVolume
// Market direction using Super Trend indicator
[supertrendValue, supertrendDirection] = ta.supertrend(4, 14)
bool isBullMarket = supertrendDirection < 0
bool isBearMarket = supertrendDirection > 0
// Buy conditions for Bull and Bear markets
buyConditionBull = isBullMarket and ta.crossover(emaShort, emaLong) and normalizedATR > 0.2
buyConditionBear = isBearMarket and ta.crossover(emaShort, emaLong) and normalizedATR > 0.5
buyCondition = buyConditionBull or buyConditionBear
// Sell conditions for Bull and Bear markets
sellConditionBull = isBullMarket and (ta.crossunder(emaShort, emaLong) or isADXHigh)
sellConditionBear = isBearMarket and (ta.crossunder(emaShort, emaLong) or isADXHigh)
sellCondition = sellConditionBull or sellConditionBear
// Final Buy and Sell conditions
if (buyCondition)
strategy.entry("Buy", strategy.long)
positionPrice := close
hasBought := true
barCountSinceBuy := 0
if (hasBought)
barCountSinceBuy := barCountSinceBuy + 1
// Stop-loss and take-profit levels
longStopLoss = positionPrice * (1 - stopLossPercent / 100)
longTakeProfit = positionPrice * (1 + takeProfitPercent / 100)
// Final Sell condition
finalSellCondition = sellCondition and hasBought and barCountSinceBuy >= 3 and isVolumeHigh
if (finalSellCondition)
strategy.close("Buy")
positionPrice := na
hasBought := false
barCountSinceBuy := 0
// Implement stop-loss and take-profit
strategy.exit("Stop Loss", "Buy", stop=longStopLoss)
strategy.exit("Take Profit", "Buy", limit=longTakeProfit)
// Plot signals
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=finalSellCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")