Websocketはどのように? - ページ 14

 
Алексей Барбашин:

フェドール、道が違うぞ。そんなことはないんだ!Volodjaから渡されたコードをきれいに使っていますね。あなたの仕事は、ウェブソケットからデータを取得し、mqlにaskとbidを渡すことです!あなたの仕事は、ウェブソケットからデータを取得し、mqlにaskとbidを渡すことです。今回は受信したデータからmqlにbidを返すだけでしたが、あなたの仕事は構造体全体をmqlに返し、ログに情報を出力することです。

オッケーです。これからやり直そうと思っています。
 
Алексей Барбашин:

そうですね、それはないですね。しかし、この問題は解決することができます。デバッグが終わった最終段階では、シャープのライブラリにDLLExportを実装するだけで、すべてがmt4で動作するようになります。

それはない、すでにテスト済みだ。

C++/CLIのいずれか

or UnmanagedExports by Robert Giesecke - 私が書いている記事について

ZS: DLLExportで単純なメソッド(return a + b)は動くかもしれませんが、それ以上、初期化が必要なもの.Netは動きませんね......。は、新しいことを教えてもらえるとうれしいです。

ZZZY: https://github.com/3F/DllExport を見つけましたが、使用せず、他のものを見つけましたが、同じチップです。

なお、UnmanagedExportsはRobert Giesecke 氏によって作られたものであることに改めて注意してください。彼のページを訪ねてみてください。

しかし、このリポジトリはRobertとは関係なく、GitHub/3Fの開発者によってまだ開発されている。

 

なぜかゼロが返ってくる。


 
Igor Makanu:

それはない、私はすでにチェック済みだ

またはC++/CLI

or UnmanagedExports by Robert Giesecke - 私が書いている記事について

ZS: DLLExportは、単純なメソッドreturn a + b;、それ以上のものはなく、初期化が必要なものはすべて.Netでは動作しませんが...。例を挙げるなら喜んで、新しいことを学ぶのは常に幸せなことです。


が働いた。
ILコードに正しい変更を加える必要があります。

VSコンパイル後に変更するexeを自作しました。
そして、C#のメソッドがC/MQLから見えるようになる

とマーシャリング。
しばらく使っていない。

 
Vladimir Suslov:


が効いた。
ILコードに正しい変更を加える必要があります。

VSのコンパイル後に変更を行うexeを自作しました。
そして、C#のメソッドがC/MQLから見えるようになる

久しぶりの使用

今、上の記事を更新しました。

これは私が使っているコードと同じものです - Robert Gieseckeのコード

しかし、そこで手動で何かを修正する必要はありません。主な問題は、複雑なデータ型を 扱うことです。私はつい最近、データ交換を行い、メソッド

  [DllExport("redismtset", CallingConvention = CallingConvention.StdCall)]
        public static void redismtset([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] byte[] value, int sz, [MarshalAs(UnmanagedType.LPWStr)]string key)
        {
            byte[] tmp = new byte[sz];
            Array.Copy(value, 0, tmp,0, sz);
            if (dbExcPing()) DB.Set(key, tmp);
        }
//----
 [DllExport("redismtget", CallingConvention = CallingConvention.StdCall)]
        public static int redismtget([MarshalAs(UnmanagedType.LPWStr)]string key)
        {
           if (dbExcPing()) db_buffer_byte = DB.Get(key); else db_buffer_byte = null;
            return db_buffer_byte?.Length?? - 1;
        }
StringBuilderで文字列の配列を処理しようとしたところ、動作が非常に不安定で、MQL4と.Netの両方で文字列バッファのメモリ割り当てを常に制御する必要があり、一般的に何かが動作しなくなったときに常に検索する必要があるため、あきらめた ))) 。
 
Алексей Барбашин:

その方法を使うと、DllExportを一度実装するだけで、すべてのメソッドがエクスポートされたものとして宣言 できるようになりました。このライブラリは、コードに必要な変更を自ら行っていました。しかし、MT5がシャープに対応するようになってから、「いじくり回す」ことをやめました。

質問は、MT4についてだったかな?

 
Алексей Барбашин:

それは大したことではありません。Dequeue()メソッドは、キューからレコードを取り出します。2つのレコードとそれぞれ異なるパラメータを取り出そうとしているのですね。まあ、まず、アクセスの瞬間にキューに2つのレコードがあることは誰も保証しないのだが)。

このように作り直した。

エムエルシー


チェックを入れたので、今は全く何も返しません。

 
Igor Makanu:

今、上の記事を更新しました。

私が使っているコードと同じものです - Robert Gieseckeのコード

しかし、手で修正することはできません。主な問題は、複雑なデータ型を 扱うことです。私はつい最近、データ交換を行い、メソッドをかき集めました。

これが動かないので(数年前)、自作しました。
現在はアップデートされて動作しているのかもしれません。
しかし、原理は全く同じです

 
Vladimir Suslov:

このリブがうまくいかず(数年前)、自作しました。
今更ながらアップデートしたら動くようになったかも。
しかし、原理は全く同じです

ロシア語版Winでは動作しません。

しかし、それは間違いなくあなたが英語で 仮想マシン+勝利7を インストールする場合は問題なく動作します- 私はインストールWinの言語中に選択し、英語にロシア語スイッチでWin7をインストールするためのさまざまな方法を試してみました。- どこかレジストリやフォルダ内のいずれかのロシア語のまま、このため、テンプレートロバートGieseckeは、警告とコンパイルされ、エクスポート.DLL動作しません

SZZY:ハードディスクに10GBの仮想マシンのイメージを保存し、問題なくテンプレートを使用できるようになりましたRobert Giesecke

 
なぜゼロが返ってくるの?そして、キューは空っぽ?