本策略利用简单移动平均线(SMA)的金叉死叉原理构建。策略以3日线和5日线的金叉作为入场信号,以止损或止盈为退出信号。
该策略主要基于两个SMA,即3日线和5日线。其中,3日线代表了短期趋势,5日线代表较长的中期趋势。当短期快速上涨,即3日线上穿5日线时,代表着目前处于上涨行情,这个时候入场做多;反之,当短期快速下跌,即3日线下穿5日线时,代表着目前处于下跌行情,这个时候入场做空。 这样,通过捕捉短期和中期两个周期价格变化的交叉来判断行情,可以提高入场的成功率。
该策略具有以下优势:
该策略也存在一定的风险:
为降低风险,可以考虑优化入场的均线选取,或者增加长周期均线的辅助判断。同时,也可以调整止盈止损的点位,使其更贴合真实的市场情况。
该策略可以从以下几个方面进行优化:
本策略基于均线交叉原理构建,采取金叉入场、止盈止损出场的策略逻辑,简单易于实施,回测表现也较为稳定。通过加入更多辅助技术指标、优化参数以及扩大回测范围等措施,可以进一步提升策略的稳定性及盈利水平。总体来说,均线策略具有良好的市场适应性,值得进一步研究与应用。
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 5h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="Revolut v1.0", overlay=true) // === GENERAL INPUTS === ATR = atr(3) ema3 = ema(close, 3) ema5 = ema(close, 5) // === INPUT BACKTEST RANGE === FromMonth = input(defval = 1, 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 = 2017) 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 = 2017) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true// create function "within window of time" // === PLOTTING === plot(ema3, title="Ema 3", color = white, linewidth = 2, transp=0) plot(ema5, title="Ema 5", color = aqua, linewidth = 2, transp=0) // === ENTRY POSITION LOGIC === entryCondition = crossover(ema(close, 3), ema(close, 5)) if (entryCondition) strategy.entry("ENTRY", strategy.long, when=window()) // === EXIT POSTION LOGIC === //strategy.exit("Take Profit", "ENTRY", profit=6, loss=5, when=window()) strategy.exit("Take Profi Or STOP", "ENTRY", profit = 6, loss = 5, when=window()) // ##################################### // We can start to incorperate this into the script later // We can program a emergency exit price //strategy.close_all() // You can use this if you want another exit //strategy.exit("2nd Exit", "ENTRY", profit=1500, stop=500, when=window())