Ajuda na codificação... Como obter um indicador para filtrar em vez de alertar? - página 2

 
Aaragorn:
posso fazer isso? apenas escrever bufferindexes no indicador e usar as palavras superior e inferior assim e fazer com que ele retorne os valores das linhas superior e inferior?

Não no indicador. No EA. (U pode fazê-lo com um indicador, mas não usar o mesmo indicador dentro de seu próprio código!!!!!)

 
elihayun:
Não no indicador. No EA. (U pode fazer isso com um indicador, mas não usar o mesmo indicador dentro de seu próprio código!!!!!)

para poder escrever um índice tampão no EA, mas como ele obtém o valor do indicador? Não quis dizer usar o indicador dentro de seu próprio código que seria meio idiota. perdoe minha quebra de comunicação. não é fácil comunicar às vezes especificamente o que é o problema. Esse é o problema tanto com a codificação como com falar de codificação para os outros.

 

Deixe-me pedir desculpas àqueles que podem estar tentando me ajudar, mas encontrar meus postos são uma sobrecarga de informação. Eu coloquei muito código basicamente porque posso então colocar duas janelas abertas uma ao lado da outra, sendo uma janela este fio e a outra o metaeditor e olhar para uma parte do código em uma janela e outra parte dela na outra janela e faço isso para me ajudar a pensar do meu jeito através do problema que estou olhando. Sou bastante visual dessa forma e isso me ajuda a pensar no que estou fazendo e querendo fazer. Não pretendo sobrecarregar ninguém com muito código que tenha que olhar através de tudo isso. Às vezes eu tentei destacar trechos após postar o EA inteiro ou o indicador inteiro enquanto tentava zerar em ONDE e O QUE precisa ser feito. Agradeço a todos que dedicam tempo para olhar o que estou fazendo e oferecer uma contribuição construtiva. Se o volume do que eu postar for demais, basta filtrar para baixo para procurar o que estou tentando fazer e não ficar atolado no resto que só existe como um contexto para o que estou fazendo. estou basicamente pensando em voz alta.

 
Aaragorn:
para poder escrever um índice tampão no EA, mas como ele obtém o valor do indicador? Não quis dizer usar o indicador dentro de seu próprio código que seria meio idiota. perdoe minha quebra de comunicação. não é fácil comunicar às vezes especificamente o que é o problema. Esse é o problema tanto com a codificação como com falar de codificação para os outros.

Não se preocupe com COMO. Deixe o Metatrader fazer isso para u. U. Use o código para obter as informações que você gosta.

Dica: Quando você executar o EA u verá: "Trend Bands carregadas com sucesso", isso significa que ele faz o que você quer.

 
elihayun:
Não se preocupe com COMO. Dica: Quando você executar o EA você verá: "Trend Bands carregadas com sucesso", isso significa que ele faz o que você quer.

Eu gosto do som do uso do código para obter as informações de que gosto, é isso que estou tentando aprender. COMO usar o código para obter as informações que eu gosto.

Então você acha que a melhor maneira de obter o valor do tick para as bandas de tendência é usar o iCustome()? e NÃO escrever o código dentro da EA como eu já fiz?

Para fins instrucionais...já que tenho o código já escrito no EA, existe alguma maneira de obter os valores dele lá?

 
elihayun:
Escrever um indicador é uma coisa, e escrever um EA é outra. Não os misture. Nos indicadores você também tem que lidar com a história para desenhá-la corretamente. Ao escrever um EA u tem apenas o tick atual e você tem que calcular os valores a cada tick (se você não quiser afrouxar uma troca). Assim, para obter os valores da borda superior e inferior do tick CORRENTE, você pode fazer 2 coisas
  1. Use o indicador original como um indicador custome
  2. escreva a lógica do indicador dentro de sua EA

A 1ª opção não é difícil. Você tem que descobrir primeiro, qual é o índice tampão que utiliza para a linha superior e para a linha inferior.

encontre-o você tem que procurar no código indicador

espere um minuto, tem amortecedores! como eu poderia ter perdido eles?

//+------------------------------------------------------------------+

//| Trend Bands.mq4 |

//| Dwt5 and adoleh2000 |

//| Copyright © 2005, MetaQuotes Software Corp. |

//| http://www.metaquotes.net |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2005, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

#property indicator_chart_window

#property indicator_buffers 5

#property indicator_color1 Red

#property indicator_color2 Black

#property indicator_color3 Blue

#property indicator_color4 Red

#property indicator_color5 Blue

double upper[], middle1[], middle2, lower[];

double Xup[], Xdown[];

extern int period = 34;

int init()

{

SetIndexStyle(0,DRAW_LINE,EMPTY,2);

SetIndexShift(0,0);

SetIndexDrawBegin(0,0);

SetIndexBuffer(0,upper);

SetIndexStyle(1,DRAW_LINE,EMPTY,2);

SetIndexShift(1,0);

SetIndexDrawBegin(1,0);

SetIndexBuffer(1,middle1);

SetIndexStyle(2,DRAW_LINE,EMPTY,2);

SetIndexShift(2,0);

SetIndexDrawBegin(2,0);

SetIndexBuffer(2,lower);

SetIndexStyle(3,DRAW_ARROW,EMPTY,2);

SetIndexArrow(3, 162);

SetIndexShift(3,0);

SetIndexDrawBegin(3,0);

SetIndexBuffer(3,Xdown);

SetIndexStyle(4,DRAW_ARROW,EMPTY,2);

SetIndexArrow(4, 162);

SetIndexShift(4,0);

SetIndexDrawBegin(4,0);

SetIndexBuffer(4,Xup);

//---- indicators

//----

return(0);

}

so....Vejo 5 buffers...um superior, médio, inferior e para cima e para baixo ...

Suponho que a informação que eu quero é do buffer superior e do inferior...

 
 
Aaragorn:
Eu quis dizer que este era um novo post e não uma edição de um anterior, a operação do site às vezes ainda me confunde.

Acho que a melhor maneira de fazer isso NÃO é usando o indicador. É apenas a maneira mais simples. Para começar, é bom o suficiente.

U estão analisando as mudanças que fiz no indicador. Se você quiser usar este, certifique-se de que está escrevendo o nome correto dentro de seu código.

Desde que você saiba em qual buffer está a informação que você quer, não importa como muitos indicadores estão lá no código.

 
elihayun:
Escrever um indicador é uma coisa, e escrever um EA é outra coisa. Não os misture. Nos indicadores você também tem que lidar com a história para desenhá-la corretamente. Ao escrever um EA u tem apenas o tick atual e você tem que calcular os valores a cada tick (se você não quiser afrouxar uma profissão). Assim, para obter os valores da borda superior e inferior do tick CORRENTE, você pode fazer 2 coisas
  1. Use o indicador original como um indicador custome
  2. escreva a lógica do indicador dentro de sua EA

A 1ª opção não é difícil. Você tem que descobrir primeiro, qual é o índice tampão que utiliza para a linha superior e para a linha inferior.

encontre-o você tem que procurar no código indicador

SetIndexBuffer(0,superior);

SetIndexBuffer(1,meio1);

SetIndexBuffer(2,inferior);

como você pode ver a linha superior é índice 0, o meio é índice 1 e inferior é índice 2.

Agora que temos estas informações, temos que conhecer muitos parâmetros que o indicador tem. Para obter esta informação, você tem que procurar linhas que comecem com a palavra externa

Encontrei apenas 1 linha

período int externo = 34;

Agora, podemos usar o indicador como um indicador custome

double upLevel = iCustome(NULL,0, "Trend Bands", 34, 0, 0, 0);

duplo LowLevel = iCustome(NULL,0, "Bandas de Tendência", 34, 2, 0);

34 é o parâmetro para o indicador

0 é o índice tampão (2 para o mais baixo)

o último 0 é o bar shift (na EA precisamos da corrente, então usamos o 0)

agora que você tem os valores superior e inferior, você pode verificá-los em relação ao preço

Espero que isso faça você progredir

Eli

ei, então isso funcionará para puxar o valor atual das linhas superior e inferior para dentro da EA.

double upLevel = iCustome(NULL,0, "Trend Bands", 34, 0, 0, 0);

double LowLevel = iCustome(NULL,0, "Bandas de Tendência", 34, 2, 0);

Acho que estou começando a entender isso graças às explicações...

por isso não preciso escrever o código indicador dentro da EA, basta chamá-lo assim da EA.... e ele retornará os valores atuais das barras das linhas que eu posso então usar...isso é perfeito! .... veja que eu sabia que Alguém sabia como fazer isso! (só não era eu) ...

então se eu quisesse poder mudar o número de períodos que uso para o indicador, eu faria isso...

duplo externo de volta = 300 //-- que eu poderia mudar conforme desejado

double upLevel = iCustome(NULL,0, "Trend Bands", para trás, 0, 0);

double LowLevel = iCustome(NULL,0, "Bandas de Tendência", para trás, 2, 0);

supondo que eu queira cancelar o valor do indicador de um período de tempo maior do que o período de tempo que estou usando no gráfico...eu faria isso?....

duplo retorno externo = 300 //-- que eu poderia mudar conforme desejado

duplo TF externo = 30 //-- que eu poderia mudar conforme desejado

double upLevel = iCustome(NULL,TF, "Trend Bands", de volta, 0, 0);

double LowLevel = iCustome(NULL,TF, "Bandas de Tendência", atrás, 2, 0);

onde NULL usa o símbolo atual,

A TF usa o período de barra do gráfico que eu especifico

As Bandas de tendência chamam o indicador

voltar é o número de barras definido pelo usuário a ser usado para o indicador de média

0 ou 2 lhe diz qual buffer acessar

e o último 0 diz-lhe para usar a barra atual

isso funcionaria?

 
Aaragorn:
isso funcionaria?

Ótimo!!! Você tem a idéia!!!!

Ela funcionará perfeitamente. e se você quiser verificar se 5M e 15M chegam à borda ao mesmo tempo você pode obter os valores de cada TF e testá-la juntos.

Mas deixe isso para a última....

Razão: