Discussão do artigo "Como se tornar um bom programador (Parte 2): mais cinco hábitos que devem ser abandonados para programar melhor em MQL5"
Olá, pessoal,
Sou um novato. Tenho bastante experiência em programação, mas estou apenas começando a programar em MQL5 - é minha primeira linguagem semelhante ao C++. Tenho lido os documentos de referência, mas não consigo identificar meu erro - o valor que espero que seja retornado do expoMA está sendo impresso/comentado no meu gráfico como 0,0 - estou cometendo algum tipo de erro de sintaxe? Não recebo nenhum problema/erro na compilação. Qualquer contribuição que você tiver seria ótima
void OnTick( { int days = 3; double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits); double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits); double movingAverageValues[]; double bidAskAverage = (Ask + Bid)/2; int exponentialMovingAverage = iMA(_Symbol,_Period,MA_Period,0,MODE_EMA,PRICE_CLOSE); ArraySetAsSeries(movingAverageValues,true); CopyBuffer(exponentialMovingAverage,0,0,3,movingAverageValues); double alpha = expoMA(days); double dEMA = bidAskAverage - movingAverageValues[1]; // o índice 1 aqui representa a EMA do valor t - 1 Comment("The ask price is: " + DoubleToString(Ask,5) + "\n" "The bid price is: " + DoubleToString(Bid,5) + "\n" "The average price is: " + DoubleToString(bidAskAverage,5) + "\n" "The custom expoMA value is: " + DoubleToString(alpha,5) + "\n" "The dEMA value is: " + DoubleToString(dEMA,5)) ; } double expoMA(int days=2) { double alpha = 2 / (days + 1); NormalizeDouble(alpha,5); return(alpha); }
Olá, pessoal,
Sou um novato. Tenho bastante experiência em programação, mas estou apenas começando a programar em MQL5 - é minha primeira linguagem semelhante ao C++. Tenho lido os documentos de referência, mas não consigo identificar meu erro - o valor que espero que seja retornado do expoMA está sendo impresso/comentado no meu gráfico como 0,0 - estou cometendo algum tipo de erro de sintaxe? Não recebo nenhum problema/erro na compilação. Qualquer informação que você tiver seria ótima
double expoMA(int days=2) { double alpha = 2.0 / (days + 1); //... }
Você está dividindo 2/4 em inteiros (0) e, em seguida, isso é analisado em um double. Em vez disso, você deve fazer com que um dos dois dividendos ou divisores seja um double (para que a divisão seja feita no tipo de dados "mais detalhado")
Outras opções poderiam ser (sendo dias um int):
double alpha = double(2) / (days + 1); double alpha = 2 / (days + 1.0); double alpha = 2 / double(days + 1);Isso provavelmente é um erro de python heheh
Manuel Alejandro Cercos Perez:
Você está dividindo 2/4 em números inteiros (0) e, em seguida, isso é analisado em um double. Em vez disso, você deve fazer com que um dos dois dividendos ou divisores seja um double (para que a divisão seja feita no tipo de dados "mais detalhado")
Outras opções poderiam ser (sendo dias um int):
Isso provavelmente é um erro de python hehehOlá, Manuel,
Muito obrigado! A dica acima funcionou como um encanto. Você me poupou de gastar muito mais horas para encontrar a causa raiz.
Caso contrário, você fará isso em cada tick recebido.
Sua última pergunta: pegue o tempo de abertura e adicione
Parabéns aos tradutores.
Depois do primeiro artigo, tive dúvidas, mas agora tenho certeza de que o autor quer explicar aos programadores idiotas que eles são idiotas. Autor, não se ofenda, mas o artigo foi escrito para você. Além disso, a arrogância com que você se dirige aos leitores anula seu trabalho.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Como se tornar um bom programador (Parte 2): mais cinco hábitos que devem ser abandonados para programar melhor em MQL5 foi publicado:
Este artigo é uma leitura obrigatória destinada a todos que desejam melhorar sua carreira como programadores. O objetivo desta série de artigos é ajudar o leitor, incluindo experientes, a melhorar suas habilidades de programação. As ideias descritas são aplicáveis tanto a programadores iniciantes em MQL5 quanto a profissionais.
Costumo usar o termo "noob" (do inglês novato) nesta série de artigos. Para simplificar, me refiro a eles como aqueles que têm pouca experiência em programação MQL5 (por favor, não se ofenda). É apenas para facilitar as coisas. Isso não significa que o conteúdo da série se destina especificamente a novatos. Claro que não! Este material é absolutamente para todos, independentemente da experiência em programação. Digo isto porque uma pessoa pode se tornar "noob" por certos hábitos e comportamentos na hora de programar, e não pelo número de anos a desenvolver programas.
Você pode ler o artigo anterior aqui. Por enquanto, eu continuo minha missão de ajudar os novatos a se tornarem mais profissionais.
Autor: Omega J Msigwa