Termos de Referência
Gostaria que fosse feito um robô que operasse ações, milho e outras comoddities com duas estratégias:
1 -Exemplo no milho, quando a média móvel exponencial de 9 períodos virar para cima, ele fará uma entrada na compra de 2 contratos (parâmetro 2), e se continuar virada pra cima, e fizer dois candles com fechamentos menores no gráfico diário, se superar a máxima desse candle no dia seguinte, ele fará outra entrada com mais 2 contratos (parâmetro 3). E assim sucessivamente. O fechamento de toda a posição se dará quando a média móvel exponencial virar para baixo (fechará a posição e abrirá posição do lado contrário). O robô fará as entradas e saídas as 16:00 do dia corrente (todo dia nessa hora (padrão parâmetro 5) ele verifica se a mme9 virou pra cima ou pra baixo e realiza as entradas/ saídas no mesmo dia da virada da média chamando a função 3 especificada abaixo).
2 - Igual à primeira, com uma modificação: quando fizer alguma das duas entradas (virou mm9 pra cima ou pra baixo, ou superou dois candles com fechamentos contra a média), o robô cadastrará todo dia o stop loss 1 centavo abaixo da mínima do candle do dia que gerou a entrada, e o stop gain de metade da posição (no caso do exemplo com 1 contratos, seria 1 contratos a metade da posição), no valor do stop gain 1x pra cima também (preço médio de entrada - stop loss), tanto na entrada quando vira a média móvel exponencial, quanto na entrada dos dois fechamentos menores, chamando a função 3 especificada abaixo. O robô irá renovar as ordens de gain e loss na abertura de todo pregão baseado no parâmetro 4. O sistema fará a saída total da posição, quando a média móvel exponencial de 9 virar pra baixo (fechará a posição e abrirá posição do lado contrário).
3 - Detalhe, para entrar e sair das posições, fazer uma função que recebe o nome ativo, tamanho da posição (no robô atual será o parâmetro 2 ou 3), segundos para atualizar (parâmetro 8) e tempo máximo (parâmetro 9), para o robô colocar a ordem de entrada ou saída no topo do book (se for compra colocar 1 tick acima da primeira ordem do book), ao invés de entrar a mercado, e contar um tempo (parâmetro 8) e a cada tempo especificado, ler o book e atualizar se a ordem não estiver no topo do book. Se passar do tempo máximo (parâmetro 9) ele altera a ordem pra entrar a mercado ( por exemplo, se for uma compra, lê o book de venda, e coloca 10 ticks acima da maior ordem de venda pra ir a mercado)
Parâmetros:
0 - estratégia 1, 2 ou ambas - default estratégia 1
1 - ações ou contratos, pois contratos são múltiplos de 1 e ações múltiplos de 100
2 - numero de contratos/ações primeira entrada - default 2
3 - numero de contratos/ações entradas posteriores - default 2
4 - horário de início de negociação - default 9:00
5 - horário de entrada / saída - default 16:00
6 - tipo de média movel - default exponencial
7 - períodos da média - default 9
8 - segundos para atualizar as ordens de entrada/saída - default 6 seg
9 - tempo máximo para entrar a mercado