基于跟踪止损和追踪买入的简单策略


创建日期: 2024-01-19 14:30:59 最后修改: 2024-01-19 14:30:59
复制: 4 点击次数: 314
1
关注
1105
关注者

基于跟踪止损和追踪买入的简单策略

概述

该策略实现了一个基于百分比的简单跟踪止损与跟踪买入组合。通过在不同的时间框架和不同的图表上试验不同的百分比组合,可以实现对策略参数的优化。

策略原理

该策略主要通过两个指标实现跟踪止损和跟踪买入:

  1. 跟踪止损线(Trailing Stop Line,TSL):根据用户设定的止损偏移百分比,并基于最近N根K线的收盘价的移动平均计算得出。当价格低于该线时,平仓止损。
  2. 跟踪买入线(Trailing Buy Line,TBL):根据用户设定的买入偏移百分比,并基于最近N根K线的最高价的移动平均计算得出。当价格高于该线时,建立多头仓位。

通过比较价格与这两个指标的关系,实现止损和追买的规则。

策略优势

该策略具有以下优势:

  1. 简单直观,容易理解和实施;
  2. 可以通过调整参数实现止损和追买的弹性;
  3. 可以适用于不同市场和不同时间周期;
  4. 可以实现趋势跟踪,及时止损。

策略风险

该策略也存在以下风险:

  1. 参数设置不当可能导致过于激进的止损或追买;
  2. 在震荡市场中可能导致频繁交易和滑点损失;
  3. 需要适当优化参数以适应不同市场的特点。

策略优化方向

该策略可以从以下几个方面进行优化:

  1. 利用自适应算法自动优化止损仓位 和 买入参数;
  2. 增加仓位数量和风险管理模块;
  3. 结合其他指标判断大趋势,避免在震荡行情中被套。

总结

该策略整体来说是一个非常简单直观的趋势跟踪策略。通过参数调整可以适用于不同市场,而结合自适应算法和其他指标可以进一步增强策略的稳定性和实用性。总的来说,该策略为量化交易提供了一个简单但有效的基础策略框架。

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

//@version=2
//Developed from ©Finnbo code
strategy("Simple Trailing Buy & Stop Strategy", overlay=true)
offset = input(defval=1.5, title="Stop Offset %", type=float, minval=0.1, maxval=100, step=0.1)
buyoffset = input(defval=1.9, title="Trailing Buy Offset %", type=float, minval=0.1, maxval=100, step=0.1)

sumbars = input(defval=6, title="Use last x bars for calculation",  minval=1)
srcts = input(title="Source Trailing Stop calculation",  defval=close)
srctb = input(title="Source Trailing Buy calculation",  defval=close)
srctrigger = input(title="Source Stop Trigger",  defval=low)
srctriggerbuy = input(title="Source Buy Trigger",  defval=high)
tsl = rma(srcts, sumbars)*(1-(offset/100))// = (sum(srcts,sumbars)/sumbars)*(1-(offset/100))
tbuy = rma(srctb, sumbars)*(1+(buyoffset/100))
plot(tsl, color=(srctrigger<tsl)?red:green)
plot(tbuy, color=(srctriggerbuy>tbuy)?red:green)
//plotshape(crossunder(srctrigger,tsl), text="Long Stop", style=shape.circle, color=red)
alertcondition(crossunder(srctrigger,tsl), "Long Stop alert", "SELL")
//plotshape(crossover(srctriggerbuy,tbuy), text="Long", style=shape.circle, color=green)
alertcondition(crossover(srctriggerbuy,tbuy), "Long alert", "BUY")

longCondition =  crossover(srctriggerbuy,tbuy)
if (longCondition)
    strategy.entry("Long", strategy.long)
closeCondition = crossunder(srctrigger,tsl)
if (closeCondition)
    strategy.close("Long")
更多内容