strategy.oca.cancel
Assim que uma ordem do grupo for preenchida, mesmo que parcialmente, ou cancelada, as outras ordens do mesmo grupo são canceladas.
É importante considerar que ordens diferentes no mesmo grupo com o mesmo preço ou preços muito próximos pode ser preenchidas.
Este tipo de grupo OCA está disponível apenas para entrada de ordens porque todas as saídas são enviadas em strategy.oca.reduce
//@version=4
strategy("oca_cancel demo")
if year > 2014 and year < 2016
strategy.entry("LE", strategy.long)
strategy.entry("SE", strategy.short)
Você pode ter a impressão que essa é uma estratégia de reversão já que pyramiding não é permitido, mas o fato é que ambas ordens serão preenchidas porque ambas são ordens a mercado, o que siginifca que são pra ser executadas imediatamente no preço atual.
//@version=4
strategy("oca_cancel demo")
if year > 2014 and year < 2016
strategy.entry("LE", strategy.long, oca_type = strategy.oca.cancel, oca_name="Entry")
strategy.entry("SE", strategy.short, oca_type = strategy.oca.cancel, oca_name="Entry")
strategy.oca.reduce
Este tipo de grupo permite múltiplas ordens dentro do grupo serem preenchidas.
Assim que uma das ordens do grupo começa a ser preenchida, o tamanho das outras ordens reduzem na quantidade executada.
É útil para estratégias de saída. Uma vez que o preço toca a ordem take-profit e esta está sendo preenchida, a ordem stop-loss não é cancelada mas o seu tamanho é reduzida pela quantidade executada, protegendo o restante da posição aberta.
//@version=4
strategy("My Script")
if year > 2014 and year < 2016
strategy.entry("Compra", strategy.long, oca_name="My oca", oca_type=strategy.oca.reduce)
strategy.exit("DaCompra", "Compra", profit=100, loss=200, oca_name="My oca")
strategy.entry("Venda", strategy.short, oca_name="My oca", oca_type=strategy.oca.cancel)
strategy.order("Ordem", strategy.short, oca_name="My oca", oca_type=strategy.oca.none)
“Compra” e “Venda” serão colocadas em grupos diferentes por terem tipos diferentes.
“Order” estará fora de qualquer grupo já que tem seu tipo definido como strategy.oca.none.
“Compra” será sempre colocada no grupo de saída já que saídas são sempre colocadas no grupo de tipo strategy.oca.reduce_size