该策略运用两组不同参数设置的随机指标,实现多空条件判断,属于典型的均线交叉系统。利用快速指标判断短期趋势和入场时机,慢速指标确定大趋势方向,两者结合形成交易信号。
快速随机指标K值表示短期趋势方向,K线交叉其移动平均线SM1构成入场信号。
慢速随机指标K值反映大趋势情况。当快速指标显示反转信号时,查看慢速指标判断大方向的合理性。
K快速上穿SM1时视为看涨信号;当慢速K大于50时,表示大趋势向上,满足做多条件。
K快速下穿SM1时视为看跌信号;当慢速K小于50时,表示大趋势向下,满足做空条件。
设置止盈止损点,以固定比例止盈止损。
双随机指标过滤噪音,提高成功率。快慢配合降低被套风险。
SM1参数较小,K指标灵敏,适合捕捉短线机会。
大周期判断大趋势,小周期捕捉反转。多空策略符合多数市场情况。
固定止盈止损点,风险收益可控,不容易起伏过大。
指标之间产生背离时会漏失交易机会或产生错误信号。
固定止盈止损点不够灵活,无法根据市场变化调整。
lbl指标参数需要反复优化测试,不恰当会失效。
短周期交易需要较高交易频率,增大交易成本。
增加其他指标或过滤条件,确保指标信号质量。
测试不同参数组合,找到最佳参数配置。
结合波动率指标等,使止盈止损水平动态调整。
采用时间段过滤,避开关键事件,控制非理性波动。
优化资金管理策略,选时加减仓,提高资金使用效率。
该策略整合快慢随机指标形成多空交易体系。但需进一步优化参数设定,并辅以趋势、波动率等指标作为过滤条件。在严格控制风险的情况下,该策略可获取较为稳定的超额收益。
/*backtest
start: 2023-08-17 00:00:00
end: 2023-09-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Double Stochastic", overlay=true)
//-----------------------Stochastics------------------------//
c= security(syminfo.tickerid,timeframe.period , close)
h= security(syminfo.tickerid, timeframe.period, high)
l= security(syminfo.tickerid, timeframe.period, low)
c1= security(syminfo.tickerid, timeframe.period, close)
h2= security(syminfo.tickerid, timeframe.period, high)
l1= security(syminfo.tickerid, timeframe.period, low)
K1 = input(5, title="K", minval=1, title="Leading K")
SM1 = input(2, title="Smooth", minval=1, title="Leading Smooth ")
k = ema(stoch(c, h, l, K1), SM1)
K2 = input(97, title="K", minval=1, title="Lagging K")
D2 = input(3, title="D", minval=1, title="Lagging D")
SM2 = input(1, title="Smooth", minval=1, title="Lagging Smooth")
k1 = ema(stoch(c1, h2, l1, K2), SM2)
// buy ((k[2] < 40 and k > 40) and bars_up > 0 and k1 > 50)
// sell (k[2] > 60 and k < 60) and bars_down > 0 and k1 < 50
//-----------------------Mechanics------------------------//
buy = k1 > 50 and k < 30 and k > k[1] ? 1 : 0
sell = k1 < 50 and k > 70 and k < k[1] ? 1 : 0
buy_val = valuewhen(buy == 1, close, 1)
sell_val = valuewhen(sell == 1, close, 1)
buy_close = buy_val * input(1.20, minval=0.1)
sell_close = sell_val / input(1.20, minval=0.1)
//------------------------Buy/Sell-------------------------//
longCondition = buy == 1
if (longCondition)
strategy.entry("My Long Entry Id", strategy.long)
close_long = close >= buy_close
if (close_long)
strategy.close("My Long Entry Id")
sellCondition = sell == 1
if (sellCondition)
strategy.entry("My Short Entry Id", strategy.short)
close_short = close <= sell_close
if (close_short)
strategy.close("My Short Entry Id")