Chiến lược này sử dụng các tín hiệu chéo vàng và chéo chết được hình thành bởi các đường trung bình di chuyển EMA kép, kết hợp với chỉ số ATR để đánh giá sự biến động của thị trường, để thực hiện một chiến lược theo xu hướng mua thấp-bán cao. Khi đường nhanh vượt qua đường chậm, và chỉ số ATR thấp hơn ngày trước, nó được coi là một tín hiệu tăng để đi dài. Khi đường nhanh vượt dưới đường chậm, và chỉ số ATR cao hơn ngày trước, nó được coi là một tín hiệu giảm để đi ngắn.
Sử dụng đường EMA di chuyển kép dài 20 và 55. Khi đường nhanh vượt qua đường chậm và tạo ra đường chéo vàng, nó được coi là tín hiệu tăng. Khi đường nhanh vượt qua đường chậm và tạo ra đường chéo chết, nó được coi là tín hiệu giảm.
Sử dụng chỉ số ATR dài 14. Chỉ số ATR phản ánh sự biến động và mức độ rủi ro của thị trường. Khi ATR thấp hơn ngày trước, nó cho thấy sự biến động của thị trường đang suy yếu và nó phù hợp để mua dài. Khi ATR cao hơn ngày trước, nó cho thấy sự biến động của thị trường đang tăng và nó phù hợp để mua ngắn.
Chỉ mua dài khi đường vàng nhanh vượt qua đường chậm và ATR thấp hơn ngày trước. Chỉ mua ngắn khi đường nhanh vượt qua đường chậm và ATR cao hơn ngày trước. Điều này tránh can thiệp khi biến động thị trường cao.
Chỉ số ATR cũng được sử dụng để thiết lập mức dừng lỗ và lấy lợi nhuận. Stop loss được thiết lập ở mức giá hiện tại trừ ATR nhân với nhân stop loss. Take profit được thiết lập ở mức giá hiện tại cộng với ATR nhân với nhân take profit.
Lượng nhân stop loss mặc định là 3xATR và số nhân take profit mặc định là 3xATR. Điều này cho phép stop loss và take profit theo dõi biến động thị trường một cách năng động.
Sử dụng một hệ thống trung bình động kép cung cấp xác nhận mạnh mẽ hơn về tình trạng dài / ngắn. Nó tránh bị đánh lừa bởi các sự phá vỡ sai thường xảy ra trên thị trường.
Việc giới thiệu chỉ số ATR cho phép chiến lược chỉ tham gia khi biến động thấp. Điều này lọc ra nhiều tín hiệu sai và giảm rủi ro hệ thống.
Các ATR động dừng lỗ / lấy lợi nhuận cho phép dừng và mục tiêu được thiết lập theo mức độ biến động thị trường. Điều này ngăn chặn dừng quá gần hoặc mục tiêu quá nông.
Có thể thiết lập chéo trung bình động như một cơ chế thoát thêm. Điều này có thể tối ưu hóa lợi nhuận của hệ thống.
Các mức dừng lỗ động và lấy lợi nhuận dựa trên ATR phù hợp hơn với logic giao dịch xu hướng.
Trung bình di chuyển kép có một số dấu hiệu chậm trễ. Điều này có thể bỏ lỡ xu hướng ngắn hạn mạnh hơn.
Khi biến động cao, ATR tăng và có thể bỏ lỡ cơ hội nhập cảnh.
Đối với thời gian giữ dài, dừng lỗ có thể quá gần. Nó cần được thư giãn theo sức mạnh xu hướng.
Trung bình động hoạt động kém trong các thị trường dao động hỗn loạn.
Các thông số ATR cần phải được điều chỉnh cho các sản phẩm và khung thời gian khác nhau.
Kiểm tra các kết hợp trung bình động dài khác nhau để tìm các thông số phù hợp với các đặc điểm xu hướng của sản phẩm.
Kết hợp các chỉ số khác như MACD, KD để xác nhận tín hiệu chéo trung bình động và cải thiện Entscheidungssicherheit.
Tối ưu hóa các thông số ATR thông qua backtesting để phù hợp hơn với các đặc điểm biến động của sản phẩm.
Làm cho nhân ATR có thể điều chỉnh để điều chỉnh động stop loss / take profit theo sức mạnh của xu hướng.
Kết hợp chỉ số sức mạnh xu hướng để giảm yêu cầu dừng lỗ trong xu hướng yếu và tăng lợi nhuận trong xu hướng mạnh.
Phương pháp này tích hợp các quyết định xu hướng của EMA kép và kiểm soát rủi ro của chỉ số biến động ATR để tạo thành một hệ thống theo dõi xu hướng tương đối hoàn chỉnh.
/*backtest start: 2023-10-16 00:00:00 end: 2023-11-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // ********************************************** // PtahX EMA/ATR Strategy Public Release // EMA Strategy with ATR & "Fear Factor" built in // written by PtahX October 2019 // * modifications welcome // * please let me know if you improve it so I can continue to learn :) // * use at your own risk - I'm a new programmer and still learning // * Best of luck on your trades!! // Take Profit (TP) option based on ATR or MA Crossover //*********************************************** strategy(title="PtahX EMA/ATR Strategy", overlay=true, pyramiding=1, calc_on_every_tick=true, default_qty_value=1, initial_capital=10000, slippage=2) //***************************** // Global Inputs //***************************** fastMA = input(title="Fast Moving Average", defval=20, step=1) slowMA = input(title="Slow Moving Average", defval=55, step=1) source = input(close, title="Source") atrLength = input(title="ATR Length", defval=14, minval=7, step=1) slMultiplier = input(title="Stop Loss Multiple", type=input.float, defval=3, minval=1, step=0.2) tpMultiplier = input(title= "Take Profit Multiple", type=input.float, defval=3, minval=1, step=0.2) maPlot = input(true, title="Plot EMA?") maCrossoverExit = input(false, title="Exit with Slow MA Crossover?") atrExit = input(true, title="Exit with ATR?") //*********************************** // ATR //*********************************** atr = atr(atrLength) //*********************************** // Volatility Filter //********************************** // During uptrends the ATR indicator tends to post lower volatility. // During downtrends, the ATR indicator tends to post higher volatility volatilityBullish = atr < atr[1] volatilityBearish = atr > atr[1] //*********************************** // Moving Averages //*********************************** // Double Line Plot Code (used for Entries & Exits not plotted by default) fast = ema(source, fastMA) slow = ema(source, slowMA) maLong = crossover(fast, slow) maShort = crossunder(fast, slow) // Single Line Plot Code bullish = slow > slow[1] bearish = slow < slow[1] barColor = bullish ? color.green : bearish ? color.red : color.blue //***************************** // Entries //***************************** entryLong = maLong and volatilityBullish entryShort = maShort and volatilityBearish if entryLong sLoss = source - atr * slMultiplier strategy.entry("Long", strategy.long, qty=10) strategy.exit("Long Exit", "Long", stop=sLoss) if entryShort sLoss = source + atr * slMultiplier tProfit = close > slowMA strategy.entry("Short", strategy.short, qty=10) strategy.exit("Short Exit", "Short", stop=sLoss) //***************************** // Exits //***************************** exitLong = 0 exitShort = 0 if maCrossoverExit exitLong = maShort exitShort = maLong strategy.exit("Long Exit", "Long", when = exitLong) strategy.exit("Short Exit", "Short", when = exitShort) if atrExit exitLong = source + atr * tpMultiplier exitShort = source - atr * tpMultiplier strategy.exit("Long Exit", "Long", limit = exitLong) strategy.exit("Short Exit", "Short", limit = exitShort) //****************************** // ATR Based Exit/ Stop Plotting //****************************** // Stop Loss Calculations longStopLoss = source - atr(atrLength) * slMultiplier shortStopLoss = source + atr(atrLength) * slMultiplier longTakeProfit = source - atr(atrLength) * slMultiplier shortTakeProfit = source + atr(atrLength) * slMultiplier //********************************* //Chart Plotting //********************************* //ATR Based Stop Losses plot(shortStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Short Stop Loss") plot(longStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Long Stop Loss") // Single Slow EMA Option plot(slow and maPlot ? slow : na, title="EMA", color=barColor, linewidth=3)