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
- Visualizações:
- 31
- Avaliação:
- Publicado:
-
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
-
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
-
-
Cálculo do valor do risco na moeda do depósito
riskAmount = баланс × (риск% / 100) -
Cálculo do volume do lote
lotSize = riskAmount / (stopLossPips × tickValue)
-
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
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
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
O Indicador Accumulation/Distribution (Acumulação/Distribuição ou A/D) é determinado pelas mudanças de preço e volume.
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.
