Chiến lược này tạo ra tín hiệu giao dịch dựa trên ba đường trung bình động theo cấp số nhân (EMA) với các khoảng thời gian khác nhau: EMA ngắn hạn với khoảng thời gian 5 ngày, EMA trung hạn với khoảng thời gian 8 ngày và EMA dài hạn với khoảng thời gian 13 ngày. Nó đi dài khi EMA ngắn hạn vượt qua EMA trung hạn và dài hạn, và đi ngắn khi EMA ngắn hạn vượt qua EMA trung hạn và dài hạn.
Chiến lược này đánh giá xu hướng thị trường bằng cách tính toán EMA của các giai đoạn khác nhau. EMA ngắn hạn phản ánh giá trung bình của vài ngày gần đây trong khi EMA trung hạn và dài hạn phản ánh giá trung bình trong các khung thời gian dài hơn. Sự chéo chéo của EMA ngắn hạn so với EMA trung hạn và dài hạn báo hiệu sự đột phá tăng của giá, vì vậy một vị trí dài được thực hiện. Ngược lại, khi EMA ngắn hạn vượt qua dưới hai vị trí khác, nó báo hiệu sự đột phá giảm giá vì vậy một vị trí ngắn được thực hiện.
Đặc biệt, chiến lược này đồng thời tính toán EMA 5 ngày, 8 ngày và 13 ngày. Nó tạo ra tín hiệu dài khi EMA 5 ngày vượt qua EMA 8 ngày và 13 ngày; nó tạo ra tín hiệu ngắn khi EMA 5 ngày vượt qua dưới hai ngày khác. Sau khi mua dài, vị trí được đóng khi EMA 5 ngày vượt qua lại dưới EMA 13 ngày. Tương tự với vị trí ngắn.
Ý tưởng cải tiến:
Đây là một hệ thống breakout điển hình đánh giá sự đảo ngược xu hướng bằng cách so sánh chéo giữa EMA ngắn, trung và dài hạn. Sự đơn giản của nó trong việc báo hiệu tạo điều kiện giao dịch dễ dàng, nhưng cũng bị chậm trễ vốn có của EMA và không thể lọc các xu hướng thực tế khỏi sự điều chỉnh tạm thời.
/*backtest start: 2023-11-16 00:00:00 end: 2023-11-23 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © gregoirejohnb // @It is modified by ttsaadet. // Moving average crossover systems measure drift in the market. They are great strategies for time-limited people. // So, why don't more people use them? // // strategy(title="EMA Crossover Strategy", shorttitle="EMA-5-8-13 COS by TTS", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, currency=currency.TRY,commission_type=strategy.commission.percent,commission_value=0.04, process_orders_on_close = true, initial_capital = 100000) // === GENERAL INPUTS === //strategy start date start_year = input(defval=2020, title="Backtest Start Year") // === LOGIC === short_period = input(type=input.integer,defval=5,minval=1,title="Length") mid_period = input(type=input.integer,defval=8,minval=1,title="Length") long_period = input(type=input.integer,defval=13,minval=1,title="Length") longOnly = input(type=input.bool,defval=false,title="Long Only") shortEma = ema(hl2,short_period) midEma = ema(hl2,mid_period) longEma = ema(hl2,long_period) plot(shortEma,linewidth=2,color=color.red,title="Fast") plot(midEma,linewidth=2,color=color.orange,title="Fast") plot(longEma,linewidth=2,color=color.blue,title="Slow") longEntry = ((shortEma > midEma) and crossover(shortEma,longEma)) or ((shortEma > longEma) and crossover(shortEma,midEma)) shortEntry =((shortEma < midEma) and crossunder(shortEma,longEma)) or ((shortEma < longEma) and crossunder(shortEma,midEma)) plotshape(longEntry ? close : na,style=shape.triangleup,color=color.green,location=location.belowbar,size=size.small,title="Long Triangle") plotshape(shortEntry and not longOnly ? close : na,style=shape.triangledown,color=color.red,location=location.abovebar,size=size.small,title="Short Triangle") plotshape(shortEntry and longOnly ? close : na,style=shape.xcross,color=color.black,location=location.abovebar,size=size.small,title="Exit Sign") // === STRATEGY - LONG POSITION EXECUTION === enterLong() => longEntry exitLong() => crossunder(shortEma,longEma) strategy.entry(id="Long", long=strategy.long, when=enterLong()) strategy.close(id="Long", when=exitLong()) // === STRATEGY - SHORT POSITION EXECUTION === enterShort() => not longOnly and shortEntry exitShort() => crossover(shortEma,longEma) strategy.entry(id="Short", long=strategy.short, when=enterShort()) strategy.close(id="Short", when=exitShort())