该策略运用移动平均线的交叉原理,通过快线和慢线的交叉来判断趋势方向,以发出买入和卖出信号。策略简单可靠,适合追求稳定收益的投资者。
该策略使用两个移动平均线,分别是7日均线作为快线,5月均线作为慢线。快线能较快地捕捉价格变动,慢线滤除噪音,判断趋势方向。当快线从下方向上突破慢线时,视为牛市信号,做多;当快线从上方向下跌破慢线时,视为熊市信号,做空。
具体来说,策略通过计算7日简单移动平均线和5月简单移动平均线,并绘制在价图上。当7日线从下方截断5月线向上突破时,产生买入信号;当7日线从上方向下跌破5月线时,产生卖出信号。策略还对信号产生的时段进行可视化标记。
该策略具有以下优势:
理论依据简单可靠,基于广为人知的移动平均线交叉原理。
仅使用两条移动平均线,参数选择简单,容易实施。
快线和慢线配合使用,能有效识别趋势,过滤市场噪音。
采用不同周期均线,能够捕捉不同时间尺度上的趋势变化。
实现简单,代码容易理解,逻辑清晰。
可视化信号提示清楚直观,操作决策比较明确。
该策略也存在一些风险:
仅基于均线交叉操作,容易产生错触发信号。
无法有效判断趋势强弱,可能在震荡行情中止损频繁。
固定均线周期无法适应市场变化,需优化参数。
无法判断买卖点位,存在一定的随市操作风险。
较简单理论依据,效果可能打折扣,盈利空间有限。
该策略可以从以下几个方面进行优化:
增加其他指标配合确定买卖点位,例如KDJ指标判断超买超卖。
添加止损机制,如追踪止损,避免亏损扩大。
优化均线周期参数,使其能适应不同行情周期。
增加成交量过滤,避免虚假突破。
评估趋势强弱,如计算均线斜率,不同力度操作。
结合更多时间周期分析,判断趋势持续性。
该策略基于移动平均线交叉原理,简单可靠地识别牛熊趋势。优点是简单易操作,缺点是存在一定盲目随趋势的风险。通过参数优化、增加辅助指标等方法可以提高策略效果。投资者可以根据自己的风险偏好选择使用。
/*backtest
start: 2022-09-30 00:00:00
end: 2023-10-06 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/
// © dadashkadir
//@version=4
strategy("Mount MaV - Day MaV CrossOver Strgty", shorttitle="Yusram Str.", overlay=true)
src = input(title= "Kaynak", type=input.source, defval=close)
mav = input(title="Hareketli Ortlama Tipi", defval="SMA", options=["SMA", "EMA", "WMA"])
Gbar = input(title="Günlük Bar Sayısı", defval=7, minval=1, maxval=999)
Abar = input(title="Aylık Bar Sayısı", defval=5, minval=1, maxval=999)
//displacement = input(20, minval=1, title="Displacement")
getMA(src, length) =>
ma = 0.0
if mav == "SMA"
ma := sma(src, length)
ma
if mav == "EMA"
ma := ema(src, length)
ma
if mav == "WMA"
ma := wma(src, length)
ma
ma
long = "M" //Aylık
ln = security(syminfo.ticker, long, src)
lnma = getMA(ln, Abar)
gnma = getMA(src, Gbar)
col1= gnma>gnma[1]
col3= gnma<gnma[1]
colorM = col1 ? color.green : col3 ? color.navy : color.yellow
l1 = plot(lnma, title="MhO", trackprice = true, style=plot.style_line, color=color.red, linewidth=3)
l2 = plot(gnma, title="DhO", trackprice = true, style=plot.style_line, color=colorM, linewidth=3)
fill(l1, l2, color = lnma < gnma ? color.green : color.red, title="Gölgelendirme", transp=90)
zamanaralik = input (2020, title="Backtest Başlangıç Tarihi")
al = crossover (gnma, lnma) and zamanaralik <= year
sat = crossover (lnma, gnma) and zamanaralik <= year
plotshape(al, title = "Giriş", text = 'Al', style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sat, title = "Çıkış", text = 'Sat', style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, transp = 0, size = size.tiny)
FromDay = input(defval = 1, title = "Str. Başlama Tarihi Gün", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "Str. Başlama Tarihi Ay", minval = 1, maxval = 12)
FromYear = input(defval = 2015, title = "Str. Başlama Tarihi Yıl", minval = 2005)
ToDay = input(defval = 1, title = "Str. Bitiş Tarihi Gün", minval = 1, maxval = 31)
ToMonth = input(defval = 1, title = "Str. Bitiş Tarihi Ay", minval = 1, maxval = 12)
ToYear = input(defval = 9999, title = "Str. Bitiş Tarihi Yıl", minval = 2006)
Start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
Finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
Timerange() =>
time >= Start and time <= Finish ? true : false
if al
strategy.entry("Al", strategy.long, when=Timerange())
if sat
strategy.entry("Sat", strategy.short, when=Timerange())