TSI CCI Hull Moving Average Trading Strategy
Overview
This strategy combines the TSI, CCI indicators and Hull Moving Average to determine and trade trends. TSI and CCI identify price waves while Hull MA confirms trend direction. Profit targets are set when long/short signals occur for profitable exits.
Strategy Logic
The TSI curve and signal line are calculated. Long signal when curve crosses above line, short on downward crossover. CCI indicates overbought/oversold levels. Price crossing above Hull MA suggests bull market, and below for bear market. Long/short trades are taken when TSI, CCI and Hull MA breakout conditions align. Profit targets are set to exit positions when reached.
Advantages
- TSI strongly identifies trend direction
- CCI effectively detects overbought/oversold
- Hull MA filters false breakouts improving signals
- Profit targets allow exiting at peak profitability
- Combining multiple indicators improves robustness
Risks
- Lag exists in TSI, CCI and other indicators
- Hull MA cannot perfectly determine turning points
- Exact price reversal timing cannot be accurately determined
- Poor profit target setting risks missing profit potential
Risks can be reduced by tuning indicators, optimizing profit algorithms etc.
Enhancements
- Test TSI/CCI combinations to improve sensitivity
- Consider dynamic/trailing profit targets
- Add other indicators to determine reversals
- Test across different products to improve robustness
Conclusion
This multiple indicator strategy with profit targeting shows good backtest results. Further refinements like parameter optimization can make it a stable quant trading system.
/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="TSI CCI Hull", shorttitle="TSICCIHULL", default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills= false, calc_on_every_tick=true, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0.018)
long = input(title="Long Length", type=input.integer, defval=50)- 1
