
Chiến lược đột phá chéo vàng của EMA nhanh là một chiến lược đơn giản và hiệu quả để theo dõi xu hướng thị trường. Nó sử dụng đường trung bình của EMA trong các chu kỳ khác nhau để đột phá chéo, tạo ra tín hiệu mua và bán. Ý tưởng cơ bản là: khi EMA ngắn kỳ vượt qua EMA dài kỳ, tạo ra tín hiệu mua; khi EMA ngắn kỳ vượt qua EMA dài kỳ, tạo ra tín hiệu bán.
Chiến lược này dựa chủ yếu vào so sánh đường trung bình EMA của chu kỳ 5, chu kỳ 8 và chu kỳ 13 để tạo ra tín hiệu giao dịch. Nó bao gồm:
Như vậy, có hiệu quả theo dõi xu hướng đường dài trung bình. Khi đường trung bình ngắn hạn đi qua đường trung bình dài hạn, biểu thị xu hướng ngắn hạn chuyển sang đa đầu, bạn có thể mua; Khi đường trung bình ngắn hạn đi qua đường trung bình dài hạn, biểu thị xu hướng ngắn hạn chuyển sang không đầu, bạn nên bán.
Chiến lược này có những lợi thế chính như sau:
Chiến lược này cũng có một số rủi ro:
Chiến lược này có thể được tối ưu hóa theo các hướng sau:
Tóm lại, chiến lược đột phá EMA Gold Cross hoạt động suôn sẻ, tín hiệu đáng tin cậy, rút lui thấp, phù hợp để theo dõi xu hướng đường dài trung bình. Bằng cách tối ưu hóa tham số và hoàn thiện quy tắc, có thể đạt được hiệu quả chiến lược tốt hơn.
/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 2h
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 by TTS", 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")
rsi_period = input(type=input.integer,defval=14,minval=1,title="Length")
longOnly = input(type=input.bool,defval=false,title="Long Only")
shortEma = ema(close,short_period)
midEma = ema(close,mid_period)
longEma = ema(close,long_period)
rsi = rsi(close, rsi_period)
[diplus, diminus, adx] = dmi(short_period, short_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 = crossover(shortEma,midEma) and crossover(shortEma,longEma) //or ((shortEma > longEma) and crossover(shortEma,midEma)))and (adx > 25)
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 and
time > timestamp(start_year, 1, 1, 01, 01)
exitLong() =>
crossunder(shortEma,longEma) or crossunder(close, 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 and
time > timestamp(start_year, 1, 1, 01, 01)
exitShort() =>
crossover(shortEma,longEma)
strategy.entry(id="Short", long=strategy.short, when=enterShort())
strategy.close(id="Short", when=exitShort())