T7 JNSAR量化交易策略


创建日期: 2023-09-18 14:05:19 最后修改: 2023-09-18 14:05:19
复制: 1 点击次数: 552
avatar of ChaoZhang ChaoZhang
1
关注
1264
关注者

概述

T7 JNSAR是一种针对NIFTY指数的日内趋势跟踪交易系统。它利用变化的JNSAR线产生买卖信号,属于趋势追踪类策略。该策略原创者为印度交易员Illango,我对其进行了优化改进并编程实现。

策略原理

  • 计算JNSAR线:利用5日高、低、收盘价的指数移动平均计算出JNSAR值,绘制成线图。

  • 产生信号:当日收盘价高于JNSAR线时产生做多信号;当日收盘价低于JNSAR线时产生做空信号。

  • 入场:在产生信号的第二天开盘价入场。

  • 出场:反向信号产生时平仓。

  • 只交易NIFTY指数,不交易个股。

  • 无论盈亏都交易每一个信号。

优势分析

  • JNSAR线能较好地描绘趋势和关键支撑阻力。

  • 仅基于客观指标产生信号,避免主观情绪影响。

  • 利用趋势追踪来获利,历史回测收益较好。

  • 可通过期货或期权来交易,交易成本较低。

  • 规则简单清晰,容易实现自动交易。

风险分析

  • 作为趋势跟踪策略,在盘整市场中存在较多止损的可能。

  • 无法有效判断趋势结束点,可能出现超买超卖现象。

  • SIGNAL产生滞后,可能出现假突破导致亏损。

  • 需承受较大的回撤和连续亏损的风险。

  • 仅适用于NIFTY,不适用于其他品种。

  • 需要较强的心理素质持续交易所有信号。

优化方向

  • 测试不同参数找寻最佳JNSAR线设置

  • 添加止损机制来控制风险

  • 结合其他指标判断趋势终结点

  • 开发动态仓位管理方法

  • 优化信号产生逻辑

  • 尝试应用机器学习模型

总结

T7 JNSAR为NIFTY提供了简单有效的趋势跟踪策略。遵循交易规则,控制风险,心态持续交易所有信号,可以获得长期正收益。通过参数优化、止损管理等方法可以进一步提高策略的健壮性。

策略源码
/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Created by Syam Mohan @ T7 Wealth Creators Pvt Ltd - Makes Life Easier, on request from @stocksonfire. 
//This is a trend following daily bar trading system for NIFTY. Original idea belongs to ILLANGO @ http://tradeinniftyonly.blogspot.in
//Use it at your own risk after validation at your end. Neither me or my company is responsible for any lossses you may incur using this system. 

//@version=2
strategy("T7 JNSAR", overlay=true)

backtest = input(title="Enable Backtest", type=bool, defval=1)

sum = ema(high, 5) + ema(low, 5) + ema(close, 5) 
sum := sum + ema(high[1], 5) + ema(low[1], 5) + ema(close[1], 5) 
sum := sum + ema(high[2], 5) + ema(low[2], 5) + ema(close[2], 5)
sum := sum + ema(high[3], 5) + ema(low[3], 5) + ema(close[3], 5) 
sum := sum + ema(high[4], 5) + ema(low[4], 5) + ema(close[4], 5)

jnsar = round(sum/15)

buy = close > jnsar
short = close < jnsar

plot(jnsar,color=green,linewidth=4)

if backtest!=0
    strategy.entry("JNSARLong", strategy.long,comment="JNSARLong",when=buy!=0)
    strategy.entry("JNSARShort", strategy.short,comment="JNSARShort",when=short!=0)