A necessidade do algoritmo de negociação aqui solicitado não é para se automatizar entradas nem saída, mas sim para automatizar partes de uma estratégia desenvolvida e já utilizada há bastante tempo de forma a reduzir a demanda manual de decisões por parte do operador (uma parte do código utilizado como indicador sem automação no profitchart, está disponível em anexo) O usuário é o responsável por indicar e definir as entradas, cabendo ao algoritmo definir o tamanho do lote, stoploss, movimentar o trallingstop e operar a compra e venda dos ativos O ponto mais crítico do algoritmo é que o robô deve compreender e executar suas ordens em cima dos parâmetros de projeção de fibonacci, que serão inseridas sempre pelo usuário. Abaixo explicamos como deve ocorrer o processo. 1) Configuramos o objeto expansão de Fibonacci no metatrader com os seguintes pontos e percentuais. Com isso, definimos os pontos a serem considerados como ponto de topo do pivot, fundo do pivot, entrada padrão e o ponto de stoploss. Sempre que o usuário inserir uma expansão ela vai aparecer esses níveis, já que são recordados pelo mt5 sempre. 2) Ao aplicar no gráfico a expansão, considerando uma compra, ou seja marcando a mesma de baixo para cima ela ficará conforme a imagem abaixo. 3) Ao aplicar no gráfico a expansão, considerando uma venda, ou seja marcando a mesma de cima para baixo ela ficará conforme a imagem abaixo. 4) Dessa forma, aplicado a expansão. O robô deverá fazer os cálculos operacionais de: a. Cálculo de tamanho de posição (modo padrão) b. Cálculo de tamanho de posição (modo manual) c. Cálculo de gatilho para breakeven d. Cálculo de gatilho para traillingstop, distância para última cotação e frequência para ajustes 5) O algoritmo deverá conseguir ler até cinco expansões de fibo ao mesmo tempo, onde as informações deverão ser disponibilizadas em um quadrado no gráfico conforme modelo abaixo (o ideal seria poder ativar e desativar a situação e o modo nesse painel, mas se não for possível, ok) a. Situação: Declaração que a expansão esta ativa e sendo lida pelo algorítimo quando ativa, ou quando inativa o algorítimo não irá fazer nenhum tipo de leitura ou calculo sobre a mesma. b. Sentido: Declaração se a expansão é de compra ou de venda (serve de segurança para ordens erradas). c. Modo: Declaração se o algoritmo irá calcular e executar as entradas em modo padrão ou manual (assunto a ser abordado mais abaixo) d. Lote: Tamanho do lote a ser ou que já foi executado. e. Topo Pivot, Fundo Pivot, StopLoss e Amplitude: São informações calculadas pelo algoritmo e ilustradas no quadro para serem checadas por segurança pelo usuário. Qualquer divergência deve-se inativar o algoritmo. Pivot1 Pivot2 Pivot3 Pivot4 Pivot5 Situação Ativa/Inativa Ativa/Inativa Ativa/Inativa Ativa/Inativa Ativa/Inativa Sentido Compra/Venda Compra/Venda Compra/Venda Compra/Venda Compra/Venda Modo Padrão/Manual Padrão/Manual Padrão/Manual Padrão/Manual Padrão/Manual Lote Calc Info Calc Info Calc Info Calc Info Calc Info Topo Pivot Input Info Input Info Input Info Input Info Input Info Fundo Pivot Input Info Input Info Input Info Input Info Input Info StopLoss Input Info Input Info Input Info Input Info Input Info Amplitude Pivot Calc Info Calc Info Calc Info Calc Info Calc Info 6) Com as informações já demonstradas iremos seguir para os cálculos e afirmações de cada uma das variáveis. 7) Situação: O algoritmo será ativado apenas quando houver o rompimento (para cima no caso de compra ou para baixo no caso de venda) do valor definido como topo do pivot e se isso ocorrer após o horário definido na expansão de fibo no mt5. Assim, quando traçamos a expansão temos então um valor designado como topo de pivot que deverá ser rompido e o horário ao qual estamos indicando que a operação apenas será valida se houver ou tiver havido um valor que rompeu ele nesse período. Se observarmos acima, para ser considerado ativo, a expansão deveria ter sido rompida no valor 114515 após o horário de 12:14 do dia 11/03/2022. Como não ocorreu o rompimento, o pivot estaria inativo, sem risco de deflagrar nenhuma ordem de compra ou venda de forma inapropriada. Já no caso abaixo, observe que ocorreu o rompimento, de forma que o pivot após seu rompimento muda seu status para ativo devendo abrir posição na medida que condicionantes fossem satisfeitas. Cabe aqui reforçar que a forma correta de traçar a expansão de fibo é clicando primeiro no fundo do pivot no local onde ele ocorre, e depois clicando no topo do pivot no local que ele ocorre. Dessa forma, sempre a segunda data vai ser o topo do pivot, no valor correto e horário correto de forma que não haja erros. A necessidade de haver essa restrição de rompimento do pivot após o horário indicado para a partir dai o algoritimo ficar ativo, se faz pois pode ocorrer do usuário traçar o pivot mas só cabe entrar após o movimento ocorrer de rompimento e após isso ser efetuado o pullback. Pode ocorrer também do usuário traçar o pivot e não estar na frente do computador o dia todo para acompanhar se houve ou não o rompimento, assim de forma a ter segurança, somente após o rompimento do topo, no sentido indicado e no horário indicado conforme tabela abaixo. Rompimento Compra Rompimento Venda Sentido Máxima > Topo do Pivot Mínima < Topo do Pivot Horário (Horario Maxima>Topo Pivot) >= Horario Indicado Expansão (Horario Maxima>Topo Pivot) >= Horario Indicado Expansão Por questão de segurança, o usuário poderá inativar o pivot a qualquer momento pelos parâmetros dos algoritmos. Todavia, considerando que pode ocorrer de o usuário não estar á frente do computador, o pivot pode ser acionado, ser estopado e permanecer ativo. Assim deverá haver um dispositivo no código de segurança para o robô não entrar duas vezes para a mesma expansão indicada sem alguma interferência do usuário. 8) Sentido: Aspecto óbvio, o sentido da operação pode ser determinado simplesmente pela diferença entre os valores de topo e fundo de pivot. No caso: Se (topodopivot>fundodopivot) = Compra Se (topodopivot