Stratégie "cupide" (greedy strategy)


DéfinitionLa stratégie "Greedy" ouvre un ordre initial s'il y a un écart entre l'ouverture actuelle et le haut ou le bas de la barre précédente. Si l'ouverture est supérieure au plus haut précédent, la stratégie prend une position longue, si l'ouverture est inférieure au plus bas de la barre précédente, elle ouvre une position courte. Après l'ouverture d'une position, la stratégie continuera à remplir des ordres dans la même direction tant que la couleur de la bougie est cohérente avec la position ouverte. Si la position actuelle est longue, de nouveaux ordres longs seront créés pour chaque bougie verte consécutive et vice versa. Cette opération se poursuivra jusqu'à ce que la bougie soit d'une couleur différente ou jusqu'à ce que la limite des ordres exécutés pour une journée soit atteinte. La limite peut être modifiée dans les paramètres en éditant la valeur Max Intraday Filled Orders. Les paramètres Tp et Sl vous permettent de définir le Stop Loss et le Take Profit. La valeur représente le nombre de miniatures au-dessus/au-dessous du prix de la position où le TP et le SL seront situés.Calculs
Pine Script
//@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)
RésuméLa stratégie Greedy a été créée pour tirer profit des écarts dans les deux directions. Elle accélère ensuite dans ces écarts en jouant sur le momentum à la hausse ou à la baisse. La stratégie ouvre un ordre initial s'il y a un écart entre l'ouverture actuelle et le haut ou le bas de la barre précédente. Si l'ouverture est supérieure au sommet précédent, la stratégie prend une position longue et si l'ouverture est inférieure au creux de la barre précédente, elle ouvre une position courte. Après l'ouverture d'une position, la stratégie continue à passer des ordres dans la même direction tant que la couleur de la bougie correspond à la position ouverte.