[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 29
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
Você pode me dizer como tirar valores de um indicador zig-zag? Como isso é implementado em geral? Isto é, se eu quiser pegar um certo extremo, não apenas o último.
Por exemplo, agora eu quero anexar este ziguezague ao meu consultor especializado:
Entendo que preciso usar a funçãoiCustom, pois ela é normalmente usada para abordar um indicador personalizado, mas a questão é como conectar os nós...
O buffer está procurando o valor NEUTRAL(EMPTY_VALUE) de acordo com o princípio:
e acesso ao buffer indicador via iCustom().O buffer está procurando um valor VAZIO_VALOR de acordo com o princípio:
e o buffer indicador é acessado via iCustom().
Faz sentido. Mas será procurado desta forma até encontrarmos um valor não vazio. E se, por exemplo, eu, e, de fato, não quero o último valor não vazio, ou seja, não o último extremo, mas outro... Por exemplo, aqui na imagem da tela:
Faz sentido. Mas desta forma, a busca será até encontrarmos um valor não vazio. E se, por exemplo, eu, e, de fato, não quero o último valor não vazio, ou seja, não o último extremo, mas outro... Por exemplo, aqui na imagem da tela:
Insira um contador de extremos no laço e no número de extremos (valor não vazio em uma linha), quebre o laço.
Entendi. Obrigado. Agora precisamos aplicar tudo isso na prática. Eu entendo o essencial, mas minha mente está cheia de filtros que fazem meu cérebro ferver.
Entendi. Obrigado. Agora precisamos aplicá-lo na prática. Eu tive a idéia, mas há tantos filtros em minha mente que meu cérebro está fervendo...
double get_extrem(int n) {
for(int i=1;;i++) {
double ind=iCustom(Symbol(),0,"indicator_name",0,i);
if(n>1)
if(ind!=0) n--;
else
if(ind!=0) return(ind);
}
}
Se você precisar do número de barra do pico, mude o tipo de função para int e ao invés de return(ind); escreva return(i);
Observe também, se você usar i em seu código, especialmente em buscas (como no tutorial), então mude i nesta função para qualquer outra variável, por exemplo k.
E certifique-se de configurar o iCustom dentro da função para seu indicador.
double get_extrem(int n) {
for(int i=1;;i++) {
double ind=iCustom(Symbol(),0,"indicator_name",0,i);
if(n>1)
if(ind!=0) n--;
else
if(ind!=0) return(ind);
}
}
Se você precisar do número de barra do pico, mude o tipo de função para int e ao invés de return(ind); escreva return(i);
Observe também, se você usar i em seu código, especialmente em buscas (como no tutorial), então mude i nesta função para qualquer outra variável, por exemplo k.
E certifique-se de configurar o iCustom dentro da função para seu indicador.
Nikolay, é interessante, é claro, você tem a condição escrita. Olho para ela e penso...
Acontece que se o buffer do indicador personalizado retornou o valor zero, então n--, e se obuffer do indicador personalizado retornou o valor zero, então ... devolvemos o valor do tampão indicador.
Mas as condições são as mesmas. E aí e assim se não for zero...
Nikolai, é interessante, é claro, você tem a condição escrita. Ao olhar para ele, acho...
Acontece que se o buffer indicador personalizado retornou um valor zero, então n--, e se obuffer indicador personalizado retornou um valor zero, então ... devolvemos o valor do tampão indicador.
Mas as condições são as mesmas. E aí e assim se não for zero...
Os suportes caíram enquanto tentavam inserir o código corretamente:
double get_extrem(int n) {
for(int i=1;;i++) {
double ind=iCustom(Symbol(),0,"indicator_name",0,i);
if(n>1) {
if(ind!=0) n--;
}else{
if(ind!=0) return(ind);
}
}
}
Se n>1 {
se o buffer não estiver vazio, então subtraia 1 de n
} o inverso
se o buffer não estiver vazio, devolva seu valor
}
double get_extrem(int n) {
for(int i=1;;i++) {
double ind=iCustom(Symbol(),0,"indicator_name",0,i);
if(ind!=0) {
if(n>1) n--; else return(ind);
}
}
}
double get_extrem(int n) {
for(int i=1;;i++) {
double ind=iCustom(Symbol(),0,"indicator_name",0,i);
if(ind!=0) {
if(n>1) n--; else return(ind);
}
}
}
Em geral, tudo está bem nos dois sentidos. Estou acostumado a escrever código um pouco diferente, é mais fácil de ler desta maneira enquanto o seu é diferente. O primeiro parêntese em cada um de seus códigos não se move. Coloquei-o em meu EDITOR e tudo está em seu lugar dessa maneira:
Basicamente, tudo está bem nos dois sentidos. Estou acostumado a escrever código de uma maneira diferente: é mais fácil de ler desta maneira, enquanto que a sua é diferente. O primeiro parêntese em cada um de seus códigos não se move. Coloquei-o no Editor e tudo está em seu lugar nesta forma:
quando o código passa de 1000 linhas, você começa a escrever de forma compacta).
também no MT4 o desempenho sofre, especialmente quando se realizam testes. A versão lacônica tem um desempenho mais rápido.