Testador apoiando os scripts e consultores MG4 - página 3

 
AlexeyVik:
Bem, não vou provar que é verdade. Para uma pessoa que não está familiarizada com a programação C++ e o OOP em geral é bastante complicado e não é de todo para uma boa conversa ou criação de um mito. Por mais estranho que pareça, entendi tudo em uma semana e escrevi o que precisava. Este é um mito completamente diferente; isto mostra que o aprendizado mql5 está disponível até mesmo para não-profissionais, como eu.
Em qualquer OOP você pode programar algoritmos e usar o próprio OOP apenas como um invólucro. Quando comecei a codificar em Java, também não entendi a OOP no início, mas não vi nenhum problema em particular. Os problemas surgem mais tarde, porque é muito difícil ler as matérias primas em linguagem algorítmica. É muito mais difícil usar bibliotecas em linguagem algorítmica, porque é necessário aparafusá-las antes de usá-las.
 
Reshetov:
Você pode programar algoritmos em qualquer OOP, mas use OOP apenas como um invólucro. Quando comecei a codificar em Java, eu também não entendia o OOP no início, mas não vi nenhum problema. Os problemas surgem mais tarde, porque é muito difícil ler as matérias primas em linguagem algorítmica. O uso de bibliotecas em algoritmos é muitas vezes mais difícil, pois é preciso parafusá-las antes de usá-las.
Yuri, por que você está me explicando como é fácil? Para uma pessoa é simples, para outra é muito simples, e para alguém é inacessível. Eu não disse que era impossível dominar... Estava falando apenas das diferenças entre os idiomas... o familiar e o novo.
 
Renat:
Não é diferente em nada. Eles são dois idiomas idênticos com um único compilador.
Nesse sentido, C++ não é diferente do JavaScript. E é verdade!
 
Integer:
Nesse sentido, C++ também não é diferente do JavaScript. E é verdade!

Você não pode ver mais nada em nosso fórum.

Mas não há responsabilidade. Você pode apagar o que quiser.

 
AlexeyVik:
Yuri, por que você está me explicando como é fácil? Algumas pessoas o acham simples, outras o acham muito simples e outras o acham inacessível.
É difícil de entender se não há documentação, nem exemplos, nem artigos. Mas quando você tem tudo isso, e pode fazer perguntas em um caso problemático no fórum, é uma desculpa podre para falar de inacessibilidade.
 
Reshetov:
É difícil entender se não há documentação, nem exemplos, nem artigos. Mas quando tudo está lá, e você pode fazer perguntas em um caso problemático em um fórum, é uma desculpa podre para falar de inacessibilidade.

Vá embora. Pessoalmente, posso dominar esta linguagem sem nenhum problema ou pergunta. Mas alguém não pode fazê-lo por causa de seu caráter, você pode escrever-lhe qualquer coisa.

Ainda não consigo entender o propósito de você entrar em um diálogo e expressar uma opinião sobre um tema completamente diferente.

 
Renat:

O que você não vê neste fórum.

Ora, não há responsabilidade. Você pode dizer qualquer coisa.

Sim, é isso mesmo. Especialmente usando a autoridade de uma posição superior.

Todos os idiomas são os mesmos, exceto os extravagantes. Todos eles podem ser aprendidos em 21 dias por qualquer boneco. Tudo para, embora, se, a troca pode ter uma notação diferente, mas não faz nenhuma diferença em princípio. Não é a forma como os operadores são escritos que é importante, mas a infra-estrutura com a qual o idioma interage. Neste sentido, MT4 e MT5 são dois mundos diferentes.

A diferença em tudo. Começando pelo pequeno - com a numeração das barras no indicador, em MT4 da direita para a esquerda, em MT5 da esquerda para a direita. Continuando com o mais significativo - a posição agregada e a organização dos dados do histórico comercial. A maior diferença no que muitas vezes é necessário - na forma de acessar citações e indicadores de dados, a cópia dos dados requer verificação, depois indexação da esquerda para a direita, depois da direita para a esquerda, o tempo da barra ou está incluído no intervalo, ou não. Tomar sozinho a discussão da função iBarShift() no CodeBase.

No MT4, para garantir o funcionamento estável da EA foi suficiente verificar o valor de retorno da OrderSelect(), mas no MT5 é necessário fazer verificações em cada etapa, mesmo nos dados do último tick. Há também algumas sutilezas da programação do MT5, que você só aprenderá depois de ter sofrido muito, porque há muitas armadilhas.

 

Apoio de todo o coração sua opinião!

É claro que ampliar a funcionalidade é uma coisa boa, mas sob o capô do MT5 deveríamos ter deixado as funções do MT4 para compatibilidade. É claro, somente aqueles que se enquadram no modelo comercial da MT5.

Para que as fontes do MT4 fossem portadas com o mínimo de mudanças.

Embora eu use o MT5 como um testador de múltiplas moedas, mas as chamadas de funções excessivamente complexas me repelem.

As mesmas funções para mudar para o MT5(https://www.mql5.com/ru/articles/81), por que não implementá-las no próprio kernel?

Por que você precisa renomear funções para converter tipos, por exemplo

CharToStr - CharToString,  StrToDouble - StringToDouble

Parece ser elementar, mas... Reformas em prol de reformas?

Ou funções para trabalhar com o tempo, por exemplo

int Hour()
int HourMQL4()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.hour);
  }

Função de obter dados de um gráfico

double iClose(string symbol,
              int timeframe,
              int shift)
double iCloseMQL4(string symbol,int tf,int index)
{
   if(index < 0) return(-1);
   double Arr[];
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   if(CopyClose(symbol,timeframe, index, 1, Arr)>0) 
        return(Arr[0]);
   else return(-1);
}

Existem centenas desses exemplos!

Claro que o MT5 é mais funcional, mas o MT4 é mais conveniente! E isso às vezes é muito mais importante!

 
Integer:

Exatamente. Especialmente aproveitando a autoridade de uma posição superior.

A afirmação "C+++ também não é diferente do JavaScript desta maneira" é um disparate na veia de discutir a diferença entre MQL4 e MQL5. E alguém a esbateu.

A credibilidade é conquistada através de um longo e árduo trabalho. Eu cumpri este volume e sigo o que estou dizendo.


Há uma diferença em tudo. Começando com uma menor - a numeração das barras no indicador, em MT4 da direita para a esquerda, em MT5 da esquerda para a direita. Continuando com o mais significativo - a posição agregada e a organização dos dados do histórico comercial. A maior diferença no que muitas vezes é necessário - na forma de acessar citações e indicadores de dados, a cópia dos dados requer verificação, depois indexação da esquerda para a direita, depois da direita para a esquerda, o tempo da barra ou está incluído no intervalo, ou não. Tomar sozinho a discussão da função iBarShift() no CodeBase.

Que situação estranha nós temos. Qualquer idioma pode ser aprendido por um boneco em 21 dias, mas a numeração de barras e o acesso aos dados se tornam um problema.

Mais uma vez, os idiomas são quase os mesmos, diferem em um pequeno número de funções e têm um compilador comum. A MQL4 tem uma abordagem desatualizada para lidar com dados que são inaceitáveis para sistemas com histórico profundo e detalhado. Use as novas funções CopyXXX na MQL4 e será como na MQL5.


Na MQL4 para garantir a estabilidade da EA foi suficiente verificar o valor de retorno da OrderSelect(), e na MQL5 a verificação é necessária em cada etapa, mesmo na recepção dos dados do último tick. Há também algumas sutilezas da programação do MT5, que você só terá que aprender depois de ter tido muitos acertos, porque há muitas armadilhas.

Na MQL4 e MQL5, você precisa verificar os resultados das funções em todos os lugares.

Na MQL4 muitos comerciantes simplesmente ignoraram a verificação e tomaram os dados como estão. Na MQL5 eles escrevem o mesmo, e então seus programas de câmbio falham quando lançados em CFDs, futuros ou ações, simplesmente porque os autores eram preguiçosos demais para verificar os parâmetros dos instrumentos ou a disponibilidade de dados.

 
Nemser:

Embora eu use o MT5, como um testador de múltiplas moedas, mas as chamadas de funções desnecessariamente complicadas são repulsivas.

Pense no que as novas funções de acesso aos dados fornecem e por que elas são feitas dessa maneira.

MetaTrader 4 tem profundidade limitada da história, prazos separados e acesso direto a suas barras de símbolos via Aberto/Alto/Baixo/Fechado/Tempo[xxx]. Tal acesso direto é muito caro de ser implementado em termos de recursos e custo de CPU. Considere que cada Expert Advisor tem sua própria cópia local desses dados para evitar conflitos com outros Expert Advisors e com o próprio terminal.

Com o número crescente de símbolos (por exemplo, no MT5 você pode ter 5 000-10 000 símbolos) e usando o histórico profundo de um minuto como base de todos os prazos, é basicamente impossível usar os métodos do MT4. Não há RAM suficiente e a cópia de grandes pedaços mata o desempenho. É por isso que a MT5 não mantém mais automaticamente uma cópia oculta e cara do gráfico para cada especialista.

Em vez disso, mudamos para funções muito econômicas do CopyXXX, onde o desenvolvedor solicita exatamente à matriz local tantos dados quanto precisa, não todo o gráfico disponível. Depois há o tratamento mais rápido possível dos dados locais (em vez do antigo e caro Open/High/Low/Close/Time[xxx]), mais o autor pode armazenar esses dados e usá-los com parcimônia na próxima chamada. A economia de memória e CPU é enorme. Além disso, a plataforma em si é particularmente livre para gerenciar vastos bancos de dados - o acesso a eles é sempre sob demanda (ao invés de acesso direto sem supervisão) e isto permite o gerenciamento flexível de caches.

Deve-se notar também que a simplicidade das chamadas Open/High/Low/Close/Time[xxx] em MQL4 foi limitada ao símbolo e ao prazo atual, e todos os outros dados para outros símbolos e prazos foram obtidos usando as funções iClose/iLow(...), o que causou sérios atrasos. A transição em MQL5 para um único modelo de função CopyXXX melhorou radicalmente a situação, permitindo aos desenvolvedores obter os pedaços de dados necessários em uma solicitação, e não fazer múltiplas chamadas bloqueadas (pense nos bloqueios em cada chamada para iClose).


As mesmas funções para mudar para o MT5(https://www.mql5.com/ru/articles/81), então por que não implementá-las no próprio kernel?

Estas não são nossas funções e este artigo também não é. Este artigo é um conjunto de muletas monstruosas, mas lançadas para mostrar a diferença.

Expliquei repetidamente a necessidade de usar as novas características da MQL5, não as horrendas muletas.


Por que eles precisam renomear as funções de conversão de tipo, por exemplo

aparentemente elementar, mas... reformas em prol de reformas?

Esta é a abordagem correta para construir uma arquitetura de linguagem de qualidade. Os nomes das funções devem ser compreensíveis e não um conjunto de abreviações.

A nova linguagem e as práticas funções de autocompletar nos permitiram revisar a linguagem e torná-la mais limpa.


Ou, por exemplo, funções de tempo Obter dados de um gráfico E existem centenas de exemplos desse tipo!

Estes são exemplos de muletas (geralmente dizem "para fazer uma amigdalectomia com furos glandulares") que não devem ser usados para comparação.

O material teórico tornou-se ultrapassado desde que a MQL4 foi diretamente reduzida à MQL5 e agora a MQL4 tem muitas funções compatíveis.


Claro que o MT5 é mais funcional, mas o MT4 é mais conveniente! E isso às vezes é muito mais importante!

Não estou de acordo.

O MetaTrader 5 é muito mais fácil de usar, tanto em termos de software quanto de linguagem.

Razão: