基于Renko砖和TEMA指标的微利策略


创建日期: 2023-09-20 14:36:46 最后修改: 2023-09-20 14:36:46
复制: 0 点击次数: 613
avatar of ChaoZhang ChaoZhang
1
关注
1362
关注者

概述

该策略是一个相对简单的微利策略,主要运用Renko砖和TEMA指标识别趋势,进行反转交易。策略逻辑简单直观,通过参数优化可以获取稳定收益。

策略原理

  1. 使用Renko砖替代K线,能更清晰地识别价格走势。

  2. TEMA指标相比EMA延迟更小,可以提早捕捉到趋势转折。

  3. 当TEMA上穿短期SMA时做多,下穿时平仓。Renko砖使穿越更可靠。

  4. 价格高于长期SMA时不追涨,避免持仓过重。

  5. 设置止盈条件,只有达到最小收益要求才会平仓。

优势分析

  1. Renko砖和TEMA指标组合简单有效。

  2. 清晰识别趋势,避免反复冲突交易。

  3. TEMA减小延迟,让入场更及时。

  4. 合理止盈止损控制风险。

  5. 适合高频小资金交易。

风险分析

  1. 无法及时重新累积仓位,难以持续获利。

  2. 参数设定不当可能错过交易机会。

  3. 无法控制单向持仓量,存在亏损扩大的风险。

  4. 难以获取充分利润,更适合小额套利。

优化方向

  1. 优化SMA和TEMA参数,找到最佳组合。

  2. 测试不同止盈条件,平衡收益和风险。

  3. 添加开仓次数限制,控制单向仓位。

  4. 结合波动率指标设定止损点。

  5. 评估配合其他策略,实现盈利放大。

总结

该策略运用Renko砖和TEMA指标判断趋势简单有效,适合高频小资金套利,但扩大盈利空间有限。通过参数优化及风险控制手段可提高效果,也可尝试与其他策略配合使用,对改进空间较大。

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

//@version=2
strategy("TEMA Cross", overlay = true, precision = 7, overlay=true, pyramiding = 100, commission_type = strategy.commission.percent, commission_value = 0.25)

tema(src, len) =>
    3*ema(src, len) - 3*ema(ema(src, len), len) + ema(ema(ema(src, len),len),len)

smma(src, len) =>
    sa = 0.0
    sa := na(sa[1]) ? sma(src, len) : (sa[1] * (len - 1) + src) / len
    sa

temaLength = input(5)
smaLength = input(3)
smmaLength = input(30)
tema1 = tema(close, temaLength)
sma1 = sma(tema1, smaLength)
smma1 = smma(close,smmaLength)


plot(tema1, color = green, title = "TEMA")
plot(sma1, color = orange, title = "SMA")
plot(smma1, color = red, title = "SMMA")

minGainPercent = input(2)
gainMultiplier = minGainPercent * 0.01 + 1

avg_protection = input(1)
gain_protection = input(1)

longCondition = crossover(tema1, sma1) and tema1 < smma1
shortCondition = crossunder(tema1, sma1)

strategy.entry("Buy", strategy.long, qty = 1, when = longCondition and time > timestamp(2017, 9, 22, 4, 20)  and (avg_protection >= 1 ? (na(strategy.position_avg_price) ? true : close <= strategy.position_avg_price) : true))
strategy.close_all(when = shortCondition and time > timestamp(2017, 9, 22, 4, 20) and (gain_protection >=1 ? (close >= gainMultiplier * strategy.position_avg_price) : true))