Chiến lược giao dịch đột phá khi đường trung bình động ngắn hạn cắt đường trung bình động trung hạn và dài hạn


Ngày tạo: 2023-11-24 13:33:21 sửa đổi lần cuối: 2023-11-24 13:33:21
sao chép: 0 Số nhấp chuột: 853
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch đột phá khi đường trung bình động ngắn hạn cắt đường trung bình động trung hạn và dài hạn

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.

Nguyên tắc chiến lược

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.

Lợi thế chiến lược

  1. Sử dụng EMA đa chu kỳ để đánh giá xu hướng, tránh bỏ lỡ các bước ngoặt xu hướng quan trọng do một chu kỳ EMA đơn quá ngắn hoặc quá dài
  2. Kết hợp với EMA ngắn trung và dài ba chu kỳ, tín hiệu giao dịch đáng tin cậy và chính xác hơn
  3. Bằng cách làm mịn giá, EMA có thể lọc ra một số tiếng ồn thị trường và ngăn chặn việc đặt hàng không cần thiết

Rủi ro chiến lược

  1. Ba EMA đều là các chỉ số xu hướng chậm trễ, chắc chắn có khoảng cách thời gian trước khi giá thực tế phá vỡ, có thể dẫn đến tín hiệu giao dịch bị trì hoãn
  2. EMA không thể phân biệt được xu hướng thực và điều chỉnh ngắn hạn, có thể tạo ra tín hiệu sai
  3. Chu kỳ EMA cố định không thể thích ứng với các đặc điểm thay đổi của thị trường trong các chu kỳ khác nhau

Bạn có thể tối ưu hóa bằng cách:

  1. Kết hợp với các chỉ số khác như MACD để đánh giá xu hướng thực sự, tránh phát ra tín hiệu sai
  2. Các tham số chu kỳ EMA có thể được điều chỉnh linh hoạt theo các giống khác nhau và môi trường thị trường
  3. Thêm lệnh dừng di chuyển để khóa lợi nhuận, kiểm soát rủi ro

Tóm tắt

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.

Mã nguồn chiến lược
/*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())