記事"Net FrameworkとC#に基づくエキスパートアドバイザーと指標のためのグラフィカルインターフェイスの開発"についてのディスカッション - ページ 5

 
Igor Makanu:

MT5のコードにC++関数のシグネチャを記述し、通常のDLLとして呼び出す必要があります。

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

HI: tensorflow c# は完璧にググることができます。https://nugetmusthaves.com/Tag/tensorflow 

良い記事ですね!

Tensorflowのc#が完璧にググれることはもう知っています。ただ、C#の学習に時間をかけたくないので、TensorflowをC++と統合しています。

それは私の質問ではなかった。

記事に書かれているインタラクションの方法は、通常のものと何が違うのでしょうか?.Netプラットフォームで書かれたdllkaがあれば十分だと書かれています。でも、C#を使わなくてもそのプラットフォームで書ける。しかし、C++/CLRを 使った場合(そしてVisual Studioが .Netクラスでアプリケーションを作成することを提案した 場合)、MQL5は 通常通り、出来上がったdllkaから関数を宣言する必要が あり、クラスを全く見ません。

 

Visual Studioから MT5に文字列を送信できますか?どうすればできますか?


ご協力ありがとうございました。

 
AikAcrobatt:

記事に書かれているインタラクションの方法は、通常の方法と何が違うのでしょうか?この文章では、Dllkaは単に.Netプラットフォームで書かれていれば十分だと書かれています。しかし、このプラットフォームで書くためにC#を使う必要はない。

私が間違っていなければ、記事で使われている方法はC#インジェクションと呼ばれています - ググってみてください、私はここでは役に立ちません、C#とMQL5の間の相互作用がどのように行われるか、オプションとして "スピン "例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:

例えば、このライブラリの 使用例を示すことは現実的ですか?

ライブラリーは興味深い。エンジンと統合するのはかなり現実的だと思う。

 
AikAcrobatt:

こんにちは!

この記事を読んで、いくつかの疑問が浮かびました:

1) 記事の文章から、グラフィカル・インターフェースだけでなく、MQL5に「適合しない」ほとんどすべてのAPIの実装も、同じ方法で整理できるという印象を受けました。

その通りだ。この記事では、基本的に修正されたMVCデザイン パターンを説明している。パターンは普遍的なものであり、言語ツールやタスクに依存するものではありません。主なことは、「モデル-表現-コントローラ」のコンセプトがタスクにうまくフィットするかどうかということです。

AikAcrobatt:

質問ですが、C++ .Netライブラリ(私はC++/CLRを使用していると理解しています)を書いて、MQL5をGuiControllerエンジンのように.Netコードに実装することは可能ですか?

2) 理論的には可能です。.Net dllは、C#、VB Net、C++ Netのような高レベル言語に翻訳されるCILです。つまり、MQLはどの言語で書かれたものであっても、net dllを読むことができます。しかし、開発者は明らかにC#にこだわっているため、実際にどうなるかはチェックする必要がある。

AikAcrobatt:

私が興味を持っている実例はこれです。最近では、機械学習に関するオプセンサー・ライブラリを VS2017 と統合する可能性があり、例えば TensorFlow は C++ で API を提供し、GPU コンピューティングをサポートしています。あなたの記事は、TensorFloW(または他の機械学習ライブラリ)のC++実装を直接MQL5に統合する絶好の機会を提供します。問題は、なぜかここで指定されている方法を使っても、試用版のC++ dllをMQL5にインポートできないことです。

Net C++ dllのことですか? もしそうなら、確認してみてください。実際にどのように動作するのか理解するのは難しい。

しかし一般的には、あなたの言う通り、既存のコードとの高速統合は間違いなく将来的なものだ。そして、すべてを自分で書くには時間が足りないだろう。ここでは、必要なものをダウンロードして先に進むことができる。

 
AikAcrobatt:

...

記事に書かれているインタラクションの方法は、通常の方法と何が違うのですか?この文章では、.Netプラットフォームで書かれたdllkaがあれば十分だと書かれています。でも、そのプラットフォームで書くためにC#を使う必要はない。しかし、C++/CLRを使うと(そしてVisual Studioは .Netクラスでアプリケーションを作成するように勧めて きます)、MQL5では出来上がったdllkaから関数を宣言することは 通常通り必要なの ですが、クラスはまったく見えません。

C#ではすべてがまったく異なって動作するため、これは非常に奇妙なことだ。MQLはネットクラスとそのシグネチャ付きメソッドを完璧に認識する。MetaEditorではインテリセンスも機能する。

残念ながら、私はC++の経験がほとんどありません。喜んでお手伝いしたいのですが、残念ながらできません。

 
Norton Daniel Barth:

Visual StudioからMT5に文字列を送信できますか?どうすればできますか?

ご協力ありがとうございます。

はい、もちろんです。メソッドから文字列を返すことができます(1行目)。参照から文字列を返すこともできます(3行目):

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

SharpClassは、アセンブリ内の静的C#クラスです。

 
Vasiliy Sokolov:

C#ではすべてがまったく異なって動作するのだから。MQLはネット・クラスとそのシグネチャ付きメソッドを完璧に見ている。MetaEditorのインテリセンスでさえ機能する。

残念ながら、私はC++の経験がほとんどありません。喜んでお手伝いしたいのですが、残念ながらできません。

今のところ、私は次のようなものを持っています:

.NETを使ったC++の最も単純なdllka:

using namespace System;

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

このライブラリは、C#の同様のもの(私は確認しました)と同じ方法でMQL5と相互作用し、あなたの記事で説明されているものと似ています。
MQL5にプログラムを挿入すると、すべてがコンパイルされます:

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


すべてがコンパイルされ、コンパイラーはクラスClass1と関数Func1を見ます。しかし、シャープの動作とは異なり、ターミナルではdllのロードに失敗したと表示されます:

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

EX5のロードに失敗しました。



 
Vasiliy Sokolov :

もちろんだ。文字列はメソッドから返すことができます(文字列1)。また、文字列参照を返すこともできます(文字列3):

ここで、SharpClassは、あなたのアセンブリ内の静的C#クラスです。

あなたの助けをありがとう、しかし、私はC#についてもっと学ぶ必要がある、私は本当にこの単純なことを動作させるか、コードを含めることができます。


お時間をいただきありがとうございました。

 
AikAcrobatt:

今のところ次のようなものがある:

.NETを使ったC++のシンプルなDLL:

...

コードを正しく挿入してください: