[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 479
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
Eu não sei qual é sua lógica, comigo esta configuração desenha as últimas 30 barras do indicador
Mais uma vez, SetIndexDrawBegin() calcula as barras a partir da extremidade esquerda do gráfico
verifique antes de começar a discutir.
OK. Vou tentar delinear a essência do problema, talvez alguém sugira ou ajude a implementá-lo de uma forma mais simples.
Estamos trabalhando em um minucioso gráfico. Vamos tomar a barra de um minuto (alto+baixo/2 - valor médio da barra) no gráfico de 29/10/12 às 00:00 - ela será um ponto de referência.
Depois verificamos o desvio deste preço para cima em 10 pips (cada desvio correto é +1).
Quando atingimos o desvio de 10 pontos do ponto de partida - o contador +1; e começamos a verificar outros desvios, mas a partir do ponto, onde atingimos o desvio de 10 pontos, e esperamos pelo próximo aumento de preço de 10 pontos.
Por exemplo, nós conseguimos:
Se (ponto inicial) + 10 pips <= preço (usamos todos os preços subseqüentes de barras a partir do ponto inicial.) Recebemos um contador = contador +1; e iniciamos o ponto inicial já a partir deste ponto -(ponto inicial + 10 pips).
Se (ponto inicial + 10 pips) +10 pips <= preço (todos os preços subsequentes de barras do ponto de referência são usados) obtemos counter=Counter+1; e partimos deste ponto-(ponto inicial + 10 pips) +10 pips.
Se(ponto inicial + 10 pips+10 p ips) + 10 pips <= preço (usamos todos os preços subseqüentes de barras a partir do ponto de referência.) obtemos counter=Counter+1; e partimos deste ponto -(ponto inicial + 10 pips+ 10pips) + 10 pips.
e assim por diante...
Até chegarmos a um contador de 10(contador == 10).
E a cada novabarra formadade 1 minuto (alto+baixo/2 - valor médio da barra) verificamos esta condição e esperamos até que o contador chegue a10 (contador == 10). Suponha que dois dias se passaram, cada nova barra formada nós verificamos e alteramos se as condições estavam corretas .....
E quando chegamos ao contador =10 - emitimos a mensagem de que "Contador == 10". Estabelecemos o ponto de partida 2 dias à frente do original definido pelo usuário, ou seja, de29/10/12 às 00:00 a 31/10/12 às 00:00 e repetimos o ciclo.
Repita o ciclo e assim se mova através do cronograma.
Ou seja, devemos pegar as barras recém-formadas e sacar(alto+baixo/2 - valor médio da barra). E verifique as condições e, se elas estiverem corretas, altere-as conforme descrito acima.
Eu tentei implementá-lo através de uma matriz, é muito confuso e dá valores errados! Ajude-me, por favor, como implementar este algoritmo!
Você não precisa de arrays aqui. Isto é mesmo um Expert Advisor, um roteiro ou um indicador? A questão é que o código do Conselheiro Especialista será diferente do código do indicador para a implementação desta tarefa.
E há aqui uma desvantagem significativa. Vejam, marcamos o ponto de partida e ele está bem no auge da tendência de alta. Suponha que não consideremos a leitura desta vela em busca de mais 10 pontos - vamos chamá-la de vela inicial. Então, o próximo castiçal vai para baixo e não pegamos nenhum dos dois níveis = ponto de partida + 10 pips: o preço vai para baixo. Portanto, podemos dizer que estamos presos por um longo tempo - o preço desceu e pode subir e descer de qualquer forma - não alcançará o nível do ponto de partida de qualquer forma - os ursos pressionaram-na firmemente. Mas digamos que tivemos sorte e depois de 5.000 velas, o preço voltou ao nível do ponto de partida, e até subiu 10 pips. Perdemos muito tempo, mas agora podemos colocar o preço igual ao ponto de partida + 10 pontos na variável e esperar até o preço atingir o nível = nível variável + 10 pontos... Em resumo, não precisamos de tudo isso - a julgar pela sua descrição, estamos pegando o nível = ponto de partida + 10*10 = ponto de partida + 100 pips. Uma vez que este nível tenha sido alcançado, movemos a data de início 2 dias para o futuro e calculamos um novo ponto de partida. Isto é complicado - há uma maneira mais fácil.
Definimos a data de início em variáveis personalizadas (precedidas por externo no código). Declare uma variável do tipo data/hora. Suponha que seja a variável dt_StartDate (data de início) e então no bloco de inicialização lhe atribuímos o valor armazenado na variável personalizada. Depois procuramos o castiçal que corresponda a esta data e calculamos o ponto de partida usando sua fórmula. Entretanto, não é o ponto de partida, mas o nível de preço inicial. Declarar uma variável do tipo duplo, por exemplo, d_StartLevel (nível inicial) e entrar o valor do nível calculado na variável. Ou pode ser ainda mais fácil - não declarar uma variável, mas traçar uma linha horizontal através do preço inicial calculado. Vamos chamá-lo de StartLevel. Agora vamos traçar a segunda linha na tabela a uma distância = 100 pontos acima do nível inicial - vamos chamá-la de OtlovLevel. Mais adiante, não precisamos de arrays - em cada carrapato, simplesmente observamos se o preço é mais alto que o OtlovLevel ou não. Assim que for, aumentamos o valor da variável dt_StartDate em 2 dias, calculamos o nível inicial novamente e deslocamos a linha inicial para lá. Depois disso, novamente pegamos 100 pontos acima da linha de partida e arrastamos a linha OtlovLevel até lá. Isso é tudo, a tarefa está resolvida. Toda vez que podemos solicitar o preço ao qual qualquer linha é definida e compará-lo com o preço atual ou com o preço alto da vela atual.
Eu não sei qual é sua lógica, comigo esta configuração desenha as últimas 30 barras do indicador
Mais uma vez, SetIndexDrawBegin() calcula as barras a partir da extremidade esquerda do gráfico
verifique antes de discutir.
Portanto, não estou discutindo. Aqui está um olhar. Vamos tomar um indicador CCI padrão. Eu substituí operíodo CCIP por(Bars- CCIPeriod) na função SetIndexDrawBegin . Eu só mudei o amarelo destacado no código.
Aqui está o código:
Logicamente, se operíodo de CCIP for 14. Em seguida,SetIndexDrawBegin(0, Barras - Período CCIP) deve sortear apenas 14 últimas barras. Começa a partir do valor (Bar - 14). Mas isto é o que vejo na tela
Portanto, não estou discutindo. Aqui está um olhar. Pegue o indicador padrão CCI. Eu substituí operíodo CCIP na função SetIndexDrawBegin por(Barras- Período CCIP). Eu só mudei o amarelo destacado no código.
Aqui está o código:
Logicamente, se operíodo de CCIP for 14. Em seguida,SetIndexDrawBegin(0, Barras - Período CCIP) deve sortear apenas 14 últimas barras. Começa a partir do valor (Bar - 14). Mas isto é o que vejo na tela
Isto é o que eu vejo na tela
no topo o indicador nativo, abaixo mudou para SetIndexDrawBegin(0, Bars-CCIPeriod);
midorum, minhas desculpas. Meu erro. MetaEditor abriu outro terminal... Está funcionando agora. Obrigado!
Bom dia pessoal, por favor, me dêem uma resposta, como determinar que a vela de 15 minutos se abriu, eu usei um cordel de arrepiar a mente, mas como acabou, nem sempre a vela se abre pelo tempo... Acho que há uma maneira mais simples de descobrir que a vela se abriu... mas eu não entendo...
if ((TimeMinute(TimeCurrent())==0 && TimeSeconds(TimeCurrent())==0)|||| (TimeMinute(TimeCurrent())==15 && TimeSeconds(TimeCurrent())==0) |||| (TimeMinute(TimeCurrent())==30 && TimeSeconds(TimeCurrent())==0) |||| (TimeMinute(TimeCurrent())==45 && TimeSeconds(TimeCurrent())==0)
Bom dia pessoal, por favor, me dêem uma resposta, como determinar que a vela de 15 minutos se abriu, eu usei um cordel de arrepiar a mente, mas como acabou, nem sempre a vela se abre pelo tempo... Acho que há uma maneira mais simples de descobrir que a vela se abriu... mas eu não entendo...
if ((TimeMinute(TimeCurrent())==0 && TimeSeconds(TimeCurrent())==0)|||| (TimeMinute(TimeCurrent())==15 && TimeSeconds(TimeCurrent())==0) |||| (TimeMinute(TimeCurrent())==30 && TimeSeconds(TimeCurrent())==0) |||| (TimeMinute(TimeCurrent())==45 && TimeSeconds(TimeCurrent())==0)
https://www.mql5.com/ru/forum/131853/page4#504607
Bom dia pessoal, por favor, me dêem uma resposta, como determinar que a vela de 15 minutos se abriu, eu usei um cordel de arrepiar a mente, mas como acabou, nem sempre a vela se abre pelo tempo... Acho que há uma maneira mais simples de descobrir que a vela se abriu... mas eu não entendo...
if ((TimeMinute(TimeCurrent())==0 && TimeSeconds(TimeCurrent())==0)|||| (TimeMinute(TimeCurrent())==15 && TimeSeconds(TimeCurrent())==0) |||| (TimeMinute(TimeCurrent())==30 && TimeSeconds(TimeCurrent())==0) |||| (TimeMinute(TimeCurrent())==45 && TimeSeconds(TimeCurrent())==0)
A função retorna verdadeiro quando uma nova barra aparece na M15
A função retorna verdadeiro quando uma nova barra aparece na M15