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
Ou talvez algo parecido com isto?
você realmente deveria usar IndicatorCounted(), porque se você fizer isso assim, seu indicador está redesenhando todos esses objetos a cada novo tick em vez de desenhá-los apenas uma vez e adicionando novos objetos à medida que novas barras são formadas.
Meu foco precisa ser mais amplo, mas como sou NooB, tenho a tendência de me concentrar em uma parte do código e negligenciar outras como as externas.
Só agora estou entrando nas arrays e tive uma enorme luta para entender os amortecedores, mas comecei a superar isso recentemente.
Obrigado, isto me dará um monte de novas idéias agora também.
Você tem que considerar o que está fazendo, ao criar um indicador você está aplicando seu código a cada barra do gráfico, isto significa que você precisa obter o valor do indicador macd como foi para cada uma dessas barras históricas.
em seu código original que você fez:
o último parâmetro 1 é o valor do macd como estava na barra 1 do gráfico, a barra anterior à barra atual que é indexada como barra 0Obviamente você não quer usar esse valor único do macd em seu operador condicional sobre todo o gráfico histórico .
Você precisa indexar o macd ao mesmo índice de barras de cada barra, portanto, por exemplo, na barra 500, você precisa disto
que o último parâmetro deve mudar para corresponder ao número de barras ao qual seu indicador está aplicando seus algoritmos.
É por isso que você precisa dele dentro do laço, para poder usar o iterador do ciclo de laço para o último parâmetro dele, você obtém seu valor macd como era para cada barra do gráfico histórico.
Espero que isso ajude a esclarecer um pouco as coisas.
Entretanto, ao adicionar os códigos como if(val1 > 0 && mais rápido > mais lento) isto não funcionaria ao declarar mais rápido e mais lento fora do laço.
AHHHHH Vejo isso porque o turno é (i) então eu preciso dele dentro do loop OOOOPPPS LOL
Porque para(int i = Bars-1 ? <----- As barras são indexadas como arrays, a primeira barra=0, em vez de 1. Então a última barra é Bars-1;
E porque isto é melhor que para(int i = Bars ?? < veja acima.
Por favor, agradeça
Também:
Presumo que isto seja verdade para todos, e não apenas indicadores / indicadores personalizados ?<--- o que eu e WHRoeder: discutidos são assuntos bastante gerais. Nada de específico. Estávamos apenas conversando uns com os outros sobre a declaração de variáveis e suas atribuições, etc., loops w.r.t..
Também:
for(int i=Bars-1; i>=0: i--) é sugerido
Eu pensei que Barras = número de barras no gráfico atual ? pelo menos de acordo com o dicionário.
Então --i eu imaginei que estava contando para baixo a partir do número de barras mais alto, como 1002 ou algo assim, e contando --i para baixo até realmente -1
Porque enquanto i>=0 deve contar até realmente -1 antes de se tornar falso. Se fosse igual ou superior a 0, seria verdade e seria um último loop até chegar a -1
Pelo menos era assim que eu pensava que funcionava? Eu estou errado?
Se i=0 e ++i e contar até o final da última barra, então pensei que contaria até o final.
Mas neste caso Bars-1 seu ditado não seria realmente todas as barras fechadas, mas na verdade inclui a barra [0] que ainda não está fechada ou algo assim ?
Não estou realmente certo de entender a diferença entre as Bars-1 e as Bars. Tem algo a ver com a barra 0 atual que não é contada quando simplesmente se refere a barras ??
Por favor, informe Obrigado
sim, é porque você tem uma barra 0, então Bars lhe dá a contagem de barras no gráfico, incluindo a barra 0
então considere um pequeno gráfico, há apenas 2 barras no gráfico, barra[0] e barra[1].
Barras lhe dá a contagem então Barras == 2
se você quiser aplicar seu indicador para começar na última barra do gráfico
Você poderia tentar i=Bars.
Como sabemos, Barras = 2, mas não há barra indexada como barra[2] a última barra é Bar[1].
então você precisa fazer i=Bars-1
for(int i=Bars; i>=0; i--) é o código que eu usei<--- digamos, por exemplo, Close[i], isto conta de close[Bars] até closed[0]. Quando i=Bars, existe close[i]?
for(int i=Bars-1; i>=0: i--) é sugerido<--- digamos, por exemplo, Close[i], isto conta de close[Bars-1] até close[0]. Quando i=Bars-1, existe close[i]?
Eu pensei que Bars = número de barras no gráfico atual ? pelo menos de acordo com o dicionário. <---ok
Então --i eu imaginei que estava contando para baixo a partir do número de barras mais alto, como 1002 ou algo assim, e contando --i para baixo até realmente -1 Existe fechar[1002], fechar[-1]?
Porque enquanto i>=0 deveria contar até realmente -1 antes de se tornar falso. Se fosse 0 ou maior, seria verdadeiro e seria um último loop até atingir -1 <---- no fechamento[-1], ele retorna 0. Não é falso
Pelo menos era assim que eu pensava que funcionava? Estou errado ? <--- veja abaixo a ref.
Se i=0 e ++i e contar até o final da última barra, então pensei que contaria até o final. <--- Obviamente, fará isso.
Mas neste caso Bars-1 seu ditado não seria realmente todas as Barras fechadas mas na verdade inclui a Bar[0] que ainda não está fechada ou algo assim ? <--- neste caso, o preço fechado retornará o preço atual do Bid tick
Não estou realmente certo de entender a diferença entre Bars-1 e Bars. Tem algo a ver com a barra 0 atual que não é contada quando simplesmente se refere a Barras ?? <--- veja abaixo ref
Por favor, informe Obrigado Bem-vindo
Os elementos da matriz da série são indexados na ordem inversa, ou seja, da última para a primeira. A barra atual, que é a última da matriz é indexada como 0. A barra mais antiga, a primeira do gráfico, é indexada como Bars-1.
De qualquer forma, eu entendo isso e faz sentido, obrigado.
Vejo, por alguma razão eu estava pensando que o buffer lidou com este tópico um pouco diferente porque tecnicamente eu nem sequer declarei o número de elementos na matriz, então eu pensei que o buffer já tinha funcionado.
De qualquer forma, eu entendo isso e faz sentido, obrigado.
O que???? Eu não sabia que você estava realmente se referindo tudo isso a amortecedores indicadores. Agora que sei, leia estas referências retiradas de: https://www.mql5.com/en/articles/1500
(1) buffers indicadores & conjuntos de usuários - são ambos iguais e DIFERENTES. & A razão pela qual os buffers indicadores não são dimensionados por usuário, não tem nada a ver com o fato de já estarem sendo trabalhados. veja abaixo a ref:
Este é um conjunto usual. Mas a dimensionalidade não é indicada e a inicialização não é realizada. Esta matriz será posteriormente configurada como um buffer de dados.
(2) buffers indicadores na saída & na entrada (o buffer de dados acima) podem ter a mesma aparência, mas são diferentes.
Esta função "vincula" uma matriz a um número de buffer. Isto é, ela mostra que o buffer com o número indicado usará o array indicado para armazenar dados. Portanto, mudando os elementos desta matriz, você mudará o valor do buffer.O primeiro argumento é o nome da matriz que deve ser vinculada.
Vê, tudo funciona. Agora vamos ver o que o código faz:
Usamos o ciclo para passar por todos os elementos do buffer de dados. Como uma determinada barra corresponde a cada elemento do buffer, usamos o ciclo, começando pela barra zero (a última disponível) e terminando com a primeira disponível, que é em sucessão uma barra a menos que a variável Barras (porque contamos as barras a partir do zero).
A cada iteração um contador é aumentado em um, e passamos da última barra disponível para a primeira ao mesmo tempo, atribuindo a cada elemento do buffer (que corresponde a uma determinada barra) um número aleatório de 0 a 1000. Se for difícil para você entender, como um determinado elemento tampão corresponde a uma determinada barra, tente mudar o ciclo da seguinte maneira e veja o resultado no terminal:
Os elementos da matriz da série são indexados na ordem inversa, ou seja, da última para a primeira. A barra atual, que é a última da matriz é indexada como 0. A barra mais antiga, a primeira do gráfico, é indexada como Bars-1.
Conforme aprendo mais sobre indicadores, parece que o projeto que estou usando não seria muito útil para uso em uma EA, mas talvez só seja bom para uso visual e/ou manual.
Como o contador conta regressivamente 1 - parece que o uso deste método não seria bom para se referir a qualquer array de objetos para uso em comércio, a menos que talvez eu me refira apenas a um deslocamento em particular[i] e nesse caso eu teria que descobrir como me referir especificamente apenas àqueles elementos de array que eu gostaria de usar para um sinal de comércio localizado apenas naqueles Bars em particular.
A sua utilização na sua forma atual provavelmente faria com que a negociação ocorresse em todo o gráfico, assim como o indicador
Portanto, acho que agora estarei aprendendo como me referir a vários elementos de matriz em qualquer indicador, a fim de me referir a esses valores/tempos/barras, etc.
Obrigado a todos pela ajuda, e isto me dará muito que pensar sobre como criar indicadores iCustom e torná-los úteis em uma EA.