Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
Position sizing from risk, using the broker's own tick value and volume step - biblioteca para MetaTrader 5
- Visualizações:
- 12
- Avaliação:
- Publicado:
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Qualquer calculadora de tamanho de lote que parta do princípio de que um pip vale dez dólares está errada no ouro, errada nos índices, errada nos pares com o JPY e errada em qualquer conta que não seja denominada em USD — e é exatamente aí que o excesso de tamanho prejudica. Este cabeçalho, por outro lado, faz os cálculos com base no que o servidor realmente publica para o símbolo.
O que ela faz 
CalcLots() recebe um valor de risco na moeda da conta, um preço de entrada e um preço de stop, e retorna o volume a ser negociado juntamente com o risco real desse volume após a aplicação das restrições da corretora.
- Ele sempre arredonda o volume PARA BAIXO, de acordo com o passo de volume da corretora. Arredondar para cima implicaria, sem que você percebesse, um risco maior do que o solicitado, o que é a única coisa que uma rotina de dimensionamento nunca deve fazer.
- Quando o risco solicitado é menor que o lote mínimo, a função não simula. Ela retorna o mínimo, define clamped_min e informa o risco que a posição realmente acarreta — que será maior do que o solicitado.
- É independente do lado. O stop pode ficar acima ou abaixo da entrada.
Ela também retorna a distância do stop em pontos e o valor de um ponto por 1,00 lote, para que quem a chama possa entender como funciona, em vez de apenas ver um número.
Por que a matemática está em um cabeçalho separado
O Calc.mqh não mantém nenhum estado no terminal. Ele recebe uma estrutura SymbolSpec — ponto, tamanho do tick, valor do tick, volume mínimo/máximo/passo, dígitos — para que toda a lógica de dimensionamento possa ser executada offline com instrumentos sintéticos.
SpecFromSymbol() é a única ponte para dados em tempo real. Ele lê primeiro o SYMBOL_TRADE_TICK_VALUE_LOSS, pois esse é o valor que o servidor usa quando uma operação vai contra você, que é exatamente o lado em que um stop loss se situa; ele recorre ao SYMBOL_TRADE_TICK_VALUE para corretoras que deixam a variante de perda em zero.
É essa separação que torna o script de teste incluído possível.
O script de teste
RiskLotCalculatorTests.mq5 é executado em qualquer gráfico, sem conexão com corretora e sem histórico. Ele verifica 41 casos: arredondamento de passo de volume, ambos os limites e seus indicadores, escalonamento do valor do ponto quando o tamanho do tick difere do tamanho do ponto, um par principal de 5 dígitos, ouro, um índice com passo de 0,1 lote, ambas as direções de negociação e todos os caminhos de rejeição — risco zero, risco negativo, um stop na entrada e dados de tick ausentes.
Arraste-o para um gráfico e leia a aba “Experts”. Ele termina com “ALL PASS”, aprovados=41, reprovados=0.
Ambos os arquivos são independentes: coloque-os na mesma pasta e o script de teste será compilado como está.
Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/77488
RiskPilot Pro — Painel de risco com a funcionalidade “arrastar para negociar”, incluindo ponto de equilíbrio, stop móvel e proteção contra perdas diárias
Arraste seu stop loss até onde você realmente deseja, clique em “Comprar” ou “Vender”, e o tamanho do lote já estará correto — sem precisar de calculadora nem planilha. O sistema lida com o ponto de equilíbrio, o trailing stop e encerra as negociações do dia caso você atinja seu limite de perda.
Monitor de Spread
Spread Monitor — um indicador informativo simples para o MetaTrader 5.
Contract Sizer: ladder, floor and a breaker that survives a deposit
Três proteções de dimensionamento de posição que funcionam de maneiras diferentes; confundir essas proteções é o motivo pelo qual tantas contas vão à falência: - ladder: um contrato por cada X do saldo, sempre aplicada como um limite máximo (CAP), mesmo com dimensionamento manual de lotes; - floor: abaixo do capital mínimo, a conta não opera; é necessário um novo depósito; - breaker: interrompe a operação quando o saldo fica X% abaixo do pico, independentemente do tamanho da conta, e não se reativa automaticamente. O que esta biblioteca resolve e quase nenhuma outra resolve: um depósito não é lucro, e um saque não é perda. O breaker mede a queda em relação ao pico do saldo. Se não for tratado, um depósito feito DURANTE uma queda eleva o saldo e o pico juntos, e a proteção deixa de detectar a queda exatamente quando seria útil. Aqui, depósitos e saques alteram o pico no mesmo valor. O pico é salvo em um arquivo: um limitador que esquece o pico ao reiniciar o terminal não é um limitador. A demonstração simula um depósito no ponto mais baixo de uma queda. Execute-a com o depósito ativado e desativado e compare a coluna “queda”.
Accelerator Oscillator (AC)
O Indicador Acceleration/Deceleration (Aceleração/Desaceleração ou AC) mede a aceleração e a desaceleração da força motriz atual do mercado.