Discussão do artigo "Criando interfaces gráficas para EAs e indicadores baseados no .Net Framework e C#" - página 5

 
Igor Makanu:

No artigo, há uma maneira completamente diferente de interação do MT5 com o "mundo externo". Você precisa descrever assinaturas de funções C++ no código do MT5 e chamá-las como uma dll normal.

https://www.mql5.com/pt/articles/18

HI: o tensorflow c# é perfeitamente pesquisável no Google, aqui estão as soluções prontas para o C# https://nugetmusthaves.com/Tag/tensorflow 

Bom artigo, vou tomar nota, obrigado!

Eu já sei que o tensorflow c# é perfeitamente pesquisável no Google, só não quero perder tempo aprendendo C#, então integro o tensorflow com o C++.

Essa não era a minha pergunta.

Qual é a diferença entre a forma de interação descrita no artigo e a forma usual? Está escrito no texto que basta que o dllka seja escrito na plataforma .Net. Mas você não precisa usar o C# para escrever nessa plataforma. Mas quando eu uso C++/CLR (e o Visual Studio sugere que eu obtenha um aplicativo com classes .Net), a MQL5 ainda exige a declaração de funções da dllka resultante como de costume, e não vê as classes de forma alguma.

 

É possível enviar uma string do Visual Studio para o MT5? Como posso fazer isso?


Obrigado por sua ajuda

 
AikAcrobatt:

Qual é a diferença entre a forma de interação descrita no artigo e a forma usual? O texto diz que basta que o dllka seja escrito na plataforma .Net. Mas você não precisa usar o C# para escrever nessa plataforma.

Se não me engano, o método usado no artigo é chamado de injeção de C# - pesquise no Google, não estou ajudando aqui, como a interação entre C# e MQL5 ocorre, como uma opção "girar" o exemplo https://www.mql5.com/ru/forum/303283/page3#comment_10607873.

Обсуждение статьи "Создание графических интерфейсов для экспертов и индикаторов на базе .Net Framework и C#"
Обсуждение статьи "Создание графических интерфейсов для экспертов и индикаторов на базе .Net Framework и C#"
  • 2019.02.12
  • www.mql5.com
Опубликована статья Создание графических интерфейсов для экспертов и индикаторов на базе .Net Framework и C#: Автор: Vasiliy Sokolov...
 
fxsaber:

É realista mostrar um exemplo de uso, por exemplo, dessa biblioteca?

A biblioteca é interessante. Acho que é bastante realista integrá-la ao mecanismo.

 
AikAcrobatt:

Olá, este é um ótimo artigo!

Há uma série de perguntas decorrentes do que foi dito acima:

1) Pelo texto do artigo, fiquei com a impressão de que não apenas as interfaces gráficas, mas também a implementação de quase todas as APIs que "não se encaixam" na MQL5 podem ser organizadas da mesma forma.

Sim, isso é absolutamente verdade. O artigo descreve essencialmente um padrão de design MVC modificado. Os padrões são universais e não dependem de ferramentas de linguagem e tarefas, o principal é que o conceito de "modelo-representação-controlador" se encaixa bem na tarefa.

AikAcrobatt:

Minha pergunta é: é possível escrever uma biblioteca C++ para .Net (entendo que usar C++/CLR) de modo que a MQL5 possa ser implementada em seu código .Net, como em seu mecanismo GuiController?

2) Teoricamente, você pode. A dll Net é um CIL compactado para o qual linguagens de alto nível como C#, VB Net, C++ Net são traduzidas. Ou seja, o MQL deve ler a net dll independentemente da linguagem em que foi escrita. Mas apenas a forma como isso ocorrerá na prática deve ser verificada, pois os desenvolvedores obviamente pretendiam usar o C#.

AikAcrobatt:

O exemplo prático no qual estou interessado é este. Atualmente, há possibilidades de integrar bibliotecas de opsensores em aprendizado de máquina com o VS2017 e, por exemplo, o TensorFlow fornece API em C++ com suporte para computação de GPU. Seu artigo oferece uma ótima oportunidade de integrar a implementação em C++ do TensorFlow (ou qualquer outra biblioteca de aprendizado de máquina) diretamente na MQL5, o que me parece muito conveniente. O problema é que, por algum motivo, não consigo nem importar uma dll C++ de teste para a MQL5 usando o método especificado aqui.

Você se refere à dll Net C++? Se sim, você deve verificar. É difícil entender como isso funcionará na realidade.

Mas, em geral, você está muito certo: a integração rápida com o código existente é definitivamente o futuro. E você não terá tempo suficiente para escrever tudo sozinho. E aqui você pode fazer o download do que precisa e seguir em frente.

 
AikAcrobatt:

...

Qual é a diferença entre a forma de interação descrita no artigo e a forma usual? O texto diz que basta ter um dllka escrito na plataforma .Net. Mas você não precisa usar o C# para escrever nessa plataforma. Mas quando uso C++/CLR (e o Visual Studio sugere que eu obtenha um aplicativo com classes .Net), a MQL5 ainda exige a declaração de funções da dllka resultante como de costume, mas não vê as classes.

Isso é muito estranho, pois tudo funciona de forma bem diferente com o C#. A MQL vê perfeitamente as classes Net e seus métodos com assinaturas. Até mesmo o intellisense funciona no MetaEditor.

Infelizmente, sou quase inexperiente em C++. Ficaria feliz em ajudá-lo, mas receio que não seja possível.

 
Norton Daniel Barth:

É possível enviar uma string do Visual Studio para o MT5? Como posso fazer isso?

Obrigado por sua ajuda

Sim, é claro. Você pode retornar a string de um método (linha 1). Você também pode retornar a string a partir de uma referência (linha 3):

string line = SharpClass::GetSting();
string line_l;
SharpClass::GetStringByLink(line_l);

Onde SharpClass é a classe C# estática em seu conjunto.

 
Vasiliy Sokolov:

Isso é muito estranho, pois tudo funciona de forma bem diferente com o C#. O MQL vê perfeitamente as classes Net e seus métodos com assinaturas. Até mesmo o intellisense no MetaEditor funciona.

Infelizmente, sou quase inexperiente em C++. Ficaria feliz em ajudá-lo, mas receio que não seja possível.

Até o momento, tenho o seguinte:

A dllka mais simples em C++ usando .NET:

using namespace System;

namespace TesterMQL54 {
        public ref class Class1
        {
        public: static int Func1(int arg) { return (arg - 1); };
        };
}

Essa biblioteca interage com a MQL5 da mesma forma que uma biblioteca semelhante em C# (eu verifiquei) e semelhante à descrita em seu artigo.
Quando inserimos o programa na MQL5:

#import "TesterMQL5_4.dll"
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
void OnStart()
  {
   Print("Beg");
   Print(Class1::Func1(7));
   Print("End");
  };
//+------------------------------------------------------------------+


Tudo compila, o compilador vê a classe Class1 e a função Func1. Mas, ao contrário do comportamento de Sharpe, o terminal diz que não consegue carregar a dll:

Cannot load 'C:\Users\...\MQL5\Libraries\TesterMQL5_4.dll' [0]

Falha no carregamento do EX5.



 
Vasiliy Sokolov :

Sim, é claro. A string pode ser retornada do método (string 1). Você também pode retornar a referência da string (linha 3):

Onde SharpClass é uma classe C # estática em seu conjunto.

Obrigado por sua ajuda, mas preciso aprender mais sobre C #, posso realmente fazer essa coisa simples funcionar ou incluir o código


Mais uma vez, obrigado por sua atenção

 
AikAcrobatt:

Até o momento, tenho o seguinte:

Uma dll simples em C++ usando .NET:

...

Por favor, insira o código corretamente: