该策略是一个利用多时间框架进行交易的策略,主要使用长期时间框架判断趋势方向,中期时间框架判断动量方向,短期时间框架寻找具体的入场点。整体来说,策略主要思想是同时利用趋势、动量和具体入场点三个不同时间段的信息来进行决策。
该策略主要通过以下几个部分来实现:
定义不同时间框架
判断长期趋势
判断中期动量
寻找入场点
退出点
综上,该策略充分利用了多时间框架的信息,从长短不同维度判断趋势和时机,可以有效过滤假突破,在趋势背景下选择高概率的入场点位。
该策略具有以下优势:
多时间框架设计科学、细致,可以更准确判断市场走势,有效避免被市场短期噪音误导。
同时考虑趋势、动量和入场时机,条件较为全面和严谨,可以过滤大量假信号。
利用Stoch指标判断中期动量非常精准,可以把握市场真正的反转时机。
入场条件设置得较严格,可以避开大部分冲高回落的虚假突破。
设定了明确的止损退出点,可以有效控制每次交易的风险。
适用于多种市场环境,不会被特定行情所局限。
资金管理方面可以进行优化,如设定固定止损比例、动态调整仓位等。
该策略也存在一些风险需要注意:
在震荡行情中,可能出现多次止损。
大趋势突变时,跟趋势的判断会滞后,可能误操作。
仅依靠KDJ指标判断中期动量对突变也易错失良机。
入场条件过于严格,可能错过部分行情。
盈利空间相对有限,难以把握大行情。
对应风险,可以从以下方面进行优化:
适当调整参数,降低误差率。
增加趋势判断指标,建立组合判断。
结合更多指标判断中期动量,如MACD等。
优化止损机制,改为追踪止损等方式。
大趋势发生变化时,及时调整止损点和仓位。
该策略可以从以下几个方面进行优化:
参数优化。如调整MA周期参数,Stoch参数等,使信号更准确。
增加更多指标判断。可以引入MACD,Bollinger Band等指标辅助判断。
优化入场条件。可以考虑放宽入场条件,适当增加交易频率。
优化止损方式。可以采用追踪止损,或根据ATR设置止损位。
增加仓位管理。如大趋势突变时主动调整仓位。
优化机器学习。利用机器学习方法自动优化参数和策略规则。
考虑基本面因素。结合重要经济数据发布进一步确认交易信号。
测试不同品种套用效果。评估策略在不同品种如外汇、贵金属等的效果。
该多时间框架趋势策略整体来看,核心思路是利用长、中、短三个时间维度的信息进行决策。策略优势在于条件严格、风险可控,但需要针对具体市场进行参数和规则优化。未来可通过引入更多指标、优化止损方式、加入机器学习等方法进一步完善该策略。
/*backtest start: 2023-10-15 00:00:00 end: 2023-10-22 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("TUX MTF", overlay=true) // MULTIPLE TIME FRAME STRATEGY // LONG TERM --- TREND // MED TERM --- MOMENTUM // SHORT TERM --- ENTRY // ENTRY POSITION TIMEFRAME entry_position = input(title="Entry timeframe (minutes)", defval=5, minval=1, maxval=1440) med_term = entry_position * 4 long_term = med_term * 4 // GLOBAL VARIABLES ma_trend = input(title="Moving Average Period (Trend)", defval=50, minval=5, maxval=200) // RSI length = input(title="Stoch Length", defval=18, minval=5, maxval=200) OverBought = input(title="Stoch OB", defval=80, minval=60, maxval=100) OverSold = input(title="Stoch OS", defval=20, minval=5, maxval=40) smoothK = input(title="Stoch SmoothK", defval=14, minval=1, maxval=40) smoothD = input(title="Stoch SmoothD", defval=14, minval=1, maxval=40) maSm = input(title="Moving Avg SM", defval=7, minval=5, maxval=50) maMed = input(title="Moving Avg MD", defval=21, minval=13, maxval=200) // LONG TERM TREND long_term_trend = request.security(syminfo.ticker, tostring(long_term), sma(close,ma_trend)) > request.security(syminfo.ticker, tostring(long_term), close) plot(request.security(syminfo.ticker, tostring(long_term), sma(close,ma_trend)), title="Long Term MA", linewidth=2) // FALSE = BEAR // TRUE = BULL // MED TERM MOMENTUM k = request.security(syminfo.ticker, tostring(med_term), sma(stoch(close, high, low, length), smoothK)) d = request.security(syminfo.ticker, tostring(med_term), sma(k, smoothD)) os = k >= OverBought or d >= OverBought ob = k <= OverSold or d <= OverSold // SHORT TERM MA X OVER bull_entry = long_term_trend == false and os == false and ob == false and k > d and request.security(syminfo.ticker, tostring(entry_position), crossover(sma(close, maSm), sma(close, maMed))) bear_entry = long_term_trend == true and os == false and ob == false and k < d and request.security(syminfo.ticker, tostring(entry_position), crossunder(sma(close, maSm), sma(close, maMed))) bull_exit = crossunder(k,d) bear_exit = crossover(k,d) if (bull_entry) strategy.entry("Long", strategy.long) if (bear_entry) strategy.entry("Short", strategy.short) strategy.close("Long", when = bull_exit == true) strategy.close("Short", when = bear_exit == true)