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

Calcular a porcentagem do lote - biblioteca para MetaTrader 5

Visualizações:
31
Avaliação:
(2)
Publicado:
Freelance MQL5 Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

A função CalculateLot foi projetada para calcular automaticamente o tamanho do lote de negociação com base nos princípios de gerenciamento de risco. Ela permite que um trader especifique a porcentagem do saldo da conta que ele está disposto a arriscar em uma negociação e, com base nisso, determine o volume ideal da posição.

Sintaxe

double CalculateLot(double riskPercent, double stopLossPips);

Parâmetros

Параметр        Тип     Описание
riskPercent     double  Процент от текущего баланса счета, которым трейдер готов рискнуть. Указывается в абсолютном значении (например, 2.0 = 2% от баланса).
stopLossPips    double  Расстояние до уровня Stop Loss в пунктах. Для 5-значных котировок указывается количество стандартных пунктов (например, 1000 = 1000 пунктов = 100 пипсов).

Valor de retorno

A função retorna o volume de lote normalizado ( double ), que:

  • Está em conformidade com as regras de arredondamento para a etapa de volume ( VOLUME_STEP );

  • Não excede o volume máximo permitido ( VOLUME_MAX );

  • Não seja menor que o volume mínimo permitido ( VOLUME_MIN ).

Se o valor calculado exceder os limites permitidos, a função retornará um valor limitado (minLot ou maxLot).

Algoritmo operacional

  1. Obtenção dos parâmetros da conta e do símbolo

    • Saldo atual ( ACCOUNT_BALANCE )

    • Valor do tique ( SYMBOL_TRADE_TICK_VALUE )

    • Mínimo, máximo e etapa de mudança de lote

  2. Cálculo do valor do risco na moeda do depósito

    riskAmount = баланс × (риск% / 100)

  3. Cálculo do volume do lote

    lotSize = riskAmount / (stopLossPips × tickValue)

  4. Normalização e validação

    • Arredondamento para a etapa mais próxima ( VOLUME_STEP )

    • Validação do valor mínimo e máximo

Exemplos de uso

Exemplo 1. Uso básico em um Expert Advisor

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnTick()
{
   //--- Definir risco de 1,5% do saldo e stop loss de 500 pips
   double lot = CalculateLot(1.5, 500);
   
   //--- Verifique se o lote foi calculado corretamente
   if(lot > 0.0)
     {
      //--- Obter preços atuais
      double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
      
      //--- Calcular níveis
      double sl = ask - 500 * _Point;
      double tp = ask + 1500 * _Point;
      
      //--- Abrir uma posição
      trade.Buy(lot, _Symbol, ask, sl, tp);
     }
}


Exemplo 2. Uso em um script com verificação de erros

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnStart()
{
   double riskPercent  = 2.0;   // Risco de 2% do saldo
   double stopLossPips = 1000;  // Stop loss de 1000 pontos
   
   double lot = CalculateLot(riskPercent, stopLossPips);
   
   //--- Informações de saída sobre o cálculo
   Print("=== Resultados do cálculo do lote ===");
   Print("Account Balance: ", AccountInfoDouble(ACCOUNT_BALANCE));
   Print("Risco, %: ", riskPercent);
   Print("A quantidade de risco: ", AccountInfoDouble(ACCOUNT_BALANCE) * riskPercent / 100.0);
   Print("Stop loss, pontos: ", stopLossPips);
   Print("Custo do tique-taque: ", SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE));
   Print("Lote calculado: ", lot);
   Print("================================");
   
   if(lot <= 0.0)
     {
      Alert("Erro: Falha no cálculo do lote. Verifique os parâmetros de risco e stop loss.");
     }
}

Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/71010

ZigZag Support and Resistance Detection ZigZag Support and Resistance Detection

O ZigZag SNR Detection identifica os níveis de suporte e resistência usando os pontos de pivô do ZigZag.

To Close All Open Trades of Different Symbols To Close All Open Trades of Different Symbols

Detalhes técnicos Usa o OrderSend da MQL5 com TRADE_ACTION_DEAL para fechamento instantâneo do mercado com os preços atuais de compra e venda. Inclui tolerância de slippage (10 pontos), correspondência adequada de volume e preservação do número mágico. Faz um loop para trás através das posições para evitar a mudança de índice durante a execução.

Accumulation/Distribution Accumulation/Distribution

O Indicador Accumulation/Distribution (Acumulação/Distribuição ou A/D) é determinado pelas mudanças de preço e volume.

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.