ou seja, se o ficheiro já estiver aberto em MT4, a bandeira Shaare permitirá que seja aberto por MT5 sem problemas. O MT4 funciona como habitualmente, enquanto que o MT5 pode permitir que outros programas utilizem um ficheiro já aberto por ele, ou abrir um ficheiro que é aberto por outra pessoa sem a bandeira de shahre.
Eu olhei, o MT5 escreve e o MT4 lê, funciona, mas se o MT4 escreve, o MT5 não consegue ler porque o ficheiro está bloqueado, pelo menos não funcionou para mim...
A secção de ajuda na descrição do tipo de dados diz:
<br / translate="no">
Devido a isto, não é categoricamente recomendado comparar dois números reais um com o outro para a igualdade, pois tal comparação não é correcta.
E é sugerido um método de comparação especial.
Se ainda precisar de comparar dois números reais para a igualdade, pode...
Mas segue-se uma conclusão lógica de que não é recomendado comparar números reais mesmo através de operações maiores/pequenas, porque tal operação, no sentido do acima mencionado, só é correcta quando um método especial primeiro estabelece correctamente que os valores verificados não são iguais em termos de zero máquina.
Ou seja, acontece que os operadores > e < para números reais também não podem ser utilizados em forma pura. Acertei, e se sim, porque não acrescentar um comentário correspondente à ajuda?
Mas, se o operador, por exemplo, >, só pode ser utilizado após uma verificação correcta da desigualdade, então como podemos organizar a verificação para >=? É necessário complicar ainda mais o algoritmo, ou seja, verificar primeiro a igualdade com uma função especial, e depois com uma função especial para a desigualdade (antes de usar >)?
Talvez alguém já tenha desenvolvido uma biblioteca para todos os casos de comparação, tanto para o tipo duplo como para o tipo flutuante? Esbocei algo para o tipo duplo - não sei se está correcto:
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++// Функция проверки на равенство двух вещественных чисел типа doublebool EqualDoubles(constdouble d1, constdouble d2)
{
constdouble epsilon=2.2204460492503131 e-016;//DBL_EPSILONif(d1-d2>epsilon) returnfalse;
if(d1-d2<-epsilon) returnfalse;
returntrue;
}
// Конец функции проверки на равенство двух вещественных чисел типа double//+++++++++++++++++++++++++++++++++++++++++++++++++// Функция проверки на неравенство двух вещественных чисел типа doublebool NotEqualDoubles(constdouble d1, constdouble d2)
{
return !EqualDoubles(d1, d2);
}
// Конец функции проверки на неравенство двух вещественных чисел типа double//+++++++++++++++++++++++++++++++++++++++++++++++++// Функция проверки на меньшинство первого из двух вещественных чисел типа doublebool LessDoubles(constdouble d1, constdouble d2)
{
if (NotEqualDoubles(d1, d2)&&(d1<d2))
{
returntrue;
}
returnfalse;
}
// Конец функции проверки на меньшинство первого из двух вещественных чисел типа double//+++++++++++++++++++++++++++++++++++++++++++++++++// Функция проверки на большинство первого из двух вещественных чисел типа doublebool GreaterDoubles(constdouble d1, constdouble d2)
{
if (NotEqualDoubles(d1, d2)&&(d1>d2))
{
returntrue;
}
returnfalse;
}
// Конец функции проверки на большинство первого из двух вещественных чисел типа double//+++++++++++++++++++++++++++++++++++++++++++++++++// Функция проверки на меньшинство первого или равенство двух вещественных чисел типа doublebool LessEqualDoubles(constdouble d1, constdouble d2)
{
if (LessDoubles(d1, d2)||EqualDoubles(d1, d2))
{
returntrue;
}
returnfalse;
}
// Конец функции проверки на меньшинство первого или равенство двух вещественных чисел типа double//+++++++++++++++++++++++++++++++++++++++++++++++++// Функция проверки на большинство первого или равенство двух вещественных чисел типа doublebool GreaterEqualDoubles(constdouble d1, constdouble d2)
{
if (GreaterDoubles(d1, d2)||EqualDoubles(d1,d2))
{
returntrue;
}
returnfalse;
}
// Конец функции проверки на большинство первого или равенство двух вещественных чисел типа double
P.S. Se pré-cálculo==0 funciona novamente como habitualmente. Insecto flutuante?
Para tal, tanto quanto sei, preciso de acrescentar um ponteiro a este objecto indicador na "colecção de indicadores(timeseries?)", como é feito no exemplo:
indicators.Add(GetPointer(m_MA)))
onde m_MA é um objecto da classe CiMA.
As funções iCustom e IndicatorCreate devolvem o valor inteiro de um cabo do indicador criado, mas eu preciso de um objecto deste indicador, tal como o entendo.
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
Para tal, tanto quanto sei, preciso de acrescentar um ponteiro a este objecto indicador na "colecção de indicadores(timeseries?)", como é feito no exemplo:
onde m_MA é um objecto da classe CiMA.
As funções iCustom e IndicatorCreate devolvem o valor inteiro de um cabo do indicador criado, mas eu preciso de um objecto deste indicador, tal como o entendo.
Por favor, aconselhar como sair desta situação?
Tanto quanto sei, devo escrever o meu próprio objecto indicador baseado no CiCustom (semelhante à forma como o CiMA é escrito).
Não posso aconselhar em detalhes, porque não trabalhei com indutores, mas penso que compreenderá ou as pessoas dir-lhe-ão a realização certa.
PS
A propósito, os criadores, acrescentem exemplos à secção sobre o CiCustom...
Mas depois segue-se logicamente que não é recomendado comparar números reais mesmo através de operações maiores/pequenas, porque tal operação, no sentido do acima exposto, só é correcta se for correctamente estabelecida de antemão, utilizando um método especial, que os valores a verificar não são iguais no sentido do zero máquina.
Talvez não tenha compreendido bem o ponto, mas se dois números reais estão a ser comparados, digamos, com a ajuda da operação "<" e os números reais a serem verificados são "iguais no sentido de máquina zero", a operação "<" irá simplesmente devolver falsos. O que significa "o primeiro número real não é menos do que o segundo número real".
Para tal, tanto quanto sei, preciso de acrescentar um ponteiro a este objecto indicador na "colecção de indicadores(timeseries?)", como é feito no exemplo:
onde m_MA é um objecto da classe CiMA.
As funções iCustom e IndicatorCreate devolvem o valor inteiro de um cabo do indicador criado, mas eu preciso de um objecto deste indicador, tal como o entendo.
Pode por favor aconselhar como sair desta situação?
Por agora, tome este ficheiro como exemplo.
A classe CSignalCustomMACD é absolutamente idêntica ao CSignalMACD, excepto pelo facto de se basear na versão "personalizada" do indicador da entrega padrão.
Não se esqueça de acrescentar uma linha no código fonte do Expert Advisor:
#property tester_indicator "Examples\MACD.ex5"
caso contrário, não funcionará no testador.
Se não houver nenhum ficheiro MACD.ex5 na pasta Indicadores\Exemplos, o indicador deve ser compilado.
Um exemplo na ajuda será acrescentado num futuro próximo.
Yedelkin: Talvez eu não compreenda bem o problema, mas se dois números reais forem comparados usando, digamos, a operação "<", e os números reais a serem verificados forem "iguais no sentido de máquina zero", então a operação "<" apenas retornará falsa, e ponto final. O que significaria "o primeiro número real não é inferior ao segundo número real".
Isto seria lógico, mas agora a operação ">" ("<" não verificou) pode voltar a ser verdadeiro para tais números "igual no sentido de máquina zero". O efeito foi detectado porque o resultado do cálculo numérico foi maior do que teoricamente possível como resultado deste efeito, mas depois de utilizar as funções especiais acima referidas, tornou-se verdadeiro. É por isso que proponho uma adição à ajuda.
Não.
é por isso que o acesso simultâneo não pode ser organizado:(((.
Pode, o ficheiro aberto em MT5 com a bandeira de acções também estará disponível para qualquer outro programa, incluindo MT4.
Veja como é feito aqui.
ou seja, se o ficheiro já estiver aberto em MT4, a bandeira Shaare permitirá que seja aberto por MT5 sem problemas. O MT4 funciona como habitualmente, enquanto que o MT5 pode permitir que outros programas utilizem um ficheiro já aberto por ele, ou abrir um ficheiro que é aberto por outra pessoa sem a bandeira de shahre.
Pode, o ficheiro aberto em MT5 com a bandeira de acções também estará disponível para qualquer outro programa, incluindo MT4.
Veja como é feito aqui.
Obrigado, vou dar uma olhadela agora...
Devido a isto, não é categoricamente recomendado comparar dois números reais um com o outro para a igualdade, pois tal comparação não é correcta.
E é sugerido um método de comparação especial.
Se ainda precisar de comparar dois números reais para a igualdade, pode...
Mas segue-se uma conclusão lógica de que não é recomendado comparar números reais mesmo através de operações maiores/pequenas, porque tal operação, no sentido do acima mencionado, só é correcta quando um método especial primeiro estabelece correctamente que os valores verificados não são iguais em termos de zero máquina.
Ou seja, acontece que os operadores > e < para números reais também não podem ser utilizados em forma pura. Acertei, e se sim, porque não acrescentar um comentário correspondente à ajuda?
Mas, se o operador, por exemplo, >, só pode ser utilizado após uma verificação correcta da desigualdade, então como podemos organizar a verificação para >=? É necessário complicar ainda mais o algoritmo, ou seja, verificar primeiro a igualdade com uma função especial, e depois com uma função especial para a desigualdade (antes de usar >)?
Talvez alguém já tenha desenvolvido uma biblioteca para todos os casos de comparação, tanto para o tipo duplo como para o tipo flutuante? Esbocei algo para o tipo duplo - não sei se está correcto:
P.S. Se pré-cálculo==0 funciona novamente como habitualmente. Insecto flutuante?
Boa tarde!
Preciso de utilizar um indicador personalizado no módulo de sinais comerciais.
Para tal, tanto quanto sei, preciso de acrescentar um ponteiro a este objecto indicador na "colecção de indicadores(timeseries?)", como é feito no exemplo:
indicators.Add(GetPointer(m_MA)))onde m_MA é um objecto da classe CiMA.
As funções iCustom e IndicatorCreate devolvem o valor inteiro de um cabo do indicador criado, mas eu preciso de um objecto deste indicador, tal como o entendo.
Por favor, aconselhar como sair desta situação?
Boa tarde!
Preciso de utilizar um indicador personalizado no módulo de sinais comerciais.
Para tal, tanto quanto sei, preciso de acrescentar um ponteiro a este objecto indicador na "colecção de indicadores(timeseries?)", como é feito no exemplo:
onde m_MA é um objecto da classe CiMA.
As funções iCustom e IndicatorCreate devolvem o valor inteiro de um cabo do indicador criado, mas eu preciso de um objecto deste indicador, tal como o entendo.
Por favor, aconselhar como sair desta situação?
Tanto quanto sei, devo escrever o meu próprio objecto indicador baseado no CiCustom (semelhante à forma como o CiMA é escrito).
Não posso aconselhar em detalhes, porque não trabalhei com indutores, mas penso que compreenderá ou as pessoas dir-lhe-ão a realização certa.
PS
A propósito, os criadores, acrescentem exemplos à secção sobre o CiCustom...
E é sugerido um método de comparação especial.
Mas depois segue-se logicamente que não é recomendado comparar números reais mesmo através de operações maiores/pequenas, porque tal operação, no sentido do acima exposto, só é correcta se for correctamente estabelecida de antemão, utilizando um método especial, que os valores a verificar não são iguais no sentido do zero máquina.
Boa tarde!
Preciso de utilizar um indicador personalizado no módulo de sinais comerciais.
Para tal, tanto quanto sei, preciso de acrescentar um ponteiro a este objecto indicador na "colecção de indicadores(timeseries?)", como é feito no exemplo:
onde m_MA é um objecto da classe CiMA.
As funções iCustom e IndicatorCreate devolvem o valor inteiro de um cabo do indicador criado, mas eu preciso de um objecto deste indicador, tal como o entendo.
Pode por favor aconselhar como sair desta situação?
Por agora, tome este ficheiro como exemplo.
A classe CSignalCustomMACD é absolutamente idêntica ao CSignalMACD, excepto pelo facto de se basear na versão "personalizada" do indicador da entrega padrão.
Não se esqueça de acrescentar uma linha no código fonte do Expert Advisor:
#property tester_indicator "Examples\MACD.ex5"caso contrário, não funcionará no testador.
Se não houver nenhum ficheiro MACD.ex5 na pasta Indicadores\Exemplos, o indicador deve ser compilado.
Um exemplo na ajuda será acrescentado num futuro próximo.
Talvez eu não compreenda bem o problema, mas se dois números reais forem comparados usando, digamos, a operação "<", e os números reais a serem verificados forem "iguais no sentido de máquina zero", então a operação "<" apenas retornará falsa, e ponto final. O que significaria "o primeiro número real não é inferior ao segundo número real".