Estou apenas curioso sobre vocês lá fora. Alguém aqui realmente usa muito o MetaTrader (para escrever MQL), mas muito poucos usam o cTrader (cAlgo)?
Além das vantagens que o corretor tem a oferecer, sinto que o MetaTrader não é a melhor plataforma para construir EAs. MQL = C , eles estão usando C como código base. Está escrito na página de documentação deles:
https://www.mql5.com/en/docs
Enquanto cTrader (cAlgo) usa C# como seu código base.
Sou consultor técnico em tempo integral, desenvolvedor de aplicativos, web designer novato, conheço a maioria das tecnologias recentes de desenvolvimento de aplicativos. Faço isso há mais de 10 anos e descobri que C# e Java são concorrentes fortes. Ambos foram nomeados entre as 10 linguagens de programação mais populares, juntamente com Javascript, Scala, Go, Phyton. Mas nenhum deles é C . Para minha experiência (depois de escrever 3 EAs), MQL é apenas difícil. Se sua lógica é tão simples quanto calcular algo, crie ordens ou posições pendentes com base no mercado, MQL é o suficiente. Mas uma vez que você entra em ideias mais complexas, MQL simplesmente não é suficiente... desculpe dizer.
Tomemos como exemplo um dos meus EA, Tunnel Martingale (TM). Se você seguir meu tópico (
https://www.tradingintuitivo.com/tra...ivots-win.html) na seção comercial, na verdade foi construído usando MQL. Porque a lógica é simples! Inicie uma posição de mercado aleatoriamente, depois coloque a ordem pendente na direção oposta, uma vez que a ordem pendente seja alcançada/executada, coloque outra ordem pendente na direção oposta, etc. etc. Uma estratégia é apenas uma estratégia, falhou, sugou o investimento e depois voltou para a prancheta novamente.
À medida que as ideias para melhorar avançam um pouco, a codificação com MQL está ficando cada vez mais difícil. Uma das ideias para melhorar é, em vez de executar a série martingale por tempo ilimitado e indefinidamente, poderíamos limitar o período de tempo apenas em uma data e hora específicas apenas para um intervalo/duração específico. Agora aqui está o problema.
A maneira como o C lida com data e hora está usando atualmente o tipo de dados antigo que é baseado em número inteiro que representa ticks calculados desde 1º de janeiro de 1970! Isso é como algumas coisas pré-históricas. Então, agora eu entendo que se eu quiser definir uma data e hora específica de A a B, eu tenho que saber a representação do tick dessa data.
Portanto, se eu quiser escrever que a TM começa em 31 de março de 2020 12:00:00, tenho que escrever 637212528000000000 em um parâmetro, variável ou qualquer método de comunicação entre mim como usuário para o EA. Não é isso, as funções DateTime são muito limitadas em MQL.
Agora, outro desafio é que quero introduzir um objeto para as datas, no parâmetro de entrada. Não há como, tanto o MQL quanto o cAlgo, definir parâmetros de entrada complexos. Mas pode-se fazer isso introduzindo uma configuração de arquivo, algo como JSON ou XML. Em MQL, são necessárias algumas linhas apenas para ler um arquivo. Você precisa entender o conceito do ponteiro, você precisa verificar se o filehandle está fechado, se não estiver fechado, você deve fechar o handle, caso contrário, ele ficará preso etc. etc.
No cAlgo, essa tarefa pode ser feita apenas chamando uma função e depois atribuindo-a a uma variável. Apenas 1 linha.
Agora, falando sobre o objeto no mundo da programação, uma vez que lemos o arquivo de configuração, podemos acessar a configuração usando OOP, em que dentro do objeto também tem algum array de outro objeto etc..etc. OOP em C é apenas uma perda de tempo. Aqui está o porquê:Você não pode simplesmente ler XML ou JSON em um objeto em C . Existem muitas etapas para conseguir isso, enquanto no cAlgo pode ser feito em 2 linhas no mínimo. Você não pode simplesmente ordenar uma matriz de objetos (e isso é estúpido). Você pode classificar se o tipo de dados a ser classificado for o número (int, long, short), não com outro tipo de dados, como data e hora. E a classificação é simples assim, não há outra função. É preciso criar sua própria função de classificação, e fazer isso apenas desperdiçando muito meu tempo. Apenas essas 2 razões, eu desisti das minhas chances e mudei para a cTrader.
Não é que eu não queira aprender MQL. Mas ei, escrever EAs deveria ser como escrever um aplicativo de negócios, deve ser robusto, rápido, rápido, simples, mantendo as coisas menos importantes ao longo do caminho. A menos que, se você estiver escrevendo código para uma máquina, coisas robóticas ou jogos, ou código que precise de acesso mais rápido à camada de linguagem de máquina, então C é a melhor escolha.
Imagine, você quer ir de seu lugar de pé agora no Havaí para Nova York, seu destino. Com C# (ou cTrader/cAlgo), você só precisa usar (ou comprar) qualquer meio de transporte disponível por aí, carros, passagem de balsa, passagem de avião, ônibus, trem, qualquer coisa para chegar rápido ao seu destino. Com o MQL, tenho vontade de viver no ano de 1781, onde precisamos construir um barco com as mãos para chegar lá.
E aí, como está sua experiência, pessoal?