震荡指数变换策略


创建日期: 2023-12-22 14:21:28 最后修改: 2023-12-22 14:21:28
复制: 0 点击次数: 437
avatar of ChaoZhang ChaoZhang
1
关注
1239
关注者

震荡指数变换策略

概述

震荡指数变换策略(Oscillator Index Transformation Strategy)利用布雷瑟特(Bressert)的3-10振荡指数与其16日简单移动平均之间的交叉来产生交易信号。该策略适用于日内和隔夜交易。

策略原理

该策略基于布雷瑟特的3-10振荡指数,该指数是3日指数移动平均线和10日指数移动平均线的差值。当快线(3-10 振荡指数)上穿慢线(16日简单移动平均线)时做多,当快线下穿慢线时做空。

具体来说,策略首先计算3日EMA、10日EMA和它们的差值作为振荡指数。然后计算16日振荡指数的简单移动平均作为信号线。当振荡指数上穿信号线时做多,下穿时做空。允许反转做法。

优势分析

  1. 使用经典的布雷瑟特振荡指数,具有一定的效果
  2. 结合快慢线交叉形成交易信号,容易判断 entry 和 exit
  3. 允许反转做法,可以适应不同市场环境
  4. 可在日内和隔夜交易中使用

风险分析

  1. 布雷瑟特振荡指数效果并不稳定,存在一定盈亏波动
  2. 快线和慢线交叉信号可能出现假信号
  3. 反转做法风险较大,需要谨慎运用
  4. 日内交易需考虑止损策略,隔夜交易需考虑资金管理

优化方向

  1. 优化参数,调整移动平均线周期,找到最佳参数组合
  2. 增加过滤条件,结合其他指标或价格形态判断信号质量
  3. 增加止损策略,设置合理的止损点,控制单笔损失
  4. 优化资金管理,调整仓位大小,降低单笔损失对总资金的影响

总结

震荡指数变换策略属于短线交易策略,通过布雷瑟特的3-10振荡指数和其信号线的交叉来产生交易信号,简单实用。该策略可适用于日内和隔夜交易,但存在一定盈亏波动和假信号风险,需增加过滤条件优化止损来改进。如果参数优化和资金管理得当,该策略可获得一定的超额收益。

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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 27/03/2017
// TradeStation does not allow the user to make a Multi Data Chart with 
// a Tick Bar Chart and any other type a chart. This indicator allows the 
// user to plot a daily 3-10 Oscillator on a Tick Bar Chart or any intraday interval.
// Walter Bressert's 3-10 Oscillator is a detrending oscillator derived 
// from subtracting a 10 day moving average from a 3 day moving average. 
// The second plot is an 16 day simple moving average of the 3-10 Oscillator. 
// The 16 period moving average is the slow line and the 3/10 oscillator is 
// the fast line.
// For more information on the 3-10 Oscillator see Walter Bressert's book 
// "The Power of Oscillator/Cycle Combinations" 
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="D_Three Ten Osc", shorttitle="D_Three Ten Osc")
Length1 = input(3, minval=1)
Length2 = input(10, minval=1)
Length3 = input(16, minval=1)
reverse = input(false, title="Trade reverse")
hline(0, color=green, linestyle=line)
xPrice =  request.security(syminfo.tickerid,"D", hl2)
xfastMA = ema(xPrice, Length1)
xslowMA = ema(xPrice, Length2)
xMACD = xfastMA - xslowMA
xSignal = sma(xMACD, Length3)
pos = iff(xSignal > xMACD, -1,
	     iff(xSignal < xMACD, 1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(request.security(syminfo.tickerid, "D", xMACD), color=blue, title="D_Three Ten Osc")
plot(request.security(syminfo.tickerid, "D", xSignal), color=red, title="D_Three Ave")