Đây là một chiến lược giao dịch dựa trên hai đường trung bình di chuyển. Nó sẽ phán đoán xu hướng thị trường và tạo ra tín hiệu giao dịch dựa trên mối quan hệ chéo giữa đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm.
Chiến lược này chủ yếu sử dụng tính năng theo dõi xu hướng của đường trung bình di chuyển. đường trung bình di chuyển là giá trung bình được tính dựa trên giá đóng cửa lịch sử trong một chu kỳ nhất định, nó có thể biến động nhỏ trong ngày và phản ánh xu hướng giá trong chu kỳ thời gian lớn hơn. đường trung bình nhanh sử dụng chu kỳ ngắn hơn, có thể phản ứng nhanh hơn với sự thay đổi giá; đường trung bình chậm sử dụng chu kỳ dài hơn, đại diện cho xu hướng dài.
Chiến lược này tạo ra tín hiệu giao dịch bằng cách thiết lập đường trung bình di chuyển với độ dài chu kỳ khác nhau, sử dụng các đường trung bình giữa các đường trung bình. Khi đường trung bình chu kỳ ngắn đi qua đường trung bình chu kỳ dài, nó cho thấy tình hình ngắn hạn tốt, tạo ra tín hiệu mua; khi đường trung bình chu kỳ ngắn đi qua đường trung bình chu kỳ dài, nó cho thấy tình hình ngắn hạn yếu đi, tạo ra tín hiệu bán. Mã chiến lược vẽ đường trung bình thông qua hàm plot, biến xu hướng đánh giá mối quan hệ chéo của đường trung bình, và nhập tín hiệu mua và bán khi xảy ra chéo.
Chiến lược giao chéo hai đường trung bình sử dụng tính năng theo dõi xu hướng của đường trung bình di chuyển để đánh giá hướng thị trường và tạo tín hiệu giao dịch bằng cách giao chéo đường trung bình nhanh và chậm. Chiến lược này đơn giản và dễ dàng, nhưng cũng có một số vấn đề. Bằng cách điều chỉnh tham số, kết hợp với các chỉ số khác và tối ưu hóa thuật toán, bạn có thể bù đắp những thiếu sót đó để trở thành một hệ thống giao dịch ổn định và đáng tin cậy.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-04-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KivancOzbilgic
//@version=4
strategy("pomila", overlay=true)
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 999)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() => time >= start and time <= finish ? true : false
longCondition = buySignal
if (longCondition)
strategy.entry("BUY", strategy.long, when = window())
shortCondition = sellSignal
if (shortCondition)
strategy.entry("SELL", strategy.short, when = window())
buy1= barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)