tradingview:backtesting:grupos_oca
Grupos OCA
- É possível colocar ordens em 2 grupos OCA diferentes (On-Cancells-All) no Pine.
- 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.
- A segunda ordem não é cancelada porque ambas são preenchidas quase ao mesmo tempo e o sistema não tem tempo de processar a primeira ordem e cancelar a segunda antes desta ser também executada.
- O mesmo aconteceria se essas fossem ordens a preço com o mesmo preço ou preços muito próximos, A estratégia enviar todas as ordens permitidas de acordo com a posição no mercado.
- A estratégia enviar todas as ordens que não contradizem as regras (no caso - a posição no mercado é constante, portanto qualquer ordem de entrada pode ser preenchida).
- A cada variação de tick, primeiro as ordens que tem suas condições satisfeitas são executadas e apenas então as ordens de grupos onde uma ordem foi executada terá as outras ordens canceladas.
- Para tornar a estratégia acima em uma estratégia de reversão você precisa enviar ordens no grupo OCA.
//@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.
- strategy.oca.none
- A ordem é enviada fora do grupo - valor padrão das funções strategy.order and strategy.entry
- Todo grupo tem seu próprio identificador ID único - assim como ordens.
- Se 2 grupos tem o mesmo ID - mas tipos diferentes - esses serão considerados grupos diferentes.
//@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
tradingview/backtesting/grupos_oca.txt · Última modificação: 05/04/2023 08:25 por 127.0.0.1