Vamos normalizar todos os pares pelo instrumento atual?
dsma2 = NormalizeDouble(SMA[2] - SMA[3], _Digits); // MA no local 2-3 dsma1 = NormalizeDouble(SMA[1] - SMA[2], _Digits); // MA no local 1-2
Vamos normalizar todos os pares pelo instrumento atual?
Vamos normalizar todos os pares pelo instrumento atual?
E como implementar isso corretamente para que não haja avisos?
Na versão original, é assim:
int Digits_ = SymbolInfoInteger(Symbol_, SYMBOL_DIGITS) + 4;
dsma2 = NormalizeDouble(SMA[2] - SMA[3], Digits_); // MA no local 2-3
dsma1 = NormalizeDouble(SMA[1] - SMA[2], Digits_); // MA no local 1-2
Qual é a maneira correta de implementá-lo sem avisos?
Na versão original, é assim:
O que +4 tem a ver com isso? É assim que deve ser logicamente
int Digits_ = SymbolInfoInteger(Symbol_, SYMBOL_DIGITS); dsma2 = NormalizeDouble(SMA[2] - SMA[3], Digits_); // MA no local 2-3 dsma1 = NormalizeDouble(SMA[1] - SMA[2], Digits_); // MA no local 1-2
O que isso tem a ver com +4? É para ser lógico.
O aviso também é assim:
possível perda de dados devido à conversão de tipos Multik.mq5 218 18
Para evitar os avisos, você precisa fazer a conversão da seguinte forma
int Digits_ = (int)SymbolInfoInteger(Symbol_, SYMBOL_DIGITS);
Bom trabalho, mas o multi-instrumento não perde o sentido quando você negocia pares correlacionados com as mesmas configurações? Eu esperaria que seus saques ocorressem na mesma época e isso pode ser um problema. Infelizmente, porém, todos os pares de moedas são tão correlacionados que isso pode ser inevitável. Na verdade, também negocio os pares EUR/USD e GBP/USD juntos, mas com um deles uso um seguidor de tendência e com o outro uso um EA do tipo reversão, topos e fundos.
Se não quiser receber avisos, você deve fazer a conversão desta forma.
request.volume = Money_M();
Esse EA é um ótimo exemplo de código organizado e tem ótimos comentários. No entanto, tenho uma pergunta relacionada à sua função de tamanho de lote chamada Money_M(). Qual é e onde está a árvore de decisão por trás disso?
Tentei pesquisar no site de suporte, mas não consegui encontrar nenhuma referência e ela não parece estar vinculada a uma classe associada.
request.volume = Money_M();
Esse EA é um ótimo exemplo de código organizado e tem ótimos comentários. No entanto, tenho uma pergunta relacionada à sua função de tamanho de lote chamada Money_M(). Qual é e onde está a árvore de decisão por trás disso?
Tentei pesquisar no site de suporte, mas não consegui encontrar nenhuma referência e ela não parece estar vinculada a uma classe associada.
double Money_M() { double Lots=AccountInfoDouble(ACCOUNT_FREEMARGIN)/100000*10; Lots=MathMin(5,MathMax(0.1,Lots)); if(Lots<0.1) Lots=NormalizeDouble(Lots,2); else { if(Lots<1) Lots=NormalizeDouble(Lots,1); else Lots=NormalizeDouble(Lots,0); } return(Lots); }
Essa função é usada para calcular o tamanho dos lotes de negociação.
double Lots=AccountInfoDouble(ACCOUNT_FREEMARGIN)/100000*10;
Nessa string, o tamanho calculado dos lotes de negociação. O cálculo é realizado com dinheiro livre(ACCOUNT_FREEMARGIN). Risco = 10% dos fundos livres disponíveis.
Lots=MathMin(5,MathMax(0.1,Lots));Nessa linha, é executada a normalização dos lotes de negociação. 0,1 <= Lote <= 5,0
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Multik:
Este Expert Advisor se baseia na ideia apresentada no artigo Criando um Consultor Especialista, que negocia em um número de instrumentos.
Ele negocia os pares EURUSD e GBPUSD no gráfico diário. Ele compra quando a MA está para cima e vende quando a MA está para baixo.
Ele utiliza um função especial para o gerenciamento do dinheiro. O período de teste foi o ano passado.
Autor: Andrew Kornishkin