Эта стратегия является количественной торговой системой, основанной на многочисленных перекрестных экспоненциальных скользящих средних (EMA). Она создает полную структуру торговли, следующую за трендом, используя три EMA: 9-дневные, 21-дневные и 200-дневные. Стратегия определяет рыночные тенденции и выполняет сделки путем анализа перекрестных связей между быстрыми и медленными EMA и их позициями относительно долгосрочной EMA.
Основная логика вращается вокруг тройного EMA кроссоверов для захвата рыночных тенденций.
Это хорошо продуманная стратегия с четкой логикой. Благодаря координации нескольких EMA она эффективно отслеживает рыночные тенденции при сохранении хорошего контроля рисков. Стратегия имеет значительный потенциал оптимизации, а ее стабильность и рентабельность могут быть дополнительно повышены за счет постоянных улучшений.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("EMA Cross with both MinhTuan", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10) // Tham số EMA fastLength = input.int(9, title="Fast EMA Length", minval=1) slowLength = input.int(21, title="Slow EMA Length", minval=1) filterLength = input.int(200, title="EMA Filter Length", minval=1) // Tùy chọn chế độ giao dịch tradeMode = input.string("Both", options=["Long", "Short", "Both"], title="Trade Mode") // Tính toán EMA fastEMA = ta.ema(close, fastLength) slowEMA = ta.ema(close, slowLength) filterEMA = ta.ema(close, filterLength) // Điều kiện vào lệnh Long: EMA nhanh cắt lên EMA chậm và cả hai nằm trên EMA 200 longCondition = ta.crossover(fastEMA, slowEMA) and fastEMA > filterEMA and slowEMA > filterEMA // Điều kiện vào lệnh Short: EMA nhanh cắt xuống EMA chậm và cả hai nằm dưới EMA 200 shortCondition = ta.crossunder(fastEMA, slowEMA) and fastEMA < filterEMA and slowEMA < filterEMA // Điều kiện thoát lệnh: EMA nhanh cắt ngược lại EMA chậm closeLongCondition = ta.crossunder(fastEMA, slowEMA) // Thoát lệnh Long closeShortCondition = ta.crossover(fastEMA, slowEMA) // Thoát lệnh Short // Thực hiện lệnh Long if (longCondition and (tradeMode == "Long" or tradeMode == "Both")) strategy.entry("EMA_Cross_Long", strategy.long) label.new(x=bar_index, y=low, text="Long", color=color.green, textcolor=color.white, size=size.small) // Thực hiện lệnh Short if (shortCondition and (tradeMode == "Short" or tradeMode == "Both")) strategy.entry("EMA_Cross_Short", strategy.short) label.new(x=bar_index, y=high, text="Short", color=color.red, textcolor=color.white, size=size.small) // Thoát lệnh Long if (closeLongCondition) strategy.close("EMA_Cross_Long") label.new(x=bar_index, y=high, text="Close Long", color=color.orange, textcolor=color.white, size=size.small) // Thoát lệnh Short if (closeShortCondition) strategy.close("EMA_Cross_Short") label.new(x=bar_index, y=low, text="Close Short", color=color.blue, textcolor=color.white, size=size.small) // Vẽ đường EMA nhanh, EMA chậm, và EMA 200 plot(fastEMA, title="Fast EMA", color=color.blue, linewidth=2) plot(slowEMA, title="Slow EMA", color=color.orange, linewidth=2) plot(filterEMA, title="Filter EMA (200)", color=color.red, linewidth=2) // Hiển thị nền khi đang giữ lệnh bgcolor(strategy.position_size > 0 ? color.new(color.green, 90) : strategy.position_size < 0 ? color.new(color.red, 90) : na)