Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 242
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 consigo resolver um problema aparentemente simples. Em algum lugar da tabela, havia uma passagem de MA. Encontramos um bar após a travessia. Como calcular o número de barras dessa barra para a barra atual?
Eu não consigo resolver um problema aparentemente simples. Em algum lugar da tabela, havia uma passagem de MA. Encontramos um bar após a travessia. Como calcular o número de barras desta barra para a barra atual?
Parece estar feito (pelo menos o comentário na tela está correto). Graças ao"número de barras", acho que encontrei a solução. Eu uso a função iTime para determinar a data e o horário da barra necessária. O esboço é parecido com este:
nulo OnTick()
{
int nBarsUp, nBarsDn;
datetime date_dn = iTime(NULL, 0, IntersectionDN());
datetime date_up = iTime(NULL, 0, IntersectionUp());
datetime date_1 = iTime(NULL, 0, 1);
nBarsUp = Bars(Symbol(), 0, date_up, date_1);
nBarsDn = Bars(Symbol(), 0, date_dn, date_1);
Comentário ("Número de barras longas: " + nBarsUp + "\n" + "Número de barras curtas: " + nBarsUp + "\n")
"Número de barras curtas:" + nBarsDn);
}
//+------------------------------------------------------------------+
IntersecçãoDN()
{
for(int i = 0; i < 36; i++)
{
if(iMA(Symbol(), 0, 5, 0, MODE_EMA, PRICE_CLOSE, i) > iMA(Symbol(), 0, 21, 0, MODE_EMA, PRICE_CLOSE, i)
&& iMA(Symbol(), 0, 5, 0, MODE_EMA, PRICE_CLOSE, i-1) < iMA(Symbol(), 0, 21, 0, MODE_EMA, PRICE_CLOSE, i-1))
retorno(i-1);
}
retorno(-1);
}
intersectionUp()
{
for(int i = 0; i < 36; i++)
{
if(iMA(Symbol(), 0, 5, 0, MODE_EMA, PRICE_CLOSE, i) < iMA(Symbol(), 0, 21, 0, MODE_EMA, PRICE_CLOSE, i)
&& iMA(Symbol(), 0, 5, 0, MODE_EMA, PRICE_CLOSE, i-1) > iMA(Symbol(), 0, 21, 0, MODE_EMA, PRICE_CLOSE, i-1))
retorno(i-1);
}
retorno(-1);
}
Parece ter funcionado (pelo menos o comentário na tela está correto). Graças ao"número de barras", acho que encontrei uma solução. Usei a função iTime para determinar a data/hora da barra desejada. O esboço é parecido com este:
Você está procurando um crossover no laço. E a partir da barra zero no fundo da história. Assim, sua função IntersectionXX() retorna o número da barra.
Para que serve tudo isso?
Você está procurando um crossover no laço. E desde a barra zero até o fundo da história. Então IntersectionXX() retorna o número da barra.
Para que serve tudo isso?
O número do bar, sim. Mas eu preciso saber o número de barras - desde esta barra no fundo da história até a barra zero. Em resumo, eu preciso do ângulo da inclinação da barra do MA. Mas como não pode ser calculado como me parece (preço na linha vertical e barras na linha horizontal colocadas a alguma distância uma da outra - são valores incompatíveis). Era uma vez uma sugestão sobre o fórum para introduzir um coeficiente - a diferença de preço dividida pelo número de barras. A idéia me parece razoável. Quero colocá-lo em prática, mas como eu mesmo sou um boneco, tento encontrar algo e experimentá-lo eu mesmo por tentativa e erro.
P.S. Como inserir código na MQL4 (como o seu, não como o meu)?Alguém pode aconselhar como lidar com este problema?
Depois de mudar o TF, o painel é empenado
O número de barras, sim. Mas eu preciso saber o número de barras - desde esta alguma barra no verso da história até a 0ª barra. Em resumo, eu preciso do ângulo da barra do MA. Mas como não pode ser calculado, me parece (preço na linha vertical e barras na linha horizontal colocadas a alguma distância uma da outra - são valores incompatíveis). Era uma vez uma sugestão sobre o fórum para introduzir um coeficiente - a diferença de preço dividida pelo número de barras. A idéia me parece razoável. Quero colocá-lo em prática, mas como um boneco eu mesmo, tento encontrar algo e me experimento por tentativa e erro.
P.S. Como inserir código na MQL4 (da maneira que você o tem, não da maneira que eu o tenho)?Olá! Os doisnúmerosmenosq e wsão comparados incorretamente, quando são iguais, o se operador pensa que um é maior que o outro. Qual é o erro? Quando q = -0,0002 e w é também -0,0002, res12=falso, por quê?
Olá! Os doisnúmerosmenosq e wsão comparados incorretamente, quando são iguais, o se operador pensa que um é maior que o outro. Qual é o erro? Quando q = -0,0002 e w é também -0,0002, res12=falso, por quê?
Olá! Os doisnúmerosmenosq e wsão comparados incorretamente, quando são iguais, o se operador pensa que um é maior que o outro. Qual é o erro? Quando q = -0,0002 e w é também -0,0002, res12=falso, por quê?
Acho que precisamos normalizar e é isso, não se pode comparar as duplas sem normalização.
se NormalizeDuplo (q<=w)Acho que preciso normalizar e é isso, pois não é possível comparar o dobro entre eles sem a normalização.
Obrigado, funcionou, mas eu normalizei q e w separadamente!