本策略通过分析过去N根K线的收盘价高于/低于开盘价的情况,来判断未来K线的方向。根据K线方向多空情况,采取做多或做空操作。
该策略的核心逻辑是:
设置参数NUM_CANDLES,确定需要分析的K线数量。
定义函数candle_dir,判断单根K线的方向。close>open为多头,close
定义函数count_candles统计过去NUM_CANDLES根K线中不同方向K线的数量。
统计过去NUM_CANDLES根K线中多头、空头和震荡K线的数量,存储在ups、dns、neu中。
定义indic指标,其值等于ups-dns再加上neu的正负值。
根据indic指标判断做多和做空时机。
该策略通过统计一定数量K线的方向,来判断未来K线方向的概率,从而做出交易决策。通过参数NUM_CANDLES可以控制统计K线数量,调整策略灵敏度。
策略思路清晰易懂,容易解释和验证。
无需计算复杂指标,只需要K线数据,降低了计算成本。
可通过参数调整统计K线数量,控制策略灵敏度。
可在任何品种和任何周期使用,适用性强。
容易进行参数优化,寻找最优参数组合。
无法处理盘整震荡市,可能出现频繁开仓平仓。
统计周期不当可能导致信号产生滞后,需要合理设置参数。
无法处理趋势反转,可能出现逆势亏损的风险。
需要考虑交易成本的影响,防止过于频繁交易。
需注意参数优化过拟合问题,应多市场回测验证。
可以考虑加入止损逻辑,降低亏损风险。
可以结合趋势指标,避免逆势操作。
可以加大统计周期或使用低周期,优化参数提高策略稳定性。
可以考虑多品种复合,提高策略胜率。
可以结合机器学习方法自动优化参数。
本策略基于K线方向分析确定交易方向,思路清晰易懂,通过参数设置可以控制策略灵敏度。策略优点是逻辑简单、使用要求低、适用面广,但也存在一定的风险,需要进一步优化提高策略稳定性。总体来说,本策略为量化交易提供了一种简单实用的交易思路。
/*backtest start: 2023-09-24 00:00:00 end: 2023-10-24 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Refined CandleCounter Strategy by origo", overlay=true) // how many candles to count NUM_CANDLES = 7 // determine candle direction candle_dir = close > open ? 1 : (round(close-open) == 0 ? 0 : -1) // return # of candles with a given direction count_candles(dir, max) => count = 0 for i = 0 to max if candle_dir[i] == dir count := count + 1 count ups = count_candles(1, NUM_CANDLES) dns = count_candles(-1, NUM_CANDLES) neu = count_candles(0, NUM_CANDLES) indic = ups-dns if indic > 0 indic := indic+neu else indic := indic-neu plotarrow(neu, title="UP vs DN") longCondition = (indic) > 0 shortCondition = (indic) <= 0 strategy.entry("buy", strategy.long, 1, when = longCondition and not shortCondition) strategy.entry("sell", strategy.short, 1, when = shortCondition and not longCondition)