Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 794
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
Este é um exemplo de como fazer isso em um indicador. A pergunta era sobre o Expert Advisor.
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
Qualquer pergunta de novatos sobre MQL4, ajuda e discussão sobre algoritmos e códigos
Noroeste, 2019.03.28 03:54
Bom dia a todos!
Perdeu duas horas, mas não encontrou nada.
Você pode me dizer como em mq4, na EA, para corretamente
Gostaria de usar funções incorporadas para construir um indicador sobre outro.
e deve ser exibido em testes na subjanela, como deve ser,
por exemplo, MA sobre dados RSI?
Mas, em geral, é quase certo. É mais fácil escrever um indicador e tirar valores dele do que preencher uma matriz para o iMAOnArray. Mas por que duas voltas?
Mas por que dois ciclos?
não verificar a primeira execução do indicador ou o carregamento de dados históricos
às vezes é mais compacto e eficiente usar a verificação da condição enquanto/para em vez de fazer uma verificação adicional se e depois usar os operadores do laço após a condição ser atendida
se você "colar" o código de cálculo iMAOnArray() em um laço preenchendo a matriz com dados RSI, isso causará cálculos incorretos de elementos ainda não preenchidos da matriz rsiBuffer[].
nota, usei no exemplo de cálculo iMAOnArray() para todos os elementos da matriz (total = 0). Estudei esta questão alguns meses atrás, mas infelizmente, não há informações específicas sobre como usar corretamente o iMAOnArray() e o parâmetrohttps://docs.mql4.com/ru/indicators/imaonarray nele
int total, // número de elementos
iMAOnArray() tema https://www.mql5.com/ru/forum/303372/page2#comment_10617854
Este é um exemplo de como fazer isso em um indicador. A pergunta era sobre o Conselheiro Especialista.
Você tem certeza de que esta era a pergunta?
Você pode vê-lo na subjanela durante os testes,
)))))
não verificar a primeira execução do indicador ou o carregamento de dados históricos
Às vezes é mais compacto e eficiente usar a verificação da condição enquanto/ por código do que fazer um adicional se e depois usar operadores de laço após a condição ser atendida
Você tem certeza de que era isto que queria perguntar?
)))))
)))) Não é a primeira vez que sou pego um pouco desatento. Eu nem cheguei ao final do indicador.
Mas sobre o adicional se
pode ser escrito como
Não usar registros como este?Igor Makanu:
...estudei esta questão há alguns meses, mas infelizmente não há informações específicas sobre como usar o iMAOnArray() corretamente e seu parâmetrohttps://docs.mql4.com/ru/indicators/imaonarray
int total, // número de elementos
O número de elementos é importante quando não se precisa de uma simples média. Não consigo me lembrar que tipos de MA usam seu valor anterior em seus cálculos com um olhar. Neste caso, o número de elementos afetará o resultado. Em geral, é resolvido em mql5 em meio carrapato e eu não estou mais interessado nele.
Você não usa tais entradas?
Eu o uso, mas geralmente escrevo meus códigos "em dois passes" - ao escrever do zero, uso construções que são claras para "análise fonética" (ou seja, essencialmente para leitura em voz alta), com condições de if() é mais fácil dizer tudo))))
então, sim, posso "arrumar um pouco o código" e fazer constituições similares, mas geralmente o uso na minha biblioteca de exemplos prontos (códigos)
SZS: Eu vi em algum lugar informações sobre o aumento da produtividade dos programas C#. Eu sei com certeza que foi recomendado tentar evitar o uso de foreach() e este operador ? como se() o operador fosse mais produtivo, mas eu acho que não é crítico - eu o uso como eu quiser
O número de elementos é importante quando não se precisa de uma simples média. Não consigo me lembrar quais são os IA que usam seu valor anterior em seus cálculos, num relance. Neste caso, o número de elementos afetará o resultado. Em geral, é resolvido em mql5 em meio carrapato e eu não estou interessado.
É um problema mais profundo, pesquisei tanto neste fórum como no fórum inglês, houve uma discussão e exemplos de uso, o total = 0 ou total !=0 pode fazer diferença nos cálculos iMAOnArray() - em uma discussão com Igor (link acima), decidi usar iMAOnArray() apenas com o parâmetro total = 0 - em discussões antigas era a mesma solução
Há um problema mais profundo, pesquisei tanto neste fórum como no fórum inglês, houve uma discussão e exemplos de uso, do parâmetro total = 0 ou total !=0 o cálculo do iMAOnArray() pode ser diferente - na discussão com Igor (link acima), decidi usar iMAOnArray() apenas com o parâmetro total = 0 - em discussões antigas a mesma solução foi usada
É isso mesmo. Se você não pegar todos os elementos da matriz e tentar chegar ao EMA sem erros, será difícil.
Média móvel exponencial (EMA)
A média móvel exponencialmente suavizada é determinada pela adição ao valor médio móvel anterior de uma certa parte do preço de fechamento atual. Com médias móveis exponencialmente suavizadas, é dado mais peso ao último preço de fechamento. Uma média móvel exponencial de P percentual será da seguinte forma:
EMA = (FECHADO (i) * P) + (EMA (i - 1) * (100 - P))
Onde:
FECHAR (i) - preço de fechamento do período atual;
EMA (i - 1) - valor da média móvel do período anterior;
P - participação do valor de uso do preço.
Conseqüentemente, se você ler EMA do período 30 a partir de um conjunto de 30 elementos, você receberá MA simples ao invés de EMA.
Certo. Se você não pegar todos os elementos de uma matriz e tentar chegar ao EMA sem erros, será difícil.
Portanto, se você ler EMA do período 30 a partir de um conjunto de 30 elementos, você receberá MA simples ao invés de EMA.
Eu verifiqueiiMAOnArray() - os resultados são imprevisíveis, às vezes 2 * período MA pode ser usado, às vezes mais é necessário. Se total = 0, você pode usá-lo uma vez para o cálculo, mas se você usá-lo com muita freqüência, o terminal fica pendurado
Eu raramente uso iMAOnArray()
if (response == 0) {
Print("Что-то пошло не так");
// потом уже добавите диагностику из WinAPI
return false;
}
e antes do retorno normal, imprima também o resultado
Print(" всё хорошо, результат:" toStr);
return toStr;
e executar todo o código em um temporizador, por exemplo, uma vez por minuto. Pratique em um recurso que com certeza não será banido e dará tempos diferentes, mas previsíveis, para que você possa verificar.
----
telepaticamente - se realmente houver um problema,
ou a inicialização está errada (não me lembro se WinSOCK deve ser inicializado para InternetOpenW ou não)
Ou algum recurso não está sendo liberado.
tudo adicionado! Nada aparece no Print!!!
Como faço a saída da variável para a janela de dados sem exibi-la no gráfico?
Não consigo encontrá-lo na documentação por algum motivo.
Como faço a saída da variável para a janela de dados sem exibi-la no gráfico?
Não consigo encontrá-lo na documentação por algum motivo.