短线双均线策略


创建日期: 2023-11-02 15:10:04 最后修改: 2023-11-02 15:10:04
复制: 1 点击次数: 525
avatar of ChaoZhang ChaoZhang
1
关注
1300
关注者

短线双均线策略

概述

双均线策略是一种比较常见的短线交易策略。该策略通过计算不同周期的均线,判断市场趋势方向,以此进行入场。当短周期均线上穿长周期均线时,做多;当短周期均线下穿长周期均线时,做空。

策略原理

该策略的核心逻辑是:

  1. 计算两条不同周期的均线,一条为长周期均线,一条为短周期均线。这里使用开盘价和收盘价的均线。

  2. 判断短周期均线是否出现了对长周期均线的穿透。当短线上穿长线时,表示市场处于上涨趋势,可以做多;当短线下穿长线时,表示市场处于下跌趋势,可以做空。

  3. 根据趋势方向入场做多做空。具体来说,是当短周期均线上穿长周期均线时,做多;当短周期均线下穿长周期均线时,做空。

  4. 止损和止盈根据实际情况设定。

整个策略运用了均线的趋势判断功能,判断市场短期和长期趋势的关系,以捕捉较短的中短线行情。该策略逻辑简单清晰,通过双均线交叉来判断行情背离与延续的节奏转换,以此来进行交易操作。

策略优势

双均线策略具有以下优势:

  1. 思路简单,容易理解和实现。

  2. 具有明确的入场 timing 和出场标准。

  3. 可以通过调整均线参数来适应不同的市场环境。

  4. 兼顾趋势和反转,可以捕捉一定的中短线行情。

  5. 有止损逻辑,可以控制风险。

策略风险

双均线策略也存在一些风险:

  1. 当市场处于震荡整理阶段时,止损可能被频繁触发。

  2. 大幅度波动的市场中,均线生成的信号可能频繁,不利于持仓。

  3. 双均线本身滞后性较强,可能错过短线的反转机会。

  4. 需要注意参数优化,设定合适的均线周期。

  5. 均线交叉具有一定的滞后性,入场时机可能会有所延迟。

策略优化方向

以下几点可以作为该策略的优化方向:

  1. 优化均线周期参数,适应不同行情。可以做参数回测优化。

  2. 增加其他指标做过滤,避免在震荡行情中被套。可以加入MACD,KD等做辅助。

  3. 加入趋势判断指标,避免在无明确趋势时频繁交易。可以测试加入EMA等趋势判断指标。

  4. 可以考虑加入交易量指标来判断跳空方向。

  5. 优化止损策略,在大级别支持位附近设置止损。

总结

双均线策略是一个基于均线交叉判断趋势的简单短线策略。优点是思路简单清晰,易于操作;缺点是容易被震荡市场套住,且具有滞后性。我们可以通过改进参数优化、增加过滤指标等方式来优化该策略,使之更适应复杂的市场环境。

策略源码
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("GetTrendStrategy timing", overlay=true)
tim=input('370')
 
//////////////////////////////////////////////////////////////////////
// Component Code Start
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(10, "Backtest Start Month")
testStartDay = input(25, "Backtest Start Day")
testStartHour = input(7, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2017, "Backtest Stop Year")
testStopMonth = input(10, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testStopHour = input(13, "Backtest stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStartHour,0)
 
testPeriod() => true
// Component Code Stop
//////////////////////////////////////////////////////////////////////
 
 
out1 = request.security(syminfo.tickerid, tim, open)
out2 = request.security(syminfo.tickerid, tim, close)
plot(out1,color=red)
plot(out2,color=green)
longCondition = crossover(request.security(syminfo.tickerid, tim, close),request.security(syminfo.tickerid, tim, open))
 
if testPeriod()
    if (longCondition)
        strategy.entry("long", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, tim, close),request.security(syminfo.tickerid, tim, open))
 
if testPeriod()
    if (shortCondition)
        strategy.entry("short", strategy.short)