Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Bibliotecas

Position sizing from risk, using the broker's own tick value and volume step - biblioteca para MetaTrader 5

Ralph Ivan Simeon
Ralph Ivan Simeon
I build and audit automated trading systems for MetaTrader 5, with most of my work on XAUUSD.
| Portuguese English Русский 中文 Español Deutsch 日本語 한국어 Français Italiano Türkçe
Visualizações:
12
Avaliação:
(2)
Publicado:
Freelance MQL5 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 O que a função CalcLots() retorna, incluindo o caso em que a maioria das rotinas de dimensionamento comete um erro

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 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 Monitor de Spread

Spread Monitor — um indicador informativo simples para o MetaTrader 5.

Contract Sizer: ladder, floor and a breaker that survives a deposit 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) 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.