Chiến lược này tạo ra tín hiệu giao dịch bằng cách sử dụng trung bình di chuyển kép. Nó gửi tín hiệu mua khi trung bình di chuyển ngắn hạn vượt quá trung bình di chuyển dài hạn và bán tín hiệu khi điều ngược lại xảy ra. Chiến lược này kết hợp khả năng theo dõi xu hướng của trung bình di chuyển để nắm bắt hiệu quả xu hướng giá và thực hiện giao dịch xu hướng.
Chiến lược này tận dụng hai đường trung bình động theo cấp số nhân (EMA) với các khoảng thời gian khác nhau. EMA1 là MA ngắn hạn với khoảng thời gian đặt thành 9, trong khi EMA2 là MA dài hạn với khoảng thời gian đặt thành 21. Chiến lược tạo ra tín hiệu mua khi EMA1 vượt qua trên EMA2, và bán tín hiệu khi nó vượt qua dưới.
Bằng cách đó, chiến lược sử dụng khả năng theo dõi xu hướng của các đường trung bình động để nắm bắt tín hiệu khi giá bắt đầu một hướng xu hướng mới. Ví dụ, khi giá bật lên từ mức giảm, MA ngắn hạn sẽ tăng sớm hơn MA dài hạn.
Sức mạnh lớn nhất của chiến lược này nằm trong khả năng xác định hiệu quả xu hướng giá, đặc biệt phù hợp với các thị trường có xu hướng xu hướng mạnh. Đường trung bình động có các tính năng theo xu hướng tuyệt vời, và cơ chế MA kép tiếp tục cải thiện nó. Ngoài ra, so với các chiến lược MA đơn, MA kép có thể lọc ra nhiều tín hiệu sai hơn và cải thiện độ tin cậy.
Nguy cơ lớn nhất là khi giá dao động mạnh mẽ, bản chất chậm của MAs có thể dẫn đến việc bỏ lỡ các điểm vào hoặc ra tốt nhất.
Để giảm thiểu rủi ro, các thông số như thời gian MA có thể được điều chỉnh phù hợp hoặc thêm các bộ lọc. ví dụ, kết hợp chỉ số biến động để thiết lập ngưỡng và tránh giao dịch trong điều kiện biến động cao.
Không gian tối ưu hóa chủ yếu nằm ở các khía cạnh sau:
Chiến lược này tạo ra các tín hiệu bằng đường trung bình động hàm số kép, với khả năng theo dõi xu hướng giá mạnh để phát hiện sự đảo ngược xu hướng.
/*backtest start: 2024-01-18 00:00:00 end: 2024-02-17 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © technicalTruff99446 //@version=4 strategy("AhmetMSA", overlay=true, initial_capital = 10000, commission_value = 0.002, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, calc_on_order_fills = true) //2. DEĞERDEN SONRA GEÇMİŞ HESAPLAMA DEĞERİ, KOMİSYON ORANI, PARANIN TAMAMI, DEĞERLERİ EKLEMDİ emaShPD = input (title="EMA KISA PERİYOT", defval=9, minval=1) emaLngPD = input (title="EMA UZUN PERİYOT", defval=21, minval=1) //input DEĞİŞKEN DEĞER ATAMA ema1 = ema (close,emaShPD) ema2 = ema (close,emaLngPD) //EMALAR ARASINI BOYAMA upTrend downTrend upTrend = plot (ema1, color=#4DFF00, linewidth=2, title= "EMA KISA", transp=0) downTrend = plot (ema2, color=#FF0C00, linewidth=3, title= "EMA UZUN", transp=0) //linewidth ÇİZGİ KALINLIĞI //title İSİM VERME //BACKTESTİN BAŞLANGIÇ TARİHİNİ BELİRLEME yearin = input(2024, title = "Backtest Başlangıç Tarihi") //longCondition = crossover(ema1, ema2) //shortCondition = crossover(ema2, ema1) buy = crossover(ema1, ema2) and yearin >= year sell = crossover(ema2, ema1) and yearin >= year //ta.crossunder KESİŞİM KODU //Barları BOYAMA barbuy = ema1 >= ema2 barsell = ema2 < ema1 //AL SAT AŞK KUTUCUKLU EKRANA YAZMA plotshape(buy, title = "AL AŞK", text = 'AL AŞK', style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny) plotshape(sell, title = "SAT AŞK", text = 'SAT AŞK', style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, transp = 0, size = size.tiny) //Barları BOYAMA KOŞULU barcolor(barbuy? #4DFF00: barsell? #FF0C00: #FF0C00) fill(upTrend, downTrend, color = ema1 >= ema2?#4DFF00 : #FF0C00, transp = 80, title = "bgcolor") //longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) //shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28)) //14 GÜNLÜĞÜN KAPANIŞDEĞERİNİN 28 GÜNLÜK KAPANIŞ DEĞERİNİ KESMESİ KOŞULU if (buy) strategy.entry("AL AŞK", strategy.long) if (sell) strategy.entry("SAT AŞK", strategy.short)