Há erros, portanto o código não funcionará como o autor pretendia. Você tem que descobrir. Você tem o código, você tem os cartões para entregar.
Pelo que você mostrou, vejo que ou as velas são menos de 60, ou o cabo de um dos indicadores é INVÁLIDO, o que significa que os parâmetros são enviados para ele incorretamente. Ou há um erro em outra parte do código que eu não vejo.
Eu mesmo consegui descobrir onde está o problema, mas a pergunta era sobre outra coisa: o que esses erros podem afetar e o que devo mudar no código para eliminá-los?
Atenciosamente, Vladimir.
Se ocorrer um erro, o Expert Advisor não será anexado ao gráfico.
Você não tem que fazer nada. O que já foi feito - no caso de um erro, o Expert Advisor é destacado do gráfico
e informa o usuário.
Este erro não ocorre praticamente, exceto quando o computador está em uma bagunça.
==
No entanto, se isso acontecer sempre durante o processo de desenvolvimento...
Isso significa que o indicador não é chamado corretamente - fixar parâmetros indicadores.
aqui funciona - talvez você não esteja definindo o período corretamente
Obrigado pela dica!!! Na verdade, o problema era que não era possível definir os períodos para ambos os indicadores a partir de "zero" e acima nas configurações do testador. Eu deveria tê-los colocado pelo menos de "um" e acima.
Vladimir Baskakov #: Decidi aprender a língua, mas não há muitas pessoas que tenham começado a aprendê-la. Para quê?
Vladimir, é muito simples. Eu aprendi o que precisava aprender. Agora eu pego EAs diferentes e os faço para mim mesmo. O mais importante é que agora eu não olho mais para a MQL5 como os caracteres chineses, mas como uma peça normal de software. Muito obrigado a todos os profissionais que me ajudaram no meu auto-aprendizagem!
Auto-estudo contínuo da linguagem de programação MQL5. Chegou o momento em que tive que lidar com arrays. Decidi calcular o tamanho do lote em função do risco especificado nos parâmetros de entrada. Não tenho erros ou avisos após a compilação, mas o código de função não funciona. Você pode me dizer, por favor, onde está o erro?
Atenciosamente, Vladimir.
inputdouble Risk0=1.0; //Риск (% от баланса)
.
.
.
.
inputdouble Risk9=1.0; //Риск (% от баланса)//+------------------------------------------------------------------+//| Функция Money_Management рассчитывает размер лота в зависимости |//| от риска, заданного во входных параметрах советника. |//+------------------------------------------------------------------+double Money_Management()
{
staticint Risk[];
int Number=0;
//----+ Объвляем переменную для хранения размеров массивов переменныхstaticint Size_ = 0;
//----+ Изменяем размер массивов переменныхif(Number + 1 > Size_)
{
uint size = Number + 1;
//---- Предварительно обнуляем ячейки массива
Risk[Number] = false;
}
if(Risk[0] != Risk[Number])
{
Risk[Number] = Risk[0];
}
double Lots=AccountInfoDouble(ACCOUNT_MARGIN_FREE)*Risk[Number]/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);
}
//+------------------------------------------------------------------+
MrBrooklin da linguagem de programação MQL5. Chegou o momento em que tive que lidar com arrays. Decidi calcular o tamanho do lote em função do risco especificado nos parâmetros de entrada. Não tenho erros ou avisos após a compilação, mas o código de função não funciona. Você pode me dizer, por favor, onde está o erro?
Atenciosamente, Vladimir.
Espero sinceramente que não o tenha escrito...
Aqui está uma função de trabalho
/********************************************************************\
| Calculate optimal lot size Расчет объема лота |
/********************************************************************/double contractSize(double Lot)
{
double volume = Lot > 0.0 ? Lot : AccountInfoDouble(ACCOUNT_MARGIN_FREE)/10000,
v = volume,
volumeStep = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP),
minLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN),
maxLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX);
v = round(volume/volumeStep)*volumeStep;
return(fmin(maxLot, fmax(minLot, v)));
}/******************************************************************/
Tudo o que você precisa fazer é inserir a quantidade de risco, para que não conte a partir da margem livre total...
Há erros, portanto o código não funcionará como o autor pretendia. Você tem que descobrir. Você tem o código, você tem os cartões para entregar.
Pelo que você mostrou, vejo que ou as velas são menos de 60, ou o cabo de um dos indicadores é INVÁLIDO, o que significa que os parâmetros são enviados para ele incorretamente. Ou há um erro em outra parte do código que eu não vejo.
Cumprimentos, Vladimir.
Oops, Alexey;)
Eu mesmo consegui descobrir onde está o problema, mas a pergunta era sobre outra coisa: o que esses erros podem afetar e o que devo mudar no código para eliminá-los?
Atenciosamente, Vladimir.
Se ocorrer um erro, o Expert Advisor não será anexado ao gráfico.
Você não tem que fazer nada. O que já foi feito - no caso de um erro, o Expert Advisor é destacado do gráfico
e informa o usuário.
Este erro não ocorre praticamente, exceto quando o computador está em uma bagunça.
==
No entanto, se isso acontecer sempre durante o processo de desenvolvimento...
Isso significa que o indicador não é chamado corretamente - fixar parâmetros indicadores.
Se ocorrer um erro, a EA não anexará ao gráfico.
Você não precisa fazer nada. O que já foi feito - no caso de um erro, o Expert Advisor se desprende do quadro
e informa o usuário.
Este erro não ocorre praticamente, exceto quando o computador está em uma bagunça.
==
No entanto, se isso acontecer sempre durante o processo de desenvolvimento...
Isso significa que o indicador é chamado incorretamente - fixar os parâmetros do indicador.
Obrigado, Dmitry, por sua resposta abrangente e compreensível!
Cumprimentos, Vladimir.
aqui funciona - talvez você não esteja definindo o período corretamente
Obrigado pela dica!!! Na verdade, o problema era que não era possível definir os períodos para ambos os indicadores a partir de "zero" e acima nas configurações do testador. Eu deveria tê-los colocado pelo menos de "um" e acima.
Obrigado a todos por sua participação!
Cumprimentos, Vladimir.
P.S. Você deve remover o código da EA "despojos", porque estes "despojos" incomodam muita gente. Eu já removi o meu.
Aqueles que são muito irritantes os deixam ir para o bosque periodicamente tomando a mãe-malte ou tintura de agárico de mosca.
Eu também não gosto desses chinelos, mas simplesmente não os observo.
Decidi aprender a língua, mas não há muitas pessoas que tenham começado a aprendê-la. Para quê?
Vladimir, é muito simples. Eu aprendi o que precisava aprender. Agora eu pego EAs diferentes e os faço para mim mesmo. O mais importante é que agora eu não olho mais para a MQL5 como os caracteres chineses, mas como uma peça normal de software. Muito obrigado a todos os profissionais que me ajudaram no meu auto-aprendizagem!
Cumprimentos, Vladimir.
Prefiro ter um spoiler do que baixar um arquivo e enfiá-lo em minha caixa de areia. )
Bom dia a todos e bom humor!
Auto-estudo contínuo da linguagem de programação MQL5. Chegou o momento em que tive que lidar com arrays. Decidi calcular o tamanho do lote em função do risco especificado nos parâmetros de entrada. Não tenho erros ou avisos após a compilação, mas o código de função não funciona. Você pode me dizer, por favor, onde está o erro?
Atenciosamente, Vladimir.
Atenciosamente, Vladimir.
Espero sinceramente que não o tenha escrito...
Aqui está uma função de trabalho
Tudo o que você precisa fazer é inserir a quantidade de risco, para que não conte a partir da margem livre total...