![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Acho que a função normalizeDouble também funcionaria para você. Também vi código que usa as funções MathFloor e MathCeiling para realizar a mesma coisa.
Portanto, o que você diz é que o cálculo deve funcionar da forma como eu o codifiquei na seção "Início variável", como indicado abaixo:
double LotSize = NormalizeDouble(Lot_Size_Ratio*((AccountBalance()/1000))), 3);
Então talvez meu problema esteja em outro lugar, porque quando eu defino o seguinte:
external bool LotSizeManager = True;
o EA não executa nenhuma operação. Quando eu o defino como falso, ele executará operações. Presumo que não esteja executando nenhuma operação quando este valor for Verdadeiro, porque há um problema com o cálculo.
double LotSize = NormalizeDouble(Lot_Size_Ratio*((AccountBalance()/1000)), 3);
tamanho duplo do lote = NormalizeDouble(Lot_Size_Ratio*((AccountBalance()/1000)), 1); // 0: fulllots, 1: minilots, 2: microlotes, 3: nunca usado
tamanho de lote duplo = NormalizeDouble(Lot_Size_Ratio*((AccountBalance()/1000)), 1); // 0: fulllots, 1: minilots, 2: microlotes, 3: nunca usado
Portanto, seu ditado depende da precisão que eu quero que os lotes sejam. Portanto, se eu quiser a precisão dos microlotes, como 0,75 lotes, então eu usaria um valor de 2.
Portanto, seu ditado depende da precisão que eu quero que os lotes sejam. Portanto, se eu quiser a precisão dos microlotes, como 0,75 lotes, então eu usaria um valor de 2.
Sim, você conseguiu!
Mas tenha certeza de que os microlotes (2 decimais) estão bem para seu corretor e o tipo de conta que você tem.
Não sei muito bem como o IBFX trabalha com mini-conta, ou seja, se microlotes em mini-contas também são chamados de minilots e têm apenas 1 decimal. Talvez alguém usando o IBFX possa responder aqui ?
No entanto, o melhor é perguntar ao seu corretor.
Sim, você o tem!
Mas tenha certeza de que os microlotes (2 decimais) estão bem para seu corretor e o tipo de conta que você tem.
Não sei muito bem como o IBFX trabalha com mini-conta, ou seja, se os microlotes em mini-contas também são denominados minilots e têm apenas 1 decimal. Talvez alguém usando o IBFX possa responder aqui ?
No entanto, o melhor é perguntar ao seu corretor.Muito obrigado. O código LotSizing parece funcionar bem. Entretanto, parece que tenho outro bug no código em algum lugar e não consigo descobrir.
Eu tenho o EA carregado em mais de um par, ele colocará as negociações apenas em um par. O código de dimensionamento do LotSizing funciona bem. Mas, ele não coloca mais negociações em nenhum outro par de moedas. Entretanto, quando eu estabeleço o seguinte valor:
Externo bool LotSizeManager = Falso;
o EA coloca negociações para cada par de moedas ao qual eu tenho o EA anexado.
Muito obrigado. O código LotSizeSizing parece funcionar bem. Entretanto, parece que tenho outro bug no código em algum lugar e não consigo descobrir.
Tenho o EA carregado em mais de um par, ele colocará as negociações somente em um par. O código LotSizing funciona bem. Mas, ele não coloca mais negociações em nenhum outro par de moedas. Entretanto, quando eu estabeleço o seguinte valor:
Externo bool LotSizeManager = Falso;
o EA coloca negociações para cada par de moedas ao qual eu tenho o EA anexado.Não importa. Eu descobri onde está o problema! Obrigado pela ajuda.
Problema: No tempo definido pelo usuário, a EA tenta colocar uma ordem pendente, mas o preço atual é fechar para que o corretor aceite a ordem.
Pergunta: Como eu codificaria um loop que verificaria a iOpen da barra de 1 minuto a cada minuto até que aceitasse o pedido? Só não sei como incorpore a verificação a cada minuto até que a ordem possa ser inserida. Parece que o código atual esquece o que está procurando após alguns minutos porque uma vez que o preço está fora do caminho de entrada, nada acontece.
Acho que parte disso é o seguinte:
duplo Open_Price_Every_Minute;
Open_Price_Every_Minute = iOpen(NULL,PERIOD_M1,0);
Open_Price_Every_Minute = NormalizeDouble(Open_Price_Every_Minute, Digits);
if (Allow_LimitOrder_for_Entry_A==false)
{
OrderSend(Symbol(), OP_BUYSTOP, Lots, LA, Slippage, LASL, LATP, "", Magic, 0, FireBrick);
OrderSend(Symbol(), OP_SELLSTOP, Lots, SA, Slippage, SASL, SATP, "", Magic, 0, FireBrick);
}Como sempre, obrigado por sua assistência e tempo.
James
Parece que o código atual esquece o que está procurando após alguns minutos porque uma vez que o preço está fora do caminho de entrada, nada acontece.
Acho que você não vai querer ter o loop funcionando indefinidamente em uma EA. Eu nunca tentei isso antes, mas não acho que seria uma coisa boa. Se você quiser que o EA "lembre" o que tem feito, armazene os dados que você precisa lembrar como variáveis estáticas (varaibles declaradas fora da função principal) ou como variáveis globais MT4.
Acho que você não vai querer ter o loop funcionando indefinidamente em uma EA. Eu nunca tentei isso antes, mas não acho que seria uma coisa boa. Se você quiser que o EA "lembre" o que tem feito, armazene os dados que você precisa lembrar como variáveis estáticas (varaibles declaradas fora da função principal) ou como variáveis globais MT4.
Ei!
Puting ea procesing in the loop é uma boa maneira, leia isto:
https://www.mql5.com/en/articles/1462
Você só precisa fazer isso da maneira correta![](https://c.mql5.com/forextsd/smiles/smile.png)
Kalenzo,
Obrigado pelo artigo. Parece que estou prestes a aprender mais do que pedi.