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
Erros podem ser cometidos, pois o material é bastante grande.
O tópico da portabilidade (mais precisamente, o tópico de escrever uma classe de emulador com métodos MQL4) foi abordado em outro artigo (esperamos que seja concluído). No processo de leitura do material, pedimos ao autor para escrever um artigo na forma de um livro de referência para cobrir todas as funções MQL4 (exceto para negociação - você verá uma das soluções para elas em breve), para fornecer um análogo para cada uma delas em MQL5, em geral, para colocar tudo junto para que aqueles que reescrevem programas MQL4 possam encontrar rapidamente um análogo. Sobre o desejo desenfreado, se estivermos falando sobre o número de seções consideradas - insistimos em cobrir todas as funções (elas acabaram sendo mais de 250).
Quanto à comparação de funções em algumas seções, não se tratava exatamente de uma comparação. Era necessário fornecer um análogo, mesmo que fosse o mesmo. Para todas as funções. Portanto, parece que há uma comparação, mas você pode dizer pela comparação que, por exemplo, as funções de matemática são as mesmas. A propósito, como recomendação, provavelmente seria útil mencionar isso no início de cada seção, o que é algo a ser observado.
Por esse motivo (arquitetura das funções do emulador), o autor tinha algumas coisas não óbvias na implementação (por exemplo, para iLowest/iHighest global Open[]...High[]..., que foram declaradas globalmente de antemão e transformadas em AsSeries em OnInit), que estavam implícitas como no emulador, naturalmente, para a universalidade das funções, é melhor usar matrizes locais.
Quanto ao trabalho com indicadores técnicos, pode haver muitas perguntas, o trabalho com eles não deve ser como no MQL4 - é melhor criá-los manualmente no OnInit e consultar os descritores, em vez de criá-los cada vez em funções locais. Mas a abordagem sugerida pelo autor também funciona, porque o terminal não destrói imediatamente os indicadores. Portanto, há muitas sutilezas.
O importante é que agora há algo a ser discutido e, se você encontrar erros (inclusive os causados pela estrutura de funções proposta), ofereça suas variantes.
se este é um livro de referência, que seja um livro de referência!!!
ou não será peixe e carne
por que as matrizes globais são usadas para cálculos intermediários!É possível alocar espaço para esses cálculos dentro de uma função. Por que colocar uma referência?
em algumas funções, eles são modificados por seus atas.
o mesmo yahigest novamente!!! modificar o buffer global dentro de uma função é atas!
Bem, embora isso já tenha sido corrigido enquanto eu estava escrevendo, mas tenho certeza de que esse estilo será rastreado ao longo do artigo.
Quando o construtor de preço mcl4 acessar essas matrizes, ele encontrará.....
Em seguida, temos 6 seções de comparações!
funções mcl4 para mcl4
apenas comparações.
Então, do nada, ele inicia
tabela de substituição de funções.
2 seções
e novamente uma comparação
3 seções
e depois as substituições
funções!
e, em seguida, novamente....
Primeiro, na tabela, há a função µl4 e, em seguida, 2 tipos de células.
que contém um substituto reescrito para mcl5.
ou, 2 tipos de células, apenas uma função idêntica.
e isso ocorre em todo o artigo... portanto, isso é uma transferência para o µl4 ou um livro de referência.
deixe uma coisa de lado!
Há também muitas falhas que levarão a um estado de não funcionamento.
porque eu já aprendi muito sobre as peculiaridades do armazenamento de dados em matrizes do µl5.
e em muitas funções será necessário, eu diria até que é necessário determinar o tamanho da matriz,
algumas delas terão de determinar a direção da indexação.
devido à diferença de processamento de dados no ambiente do mcl4 e do mcl5.
porque já posso sentir que ele será compilado, mas não será iniciado.
É claro que esse guia de que você está falando seria realmente muito útil.
Há alguns pontos interessantes no artigo
mas não é nem peixe nem carne.
Deixe sem substituições apenas uma função e seu análogo no mql5.
isso será útil para uma reescrita completa do indicador mql4 para mql5.
com todas as referências à documentação!
para o inferno com esses substitutos grosseiros.
é claro, desculpe-me por uma crítica tão severa, mas lançar um artigo tão cru quando é mais esperado.
com erros tão críticos.
o que se aprenderá com isso? ....
claramente uma heresia...
E, por fim, por que não há anexos???
Se tantas funções foram movidas, por que não há um arquivo .mqh?
onde todas as funções seriam coletadas... especialmente 250 delas... copiar 1 por 1 para transferir mqh4 ....
novamente sugere que o autor está deliberadamente tentando ocultar algo.
Atenciosamente, Vasily.
...
porque já posso sentir o cheiro de que está compilando, mas não inicia.
...
De fato, escrever uma função que será compilada sem erros não significa que você possa incluí-la com segurança em seu código. O maior problema é traduzir a lógica do programa. É como traduzir poesia: você a traduziu literalmente, mas ela não rima. É por isso que não basta apenas traduzir as funções. A tarefa de converter de um idioma para outro não é tão simples quanto parece.
Eu vejo uma solução na forma de um emulador com um mecanismo simples e claro para transferir indicadores, scripts e Expert Advisors para a MQL5. Atualmente, estou trabalhando nisso.
Se é um guia, que seja um guia!!!
Não se trata de peixe e batatas fritas.
....
Vasily, obrigado por sua crítica construtiva, espero que o autor leve em conta os desejos e forneça variantes de funções autossuficientes sem o uso de matrizes globais.
O artigo foi planejado para ser uma referência - para fornecer correspondências entre as funções MQL4 e MQL5.
Esse é provavelmente o motivo da impressão de que o autor está tentando esconder algo: explicações mínimas, muitas tabelas, nenhum exemplo completo de uso. Mas essa é uma especificidade do gênero.
Há muitas sutilezas no trabalho com funções, os detalhes devem ser considerados em detalhes e com exemplos, mas esses são os tópicos de outros artigos - esperamos que eles apareçam. O tópico da migração da MQL4 está longe de ser esgotado por este artigo, muitos materiais interessantes estão sendo preparados e serão publicados em breve.
.
Isso deve ser entendido da seguinte forma: a implementação é muito complicada e não se justifica. Afinal de contas, o objetivo é abandonar completamente as funções MQL4.
Exatamente. O objetivo é explicar quais (outros) meios devem ser usados agora, devido a quais mudanças na arquitetura do sistema. Como esse material é fornecido na forma de um livro de referência, é importante preencher todas as células com uma "solução". Se não houver um análogo, então há outra abordagem.
É difícil ler um livro sobre cada indicador, pelo menos.
Nem mesmo eu posso me gabar disso.
... é importante preencher todas as caixas com "solução". Nenhum análogo significa que há outra abordagem.
A seção 17 é adicionada com uma referência à "solução".
Sugira quais recursos "não análogos" devem receber atenção primeiro, pois nem todos são tão relevantes e necessários. Tentarei fazer alterações.
17 é bom. Quanto ao primeiro turno, não cabe a mim julgar. Todos que converterem mql4 para mql5 terão sua própria fila. Para não perder nada, eu simplesmente preencheria a ordem de cima para baixo, começando com AccountFreeMarginCheck, AccountFreeMarginMode, ArrayCopyRates, ArrayDimension etc. (restam apenas 9 deles).
Prezado Vasily!
Obrigado por seus comentários, as funções da seção 18 foram atualizadas. Por favor, verifique a versão atual.
O autor trabalhou muito, pode haver erros, mas vamos corrigi-los juntos.
A função TFMigrate(int tf) é necessária para substituir os valores corretos dos períodos de tempo MQL5. Por exemplo, em MQL4 o valor numérico da constante PERIOD_H1 é 60, e em MQL5 o valor numérico de PERIOD_H1=16385, ou seja, TFMigrate(60)=16385.
Em minha opinião, são necessárias duas funções para trabalhar com o TF em condições de migração:
1. Converte o número de segundos em TF - digamos ENUM_TIMEFRAMES SecondToPeriod (int Value);
2. Converte o período em segundos - digamos, int PeriodToSecond(ENUM_TIMEFRAMES Value).
O que fiz com sucesso em meu módulo de migração logo no início (há também uma opção de DLL).
PS
Para maximizar a conformidade com a MQL4, eu pessoalmente me livrei de todos os períodos não padrão para ela