贪婪策略

定义

如果当前开盘价与前一根K线的高点或低点之间存在差距,贪婪策略会打开一个初始订单。如果开盘价大于前一个高点,则策略做多,如果开盘价低于前一个K线的低点,则开空仓。开仓后,只要蜡烛的颜色与开仓一致,就会继续向同一方向填单。如果当前仓位是多头,将为每个后续的绿色蜡烛创建新的多头订单,反之亦然。这将继续进行,直到出现不同颜色的蜡烛或达到一天的已执行订单限制。

可以通过编辑“最大日内已执行订单”值在设置中更改限制。Tp 和 Sl 设置允许您设置止损和止盈。该值表示高于/低于 TP 和 SL 所在的仓位价格的mintick数。

计算

Pine脚本

//@version=5

strategy("Greedy Strategy", pyramiding = 100, calc_on_order_fills=false, overlay=true)

tp = input(10)

sl = input(10)

maxidf = input(title="Max Intraday Filled Orders", defval=5)

strategy.risk.max_intraday_filled_orders(maxidf)

upGap = open > high[1]

dnGap = open < low[1]

dn = strategy.position_size < 0 and open > close

up = strategy.position_size > 0 and open < close

strategy.entry("GapUp", strategy.long, stop = high[1], when = upGap)

strategy.entry("Dn", strategy.short, stop = close,  when =  dn)

strategy.entry("GapDn", strategy.short, stop = low[1], when = dnGap)

strategy.entry("Up", strategy.long, stop = close,  when =  up)

strategy.cancel("GapUp", not upGap)

strategy.cancel("GapDn", not dnGap)

strategy.cancel("Up", not up)

strategy.cancel("Dn", not dn)

XQty = strategy.position_size < 0 ? -strategy.position_size : strategy.position_size

dir = strategy.position_size < 0 ? -1 : 1

lmP = strategy.position_avg_price + dir*tp*syminfo.mintick

slP = strategy.position_avg_price - dir*sl*syminfo.mintick

float nav = na

revCond = strategy.position_size > 0 ? dnGap : (strategy.position_size < 0 ? upGap : false),

strategy.order("TP", strategy.position_size < 0 ? strategy.long : strategy.short, XQty, lmP, nav, "TPSL",  strategy.oca.reduce, "TPSL", when=  not revCond and XQty > 0)

strategy.order("SL", strategy.position_size < 0 ? strategy.long : strategy.short, XQty, nav, slP, "TPSL",  strategy.oca.reduce, "TPSL", when= not revCond and XQty > 0)

strategy.cancel("TP", XQty == 0 or revCond)

strategy.cancel("SL", XQty == 0 or revCond)

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)

总结

贪婪策略的创建是为了利用任一方向的差距。 然后它通过上行或下行的势头加速进入这些缺口。如果当前开盘价与前一根K线的高点或低点之间存在差距,则该策略会打开一个初始订单。如果开盘价高于前一个高点,则策略做多,如果开盘价低于前一根K线的低点,则开空头仓位。 开仓后,只要蜡烛的颜色与开仓一致,就会继续向同一方向填单。