
Chiến lược này tạo ra tín hiệu giao dịch dựa trên trung bình di chuyển chỉ số (EMA) của ba chu kỳ khác nhau trong ngắn hạn, trung hạn và dài hạn. Trong đó, chu kỳ EMA ngắn hạn là 5 ngày, chu kỳ EMA trung hạn là 8 ngày và chu kỳ EMA dài hạn là 13 ngày. Khi EMA ngắn hạn vượt qua EMA trung hạn và dài hạn, hãy làm nhiều hơn; Khi EMA ngắn hạn vượt qua EMA trung hạn và dài hạn, hãy làm trống.
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 chu kỳ khác nhau. EMA ngắn hạn phản ánh giá trung bình trong vài ngày gần đây và EMA trung hạn phản ánh giá trung bình trong một thời gian dài hơn. EMA ngắn hạn trên EMA trung hạn đại diện cho giá bắt đầu phá vỡ lên, do đó làm nhiều hơn; EMA ngắn hạn dưới EMA trung hạn đại diện cho giá bắt đầu phá vỡ xuống, do đó làm trống.
Cụ thể, chiến lược này đồng thời tính ba EMA trong 5 ngày, 8 ngày và 13 ngày. Khi 5 ngày trên EMA đi qua 8 ngày và 13 ngày trên EMA, nó tạo ra tín hiệu làm nhiều; Khi 5 ngày dưới EMA đi qua 8 ngày và 13 ngày trên EMA, nó tạo ra tín hiệu làm trống.
Bạn có thể tối ưu hóa bằng cách:
Chiến lược này được đánh giá bằng cách tính toán EMA ngắn và dài ba chu kỳ và so sánh các trường hợp giao nhau để đánh giá xu hướng thị trường, thuộc hệ thống đột phá điển hình. Ưu điểm của nó là tín hiệu giao dịch đơn giản, rõ ràng và dễ dàng sử dụng; nhược điểm là chỉ số EMA tự nó bị tụt lại, không thể phân biệt xu hướng thực sự và điều chỉnh ngắn hạn. Trong tương lai, có thể xem xét đánh giá hỗ trợ bằng các chỉ số kỹ thuật khác hoặc tối ưu hóa chiến lược này kết hợp với điều chỉnh tham số thích nghi.
/*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())