10分でできるMQL5用DLLの書き方、データのやりとり」についてのディスカッション。 - ページ 4

 
"2010.01.24 22:41:09 MQL5DLL_Test (GBPJPY,H4) Access violation write to 0x00000000 in 'D:\SoftForexMetaTrader 5' ♪MQL5Libraries ♪MQL5DLLSamples.dll" って何?
MT5ビルド240。dllの呼び出しは許可されています。
 
joo:
"2010.01.24 22:41:09 MQL5DLL_Test (GBPJPY,H4) Access violation write to 0x00000000 in 'D:\SoftForexMetaTrader 5' ♪MQL5Libraries ♪MQL5DLLSamples.dll" って何?
MT5ビルド240。dllの呼び出しが有効です。

記事 中のデモ例

4.DLL関数での例外処理

端末自体のクラッシュを避けるため、各DLL関数コールは自動的にUnhandled Exceptionラッパーで保護されています。このメカニズムにより、標準的なエラー(アクセスできないメモリの呼び出し、ゼロによる除算など)のほとんどを防ぐことができます。

この機構の操作性を確認するために、次のようなコードを作成してみましょう。

_DLLAPI void __stdcall fnCrashTest(int *arr)
  {
//--- ожидаем получение нулевой ссылки, чтобы вызвать исключение
   *arr=0;
  }

を作成し、ターミナルから呼び出す。

#import "MQL5DLLSamples.dll"
void fnCrashTest(int arr);
#import

//--- вызовем креш (среда исполнения перехватит исключение и не даст упасть терминалу)
   fnCrashTest(NULL);
   Print("Этого текста не увидите!");
//---

その結果、0番地に書き込もうとすると、例外が発生します。端末はそれを傍受し、ログで報告し、作業を継続します。

MQL5DLL Test (GBPUSD,M1) 20:31:12 Access violation write to 0x00000000


 
Renat:
記事より デモ例。

ありがとうございます。だから、記事を読むときはあまり気を使わなかった。:)

PS 「聞け、同志よ!」みたいなことを言えたかもしれない。もう一度、記事を読み直してこい」と言われれば、その通りです。リスペクト、リスペクトと言われるように。

 
レナート

pisaraさんへ。

理論 家と実践 家の議論です。
個人的なことは抜きにして、要点を。優れた理論家は実務経験に頼り、優れた実務家は7回を計る。

もちろん、「世界平和」のために戦うことを誰も禁じてはいませんが、「なぜ改善しないのか」以上の要素を考慮に入れてください。

そう書いたのは、ルーチンワークをしたくないから、使わないということです。すべての指標、すべての市場環境、さまざまな時代の歴史など、すべてを銀の皿に載せて渡さなければならないでしょう。そして、すべての指標を頭の中で操作するわけではないので、チャート作成をする必要があります。

だから、実際には本格的な端末が必要なのです。MetaTrader 5 + MQL5 + DLLというフレームワークと呼ぶか、ソースコードやコンポーネントでターミナルを提供してください(これがあなたの要求ですから)と言うだけでよいのです。

しかし、プログラマーの生活を楽にし、取引システムの品質とその統合能力を向上させることは、まだ誰も損をしていないことに同意してもらわなければなりません。Borland DelphiやMS .netは、フレームワーク、コンポーネントベース、クラス図、そしてソースコードの大部分(Delphi)までもがプラットフォームユーザー向けに完全にオープンになっているのです。

プログラマーは、保護されていない母国語で取引システムのスクリプトを書けることを「強力」だと勘違いし、自分の作ったものを誰も使おうとしないことに驚いているのです。だから、生まれる前に死んでしまうんです。ユーザーのコミュニティを作り、発展させてきた人たちは、もっと深く考え、(以前からノックを受けているので)そのような間違いはしません。
現実的に考えましょう。ソフトウェアをリリースして販売し、半年後、1年後に有償アップデートをリリースしたい場合、コードプロテクトは非常に重要です。もしあなたが、私が理解しているように、長期的にここにいて、ビルドとサポートの連鎖で継続的にプラットフォームを改善するならば、どの競合他社もあなたを手に入れることはできないでしょう。しかし、ユーザーはより良いコードを書くことができるようになるでしょう。そして、コードだけでなく、TC構造も重要ではありません!私もアンチウイルスとのアナロジーをもたらすことができます - AVクライアントをハッキングすると、まだウイルスデータベースの更新(ここ - クォータ)へのアクセスを与えることはありません。

制御された(デフォルトでは無効)DLL呼び出しは許容範囲ですが、誰かが作ったDLLを取引端末にダウンロードするのは、パッチの当たっていないInternet Explorer 6より悪い穴です。
つまり、この穴はユーザーのパーミッションに過ぎないのですたとえX社から署名されたものであっても、有害なDLLが100%存在しないことを貧乏人がどうやって保証するのでしょうか?結局、疑心暗鬼のまま禁止してしまうと、自分にとって役に立つかどうかわからなくなってしまうのだ。そこで、ここでは心理学を紹介します。


参考までに、自動化された取引端末に関するGoogle Trendsの 統計です。

座標の目盛りは対数なんでしょうかね?
ところで、ロシアのデータは興味深いもので、赤のMetastockがリードしていることがわかります。

Google Тренды - Сервис: Поиск по Интернету. Запросы не указаны. - По всему миру, 2004 – настоящее время
Google Тренды - Сервис: Поиск по Интернету. Запросы не указаны. - По всему миру, 2004 – настоящее время
  • www.google.ru
Изучайте популярные поисковые запросы при помощи службы "Google Тренды".
 

通常の「返信」機能を使ってください。読んでいてとても不快になる。

引用ブロックを分割するには、分割したい場所にカーソルを置き、「プレーンテキスト」スタイルを選択するか、Ctrl+1キーを押してください。


一般的に、このようなアドバイスはやめることをお勧めします。根本的に致命的であり、間違った前提に基づき、応用言語には適していないのです。

冗談の ような話ですが、昔からあるジョークがあります。

Сидят двое нищих. Перед каждым из них шляпа и надпись. У одного: «Подайте бедному еврею», у второго: «Подайте бедному арабу». Шляпа первого пуста, а в шляпе второго куча денег.

通行人がユダヤ人に近づき、ルーブルを投げ入れて言う。

- いいか、看板を変えろ、でないと腹が減ったままだぞ。

通行人が立ち去ると、ユダヤ人は隣人に向かい、こう言った。

- わかったか、イジヤ?この人が商業について教えてくれるんだ!

 
Renat:

通常の「返信」機能を使ってください。読んでいてとても不快な気分になります。

引用ブロックを解除するには、適切な位置にカーソルを置き、「プレーンテキスト」スタイルを選択するか、Ctrl+1キーを押します。


一般的に、このようなアドバイスは終了することをお勧めします。根本的に殺人的であり、間違った前提に基づき、応用言語には適していません。

冗談の ような話ですが、昔からあるジョークがあります。


よし、前提がキラーである理由と、.netフレームワークが自分にとって窮屈である本当の 理由を述べないのであれば、議論は終わりです。ジョークについては、自分で測ってください、修道院はあなたのものです。

5にアップグレードした後も振り返らないよう、皆さんの幸運を祈るばかりです。

 
Renatさん、記事にしていただき、ありがとうございますとても興味深く、勉強になります。残念ながら、MQL5DLL Test.mq5スクリプトを使用することはできていません。記事に書かれていることをすべて実行しました。しかし、スクリプトを実行すると、MT5がそのまま落ちてしまいました。何が問題なのかわからない。軸の問題でしょうか?私はMS Vista x64を使用しています。修正方法をアドバイスしてください :-)
 
denkir:
Renatさん、記事にしていただき、ありがとうございますとても興味深く、勉強になります。残念ながら、MQL5DLL Test.mq5スクリプトを使用することはできていません。記事に書かれていることをすべて実行しました。しかし、スクリプトを実行すると、MT5がそのまま落ちてしまいました。何が問題なのかわからない。軸の問題でしょうか?私はMS Vista x64を使用しています。修正方法をアドバイスしてください :-)

もう一度、記事全体を読んでみてください。

DLL内部でのエラー発生(ゼロ番地への書き込み)については、クラッシュすることなくターミナルでさらにエラーキャッチをする場所があるのみです。fnCrashTestメソッドの呼び出しをコメントアウトする必要があります。

今日、私はVista x64でこのコードをチェックします - それは私たちのエラーかもしれません。

 
Renat писал(а) :

もう一度、記事全体を読んでみてください。

DLL内部でのエラー発生(ゼロ番地への書き込み)と、さらにこのエラーをターミナルでキャッチしてクラッシュさせないというところだけです。fnCrashTestメソッドの呼び出しをコメントアウトする必要があります。

今日、私はVista x64でこのコードをチェックします - それは私たちのエラーかもしれません。

はい、すべて注意深く、何度も読み返しました :-)))

MQL5DLL Test.mq5スクリプトのfnCrashTest(int arr)関数をコメントアウト したことをお伝えするのを忘れていました。やはりクラッシュしてしまう。:-(

このような感じです。それとも、DLLコード内の関数fnCrashTest(int arr)をコメントアウトしなければならないのでしょうか?

=========================
#import "MQL5DLLSamples.dll"
int  fnCalculateSpeed(int &res1,double &res2);
void fnFillArray(int &arr[],int arr_size);
void fnReplaceString(string text,string from,string to);
//void fnCrashTest(int arr);
#import
=========================

//fnCrashTest(NULL);
//Print("Этого текста не увидите!");

 

1) 端末のバージョンは32bitと64bitのどちらでしょうか?

2) dllのバージョンは32bitと64bitのどちらでしょうか?