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

 
Aleksei Beliakov:

1.そんなに仕事はないでしょう。 了解です、ご心配なく。

2.論理的な結論としては、(すべての作業とmql4の)結果をみんなのために ここに掲載することでしょう。そうすれば、フォーラム全体のレベルが上がり、仕事をする人が増えて、知らない人に 何をすべきかを指示する人が 減るかもしれませんね。

この問題はまだ解決していませんが、実際問題、どうすればいいのでしょう。

 
Aleksei Beliakov:

1.そんなに仕事はないでしょう。 了解です、ご心配なく。

2.そうすれば フォーラムのユーザーのレベルも上がるし、仕事を持つ人が増えて、知らない人に指図 する人が減るかもしれません。

私はあなたをサポートし、同じ息で問題を追った。文盲の自己学習者として私のためにそれは特に説明と、ステップごとに各アクションを見て面白かった。そしてここで矛盾が混乱を開始した後、最後にすべてが修正されて行われましたが、詳細な手順なしでそのように。 しかし、せっかくスタートしたのだから、同じように完成させてはどうだろう。必要なのはコードそのものではなく、それを論理的に終わらせるための有能な説明なのである。

 

こんにちは

このプロジェクトはフリーで利用できるのか、それとも有償なのか?自分で実装するためのマニュアルはどこかにあるのでしょうか?

ウェブソケットを通じて他のサプライヤーからリアルタイムで見積もりをインポート することに興味があります。


全部絵でやるとなると、見積書のインポート、アウトプットの流れがよくわからないんです。この質問は取り上げられていないようです。

 

このトピックを立ち上げたかったんです。 C#について質問したことがあるんですが、見つからなかったんです。 誰か助けてくれる人が現れるかもしれません;)


結論から言うと、MQL5ライブラリをC#でネイティブにラップしてMQL4から呼び出すと、すべてうまくいきました。

しかし、それは一度だけ動作します - EAをアンロードする前に、MT4で2回目の実行はエラーが発生します。

Unhandled exception 0xE0434352

フォーラムを検索するのはここだけhttps://www.mql5.com/ru/forum/35807

チャートを閉じてEAを開いても解決せず、MT4をリロードすると解決する、という混乱した状況です。

.dllのスレッドをすべて閉じましたが、タスクマネージャでアンロードすると、(dllが呼び出されたときに表示される)プロセスが閉じられます。


どこを探せばいいのか全くわからない、MQL5では普通に動くのですが。

 
Igor Makanu:

このトピックを立ち上げたかったんです。 C#について質問したことがあるんですが、見つからなかったんです。 誰か助けてくれる人が現れるかもしれません;)


結論から言うと、MQL5ライブラリをC#でネイティブにラップしてMQL4から呼び出すと、すべてうまくいきました。

しかし、それは一度だけ動作します - EAをアンロードする前に、MT4で2回目の実行はエラーが発生します。

フォーラムを検索するのはここだけhttps://www.mql5.com/ru/forum/35807

チャートを閉じてEAを開いても解決せず、MT4をリロードすると解決する、という混乱した状況です。

.dllのスレッドをすべて閉じましたが、タスクマネージャでアンロードすると、(dllが呼び出されたときに表示される)プロセスが閉じられます。


どこを探せばいいのか全くわからない、MQL5では普通に動くのですが。


例外が発生しているようなので、try-catchを追加してください。
 
Fedor Arkhipov:


例外が発生しているようなので、try-catchを追加してください。

問題はMQL4で、私のコードは99%同じです。

ネイティブコールに使っているRobert Gieseckeのテンプレートが処理できないのか、端末がリソースを開放したままになっているのかもしれません。

何から手をつけていいかわからない(

 
Igor Makanu:

問題はMQL4で、私のコードは99%同じです。

ネイティブコールに使っているRobert Gieseckeのテンプレートが処理できないのか、端末がリソースを開放したままになっているのかもしれません。

どこから探せばいいのかわからない((

すべてのDLLがリエントラントであるわけではありません。この言葉はあまり適切ではありませんが、一言で言えば、「ロードアンロードの後、次のロードで未定義の動作が発生する」ということです。

プロセスメモリや特定のスレッドにあるものを変更する。DLLは一般的に適応性が高く、ロードして実行すれば、前後にスクロールする必要はありません :-)

もちろん回避策はあります。DLLのオフロードを防いで、一度だけ必要なら、メモリに残しておくこともできます。

を、ソースであるレシピの1つにリンクしています。

/* ----------------------------------------------------- */
/* предотвратить выгрузку DLL из памяти !! (без этого глючит)
/* copy-paste из https://blogs.msmvps.com/vandooren/2006/10/09/preventing-a-dll-from-being-unloaded-by-the-app-that-uses-it/
/* ----------------------------------------------------- */
HMODULE g_Self;
int LockLibraryIntoProcessMem(

HMODULE DllHandle,

HMODULE *LocalDllHandle)

{

  if(NULL == LocalDllHandle)

    return ERROR_INVALID_PARAMETER;

 

  *LocalDllHandle = NULL;

  TCHAR moduleName[1024];

  if(0 == GetModuleFileName(

DllHandle,

moduleName,

sizeof(moduleName)/ sizeof(TCHAR)))

    return GetLastError();

  *LocalDllHandle = LoadLibrary(moduleName);

  if(NULL == *LocalDllHandle)

    return GetLastError();

  return NO_ERROR;

}
BOOL APIENTRY DllMain( HMODULE hModule,
                      DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                               )
{

  switch(ul_reason_for_call)

  {

  case DLL_PROCESS_ATTACH:
        //      WriteLog("Attach");
    LockLibraryIntoProcessMem(hModule, &g_Self);

    break;

  case DLL_PROCESS_DETACH:
        //      WriteLog("Detach");

    break;

  }

    return TRUE;

}

殺された "フォーマットに関する何か :-)

 
Maxim Kuznetsov:

をアップロードすると、前後にスクロールする必要はありません :-)

特に選択肢はありません。完璧を求めるのは止めますし、5でも4でもバグなく全て動くようにしたい、ゼロからコードを書き直したくないという強い願望があります ))))

情報ありがとうございます!参考になります。

 

ずいぶん昔のことのような気がしますが...。どうやら...

ダイナミックローディングライブラリプログラムのアンロードには、特別なスキルが必要です。MQL5とMQl4では、Metaquotesだけが、彼らの環境におけるジョブ管理言語の秘密にアクセスできるため、このスキルを持っています。そして、日本臨床では土下座して作っていたでしょう。