这个策略主要利用K线的震荡区间和趋势判断来寻找入场机会。它会在价格突破前一根K线的高点或低点时发出交易信号。在趋势向上时,当价格突破高点时做多;当趋势向下时,价格突破低点时做空。
这个策略主要基于两点:
Klinger 振荡器判断趋势方向。当指标大于0时表示多头趋势,小于0时表示空头趋势。
价格突破前一根K线的最高价或最低价。在多头趋势下突破最高价做多,空头趋势下突破最低价做空。
具体来说,策略的入场逻辑如下:
多头入场: 1. 当前K线高点大于前一K线高点 2. 当前K线低点小于前一K线低点 3. Klinger 振荡器大于0,表示多头趋势 4. 当前K线收盘价上穿Hull移动平均线 5. 当前K线为多头K线(收盘价高于开盘价)
空头入场:
1. 当前K线高点小于前一K线高点
2. 当前K线低点大于前一K线低点
3. Klinger 振荡器小于0,表示空头趋势
4. 当前K线收盘价下穿Hull移动平均线
5. 当前K线为空头K线(收盘价低于开盘价)
在入场后,止损或止盈价格根据入场价格的一定百分比设置。
该策略的主要优势有:
能够在趋势发生转折时及时捕捉机会,增强获利概率。
使用Klinger 振荡器判断趋势方向,避免在震荡市场无方向交易。
结合移动平均线过滤假突破。
风险可控,止损止盈设置合理。
该策略主要风险有:
在震荡行情中,可能出现较多止损。
移动平均线参数设置不当可能导致误判。
突破失败可能形成回调损失。
趋势反转时,亏损可能扩大。
交易频繁,手续费用成本较高。
可以通过优化参数,寻找更合适的移动平均线期数来减少误判。合理设置止损距离,控制单笔损失。寻找交易行情趋势明显的品种进行交易。适当减少交易频率等方法可以控制风险。
该策略可以从以下几个方面进行优化:
优化移动平均线参数,找到平滑程度更高的参数,减少噪音。
测试不同的指标来判断趋势,寻找更可靠的判断指标。
优化止损止盈策略,使其更符合市场统计特性。
增加趋势过滤,避免震荡行情的虚假突破。
增加交易时间和品种过滤,选择交易时段和品种。
研究不同时间周期的参数设置。
这个策略整体来说是一个较简单实用的突破策略。它优点是风险可控,通过指标判断可避免无方向交易。但需要注意防止震荡市场的假突破和及时止损。通过参数优化和增强指标可靠性,可以进一步提高策略顺利率。该策略适用于趋势较明显的市场,如果用在具有较强震荡的品种和时间周期上,效果可能会打折扣。
/*backtest start: 2022-10-20 00:00:00 end: 2023-10-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © exlux99 //@version=4 strategy("Advanced OutSide Forex strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick = true, commission_type = strategy.commission.percent, commission_value = 0.0) sv = change(hlc3) >= 0 ? volume : -volume kvo = ema(sv, 34) - ema(sv, 55) sig = ema(kvo, 13) length = input(title="Length", type=input.integer, defval=27) src = input(close, title="Source") lsma = hma(src, length) if (high > high[1] and low < low[1]) if (close > open and kvo>0 and lsma<close) strategy.entry("long", strategy.long, comment="long") if (high < high[1] and low > low[1]) if (close < open and kvo<0 and lsma>close) strategy.entry("short", strategy.short, comment="short") tplong=input(0.006, step=0.001, title="Take profit % for long") sllong=input(0.012, step=0.001, title="Stop loss % for long") tpshort=input(0.0075, step=0.001, title="Take profit % for short") slshort=input(0.015, step=0.001, title="Stop loss % for short") strategy.exit("short_tp/sl", "long", profit=close * tplong / syminfo.mintick, loss=close * sllong / syminfo.mintick, comment='LONG EXIT', alert_message = 'closeshort') strategy.exit("short_tp/sl", "short", profit=close * tpshort / syminfo.mintick, loss=close * slshort / syminfo.mintick, comment='SHORT EXIT', alert_message = 'closeshort')