
Chiến lược này dựa trên chỉ số đường trung bình động, theo dõi xu hướng giá theo thời gian thực, phát ra tín hiệu giao dịch bằng cách phá vỡ đường trung bình. Ưu điểm của chiến lược là thiết lập tham số đơn giản, tín hiệu phán đoán rõ ràng, phù hợp cho các vị trí đường trung và dài.
Chiến lược này sử dụng các chỉ số đường trung bình động, bao gồm nhiều loại đường trung bình như ALMA, EMA, SMA. Nguyên tắc cơ bản là, khi giá vượt qua đường trung bình, hãy làm nhiều hơn; khi giá vượt qua đường trung bình, hãy làm trống.
Cụ thể, chiến lược sử dụng đường trung bình hình thành từ điểm cao thấp, sau đó sử dụng đường trung bình của điểm thấp làm đường tín hiệu đa, và đường trung bình của điểm cao làm đường tín hiệu ngắn. Khi giá đóng cửa cao hơn đường trung bình của điểm thấp, hãy làm nhiều; Khi giá đóng cửa thấp hơn đường trung bình của điểm cao, hãy làm trống.
Bằng cách này, sử dụng chỉ số đường trung bình để xác định xu hướng giá, sau đó kết hợp với nguyên tắc phá vỡ để phát tín hiệu, tạo thành một chiến lược theo dõi xu hướng thực tế đơn giản.
Chiến lược này sử dụng các chỉ số đường trung bình để xác định xu hướng giá, phát ra tín hiệu giao dịch dựa trên lý thuyết đột phá. Ưu điểm là đơn giản, dễ sử dụng, phù hợp với vị trí dài và trung bình, có thể điều chỉnh thông qua tham số để thích ứng với sự thay đổi của thị trường. Cần chú ý đến việc phòng ngừa rủi ro trong thời gian ngắn và rủi ro trong thời gian dài, có thể được giải quyết bằng cách dừng lỗ.
/*backtest
start: 2023-12-02 00:00:00
end: 2024-01-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Baseline Strategy - evo", shorttitle="Baseline", overlay=true)
//INPUTS
mat = input("ALMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "ALMA"])
baseline = input(55, title="MA Length")
src = input(ohlc4, title="Closing Source")
offset = input(0.85, step=0.05, title="Offset (alma only)")
sigma = input(10, title="Sigma (alma only)")
useCurrentRes = input(true, title="Use Current Resolution")
resCustom = input("1440", title="Timeframe")
showsignals = input(false, title="Show Signals ?")
//BASELINE
baselinehigh =
mat=="SMA" ? sma(high,baseline) :
mat=="EMA" ? ema(high,baseline) :
mat=="WMA" ? wma(high,baseline) :
mat=="HMA" ? wma(2*wma(high, baseline/2)-wma(high, baseline), round(sqrt(baseline))) :
mat=="VWMA" ? vwma(high,baseline) :
mat=="RMA" ? rma(high,baseline) :
mat=="ALMA" ? alma(high, baseline, offset, sigma) : na
baselinelow =
mat=="SMA" ? sma(low,baseline) :
mat=="EMA" ? ema(low,baseline) :
mat=="WMA" ? wma(low,baseline) :
mat=="HMA" ? wma(2*wma(low, baseline/2)-wma(low, baseline), round(sqrt(baseline))) :
mat=="VWMA" ? vwma(low,baseline) :
mat=="RMA" ? rma(low,baseline) :
mat=="ALMA" ? alma(low, baseline, offset, sigma) : na
//RESOLUTION
res = useCurrentRes ? timeframe.period : resCustom
mtfhigh = security(syminfo.tickerid, res, baselinehigh)
mtflow = security(syminfo.tickerid, res, baselinelow)
//PLOTS
plot(mtfhigh, color=color.navy, linewidth=2, transp=0, title="Baseline High")
plot(mtflow, color=color.navy, linewidth=2, transp=0, title="Baseline Low")
long = src > mtfhigh
short = src < mtflow
barcolor(long ? #ffe0b2 : short ? #2a2e39 : not long and not short ? #b09e82 : na, title="BaseLine BarColor")
signal = 0
signal := long ? 1 : short ? 2 : nz(signal[1])
plotshape(showsignals ? (signal != signal[1] and long ? mtflow : na) : na, title="Long", location=location.absolute, size=size.small, style=shape.labelup, text="Long", textcolor=color.black, transp=40, color=#00ff00)
plotshape(showsignals ? (signal != signal[1] and short ? mtfhigh : na) : na, title="Short", location=location.absolute, size=size.small, style=shape.labeldown, text="Short", textcolor=color.white, transp=40, color=#ff0000)
alertcondition(signal != signal[1], title="Trend Change !", message="Trend Change !")
if (long)
strategy.entry("Long", strategy.long)
if (short)
strategy.entry("Short", strategy.short)