Meus segredos da Autolot. Lote dinâmico ou Autolot.

Alerta no indicador. Como inserir o alerta e a seta em seu indicador?
Mercado MQL5. Problema e erros com instalação do Expert Advisor e soluções
Alerta no indicador. Como inserir o alerta e a seta em seu indicador?
Mercado MQL5. Problema e erros com instalação do Expert Advisor e soluções

Descrição

Neste artigo, explicarei meus métodos para calcular o tamanho do lote com base em uma porcentagem (Risco em %) de Margem Livre em diferentes pares de moedas e vários tipos de depósitos. Autolot ou Lote Dinâmico a partir do saldo. RiskManager. Mostrarei meu código Autolot.

Vamos começar:

Conceitos Básicos:

Primeiro, vamos destacar alguns conceitos utilizados neste cálculo:

Margem Livre ( AccountFreeMargin() ) – fundos que não são utilizados como garantia em posições abertas. A Margem Livre é calculada usando a fórmula: Margem Livre = Saldo Atual do Depósito – Margem Necessária para Posições Abertas. Este indicador determina o número de transações que podem ser abertas no momento atual.

Ask é o preço pelo qual você compra uma certa quantidade de um instrumento financeiro do corretor. O corretor vende para você a esse preço. Ao negociar no mercado Forex, você encontrará esse tipo de preço em todos os lugares: desde o terminal de negociação até relatórios de ações e artigos analíticos sobre mercados financeiros.

Bid é o preço pelo qual você vende uma certa quantidade de um instrumento financeiro para o seu corretor. O corretor compra de você a esse preço. Ao negociar no mercado Forex, você encontrará esse tipo de preço onde quer que ocorram discussões sobre o mercado Forex internacional: desde o terminal de negociação e as taxas de câmbio no site do seu corretor até relatórios de ações e artigos analíticos sobre mercados financeiros internacionais.

Alavancagem é a relação entre o montante da garantia e o valor emprestado. Ao selecionar inicialmente a alavancagem, você escolhe o tamanho da alavancagem, que indica o multiplicador pelo qual o depósito do Cliente será aumentado para realizar operações de negociação no mercado Forex. O Cliente pode selecionar uma alavancagem de 1:1 a 1:500, o que significa que o Cliente pode negociar apenas com seus próprios fundos ou solicitar um aumento em seu depósito de até 500 vezes para entrar no mercado com esse montante. A Alavancagem, como a relação entre o montante com o qual um trader entra no mercado e o tamanho de seu depósito, desempenha um papel crucial no processo de negociação porque permite que um trader aumente significativamente seu capital.

Par de Moedas é a designação de duas moedas que juntas formam uma taxa de câmbio. O par de moedas serve como objeto para transações financeiras. Um par de moedas é denotado pelas designações sucessivas das duas moedas que compõem o par, escritas juntas ou separadas por uma barra na seguinte forma: moeda base / moeda cotada. A moeda base é a primeira moeda que é comprada e vendida, e a moeda cotada é usada para expressar o preço da moeda base. Um par de moedas é o conceito fundamental do mercado de câmbio, presente em todos os lugares sempre que se refere a este mercado: desde relatórios de mercado até o terminal de negociação.

Tamanho do Lote – o volume da moeda base, commodity ou o número de ações especificado na especificação do contrato. O tamanho do lote depende do montante de moeda especificado no contrato e é uma unidade de medida para determinar o tamanho do contrato de negociação. Um lote tem um tamanho específico, que é usado para determinar a quantidade de moeda usada para transações financeiras no mercado Forex. Para executar uma transação, o Cliente determina o tamanho da transação, expresso no número de lotes. O volume de uma transação de negociação indica quanta moeda comporá a transação. Um lote é o tamanho do contrato, uma quantidade fixa de moeda utilizada na negociação Forex.

A taxa de câmbio entre duas moedas é determinada pela interação de oferta e demanda em um momento específico.
Este processo é conhecido como cotação de moedas, e as cotações podem ser diretas ou invertidas.

Uma cotação direta reflete o preço de uma moeda estrangeira em unidades da moeda nacional.
A maioria das taxas de câmbio é expressa como cotações diretas do dólar americano em relação às moedas de vários países.

Por exemplo, USD/UAH—30.70 significa que um dólar americano vale 30.70 hryvnias ucranianas,
e USD/CHF—1.0850 indica que um dólar americano equivale a 1.0850 francos suíços.

Existe também o conceito de taxa de câmbio cruzada, onde o dólar americano não é nem a moeda base nem a moeda cotada.
Exemplos incluem EUR/JPY, GBP/CHF e EUR/GBP.

Aspecto Técnico

  1. NormalizeDouble – Arredonda um número de ponto flutuante para a precisão especificada.
  2. MODE_LOTSIZE – Tamanho do contrato na moeda base do instrumento.
  3. MODE_LOTSTEP – O passo para alterar o tamanho do lote.
  4. AccountCurrency – Retorna o nome da moeda para a conta atual.
  5. MathFloor – A função retorna o maior inteiro menor ou igual a x.


Essencial: Para garantir que todos os cálculos sejam precisos, ative todos os símbolos no painel “Market Watch” :

Minha Fórmula de Cálculo para a Moeda da Conta

Minha fórmula de cálculo é a seguinte:

Depósito USD

Depósito USD Cotação Direta ()

Lot = Margem Livre * Risco * Alavancagem / 100 / Tamanho do Contrato

Depósito USD Cotação Inversa()

Lot = Margem Livre * Risco * Alavancagem / Ask / 100 / Tamanho do Contrato

Depósito USD Taxa de Câmbio Cruzada:

Opção 1: Se houver um preço atual da moeda base + USD (por exemplo, se o par de liquidação for AUDCAD, então o preço atual da moeda base = AUDUSD)

Lot = Margem Livre * Risco * Alavancagem / (Preço Atual da Moeda Base + USD) / 100 / Tamanho do Contrato

Opção 2: Se não houver um preço atual da moeda base + USD (por exemplo, CADJPY)

Lot = Margem Livre * Risco * Alavancagem / 100 / Tamanho do Contrato

Depósito EUR

Depósito EUR Cotação Direta

Lot = Margem Livre * Risco * Alavancagem / 100 / Tamanho do Contrato

Depósito EUR Taxa de Câmbio Cruzada:

Preço atual = EUR + moeda cotada (por exemplo, se o par de liquidação for AUDCAD, então o preço atual é moeda cotada = EURAUD)

Lot = Margem Livre * Risco * Alavancagem / (preço atual EUR + moeda cotada) / 100 / Tamanho do Contrato

Depósito UAH e Outros

Depósito UAH Cotação Inversa (por exemplo, USDUAH)

Lot = MathFloor(Margem Livre * Risco * Alavancagem / 100 / Preço Atual / Tamanho do Contrato / Passo do Lot / 20) * Passo do Lot

Depósito UAH Taxa de Câmbio Cruzada (ex., EURGBP)

Preço atual = MarketInfo(StringSubstr(Symbol(), 0, 3) + UAH + StringSubstr(Symbol(), 6), MODE_BID);

if(pr != 0) Lot2 = MathFloor(Margem Livre * Risco * Alavancagem / Preço Atual / 100 / Tamanho do Contrato / Passo do Lot) * Passo do Lot;
else Lot = MathFloor(Margem Livre * Risco * Alavancagem / 100 / Tamanho do Contrato / Passo do Lot) * Passo do Lot;

A ordem dessas funções foi determinada calculando os parâmetros em diferentes depósitos.

Se você tiver sugestões para esses cálculos, por favor, compartilhe suas funções Autolot ao solicitar programação.

Ou Freelance: Programação Personalizada em MetaTrader e MQL! Concluir?

Variáveis Externas Função de Cálculo Autolot:

LotsLote fixo para abrir uma posição.
RiskLotType
TypeAutolot
Tipo de Cálculo Autolot:
BALANCE (Risco a partir do Saldo) – Autolot é calculado a partir do saldo atual. O cálculo do Lot é baseado no saldo da conta. Se houver posições abertas na conta, o próximo Lot será aproximadamente o mesmo porque o saldo não diminui com o número de posições abertas atuais!
FREEMARGIN (Risco a partir da Margem Livre) – O cálculo padrão do Lot a partir da margem livre atual é que quanto mais posições abertas na conta, menor será o Lot calculado para a próxima posição. Isso porque ao abrir uma posição, a margem livre diminui, então cada nova posição aberta tem um Lot menor ao calcular o Autolot.

Tipo de Cálculo de Risco para a Opção RiskLot:

Modos disponíveis:
RiskLotType = 0, // Risco a partir da Margem Livre
RiskLotType = 1, // Risco a partir do Saldo
DynamicLotLote dinâmico, Autolot, para uma posição aberta.
Você pode ativar o cálculo de lote dinâmico como uma porcentagem da margem livre e outros fatores.
Cálculo do Nosso Autolot:
Fórmula e código: https://expforex.com/pt/my-autolot-secrets-dynamiclot-autolot/#eb-table-content-4
DynamicLotStopLossRisco a partir do SL – Calcula o lote automático, levando em consideração o Stop Loss.
A perda máxima como uma porcentagem do saldo ao fechar um negócio no Stop Loss.
Ao calcular o lote, nosso Expert Advisor considera o stop loss no momento da abertura do negócio.
Se o negócio fechar no stop loss, a perda desse negócio será igual a uma porcentagem do saldo no momento da abertura do negócio.
Importante! Se o seu stop loss for alterado após a abertura do negócio, o tamanho do lote do negócio não pode ser alterado. Ao fechar o negócio, a perda pode ser maior ou menor.
Importante! Se você usar um Trailing Stop, o Stop Loss do negócio muda a cada tick, mas o tamanho do lote não pode ser alterado.
Fórmula e código: https://expforex.com/pt/my-autolot-secrets-dynamiclot-autolot/#eb-table-content-5
LotBalancePcnt
RiskLot
LotBalancePercent
Porcentagem para Autolot.
A porcentagem para a função de lote dinâmico (Autolot).

Se RiskLot = 0, então o LOT da transação (Volume) será calculado de acordo com o parâmetro Lot.

Se RiskLot for diferente de 0, então uma transação no terminal do cliente será aberta com um lote como uma porcentagem da margem livre do cliente (Autolot).
RiskRateA taxa da sua moeda em relação ao dólar (ou à moeda da sua conta).

Por padrão, RiskRate = 0, o que significa que o Expert Advisor tentará encontrar a taxa correta na Market Review.
Para que o Autolot funcione bem com todos os pares de moedas, você precisa ativar “Mostrar Todos os Pares de Moeda” no Market Watch.
MaxLotO lote máximo que um Expert Advisor pode abrir ao calcular um Autolot e Martingale para a primeira posição principal.
MartinMartingale. A multiplicação padrão do lote da última posição fechada com perda.

Se Martin = 1, então o martingale não é ativado (Lots Fixos).
Se Martin = 0, então o Expert Advisor não pode abrir a próxima posição.
Se Martin = 2, então o primeiro lote = 0.1, o segundo lote = 0.2, e assim por diante: 0.4 – 0.8 – 1.6 – 3.2 – 6.4…..
Se Martin = 0.5, então o primeiro lote = 1, o segundo lote = 0.5, e assim por diante: 0.25 – 0.125.

Você precisa de um código?

Cálculo Autolot Função de Código:

input  double                    Lots=0.01;                                //Lots --> Lote fixo para posições e ordens abertas
input bool DynamicLot=false; //DynamicLot --> Cálculo do lote a partir da margem livre
input bool DynamicLotStopLoss=false; //DynamicLotStopLoss --> Cálculo do lote a partir do StopLoss e da margem livre
input double LotBalancePercent=1; //LotBalancePercent --> Percentual para o cálculo do lote
extern double RiskRate=0; //RiskRate --> Taxa de câmbio do símbolo para a moeda de depósito no cálculo do lote
input double MaxLot=999; //MaxLot --> Lote máximo na abertura de posições
double GetSizeLot(double ll=1) // A função retorna o tamanho do lote
{
string Author = "Autor do template da função: www.expforex.com";
string lotcalc;
double pr;
string Valdepo = AccountCurrency();
// Se MM estiver habilitado, determine o tamanho do lote
double Lot2, MinLots, MaxLots;
int lotdig;
if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.01) lotdig = 2; else lotdig = 1;

if (Valdepo == "USD")
{
if (StringSubstr(Symbol(), 0, 3) == "USD")
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else if (StringSubstr(Symbol(), 3, 3) == "USD")
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / Ask / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
{
pr = MarketInfo(StringSubstr(Symbol(), 0, 3) + "USD", MODE_ASK);
if (pr != 0)
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / pr / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
}
}

if (Valdepo == "EUR")
{
if (StringSubstr(Symbol(), 0, 3) == "EUR")
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
{
pr = MarketInfo("EUR" + StringSubstr(Symbol(), 0, 3), MODE_BID);
if (pr != 0)
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() * pr / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
}
}

if (Valdepo == "UAH")
{
if (StringSubstr(Symbol(), 0, 3) == "USD")
Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else if (StringSubstr(Symbol(), 3, 3) == "USD")
Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * AccountLeverage() / Ask / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
{
pr = MarketInfo(StringSubstr(Symbol(), 0, 3) + "USD", MODE_ASK);
if (pr != 0)
Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * AccountLeverage() / pr / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
}
}

MinLots = MarketInfo(Symbol(), MODE_MINLOT);
MaxLots = MaxLot;
lotcalc = "Autolot=" + Lot2;
if (!DynamicLot) Lot2 = Lots;

if (Lot2 < MinLots) Lot2 = MinLots;
if (Lot2 > MaxLots) Lot2 = MaxLots;
lotcalc = lotcalc + " MinLots=" + MinLots + " LOT=" + NormalizeDouble(Lot2, lotdig);
Print(lotcalc);
return (NormalizeDouble(Lot2, lotdig));
}

Função de Cálculo Stoploss Autolot:

Se você deseja adicionar a funcionalidade de stop loss Autolot ao seu EA, você pode baixar nosso código:

StopLosssd = Stop Loss em pontos

Variáveis Externas:

Lots = 0.1; // Lote fixo

DynamicLotStopLoss = // verdadeiro/falso

LotBalancePcnt (RiskLot) = 20; // % da margem livre
 

Função:

double GetSizeLotStopLoss(double StopLosssd=1) // A função retorna o tamanho do lote
{
  string Author = "Autor do template da função: www.expforex.com";
  string Valdepo = AccountCurrency();
  // Se MM estiver habilitado, determine o tamanho do lote
  double MinLots;
  int lotdig;
  if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.01) lotdig = 2; else lotdig = 1;
  double Free = AccountFreeMargin();
  double LotVal = MarketInfo(Symbol(), MODE_TICKVALUE); // Custo de 1 pip para 1 lote
  double Min_Lot = MarketInfo(Symbol(), MODE_MINLOT);
  double Max_Lot = MarketInfo(Symbol(), MODE_MAXLOT);
  double Step = MarketInfo(Symbol(), MODE_LOTSTEP);
  double Lot = MathFloor((Free * LotBalancePcnt / 100) / (StopLosssd * LotVal) / Step) * Step;
  MinLots = MarketInfo(Symbol(), MODE_MINLOT);

  if (Lot < MinLots) Lot = MinLots;

  return (NormalizeDouble(Lot, lotdig));
}

Perguntas?

Se você tiver alguma pergunta, por favor, faça-a. Não vendemos um porco em um saco.

Cada um de nossos produtos pode ser testado antes da compra.

Agradecemos seu interesse e apoio aos nossos produtos e nos esforçamos para manter altos padrões de qualidade.

Obrigado por estar conosco!

Você tem uma pergunta?

Leave a Reply

Your email address will not be published. Required fields are marked *

3 responses to “Meus segredos da Autolot. Lote dinâmico ou Autolot.”

  1. erik Avatar
    erik

    I want to be able to double whatever lot size that is being copied from the master onto the client.. How do I do that with settings… so no matter what every new position the client with be 2x that.. master opens a trade of .03, then it will be copied to client as .06.

  2. erik Avatar
    erik

    I want to be able to double whatever lot size that is being copied from the master onto the client.. How do I do that with settings… so no matter what every new position the client with be 2x that.. master opens a trade of .03, then it will be copied to client as .06.

This post is also available in: English Українська Portuguese Español Deutsch Chinese Русский Français Italiano Türkçe 日本語 한국어


     

    Aviso de risco:


    O desempenho comercial passado não garante resultados futuros.

    A negociação de divisas com margem comporta um elevado grau de risco e pode não ser adequada para todos os investidores.

    Tem em atenção que a utilização de robôs de negociação envolve um risco substancial e que podes perder mais do que o teu investimento inicial.

    Procede com cautela, avalia cuidadosamente a tua situação financeira e considera a possibilidade de procurar aconselhamento junto de um profissional qualificado.

    Isenção de responsabilidade

    Este site utiliza cookies para melhorar sua experiência. Ao usar este site, você concorda com nossa Política de Proteção de Dados e Aviso Legal.
    Leia mais