エラー、バグ、質問 - ページ 2445

 
fxsaber:

いいえ、optでハッシュを取得するのはex5です。このため、再コンパイルするとテスターのキャッシュがリセットされる。

それなら、開発者は助けてくれないので、自分でコード解析器を 書きましょう。

 
fxsaber:

いいえ、optでハッシュを取得するのはex5です。リコンパイルするとテスターキャッシュがリセットされるのは、このためです。

そうではありません。

Expert Advisor のすべてのリコンパイルがテスターのキャッシュをリセットするわけではありません。

エキスパートアドバイザーにライブラリ、カスタムインジケータ、DLLなどの依存コンポーネントがある場合、それらのコンポーネントのハッシュはエキスパートアドバイザーのハッシュと混在します。

EAのハッシュをどのように計算し、EAのどこに保存しているかは、技術的な秘密の一つである。

だから、すぐに「ダメだ」と言ったんです。

 
fxsaber:

確かに

  1. mqlファイルをuchar配列に格納しました。
  2. コメント削除 //...и /* ...*/
  3. すべてのスペース、タブ、改行、そしてすべてのブラケットと引用符を削除します。
  4. ハッシュを読み取る

第一近似値で問題ありません。

もちろん、変数(関数)名を変更したり、未使用の変数を新たに追加したり、順番を変えたりすれば、ロジックはともかく、ハッシュは変化します。これらをコントロールするのは、すでにメガ・コンプレックスです。自分でリンカーを書くようなものです。

 
Slava:

EAのハッシュをどう考えるか、EAのどこに格納するかは、技術的な秘密の一つである。

だから、すぐに「ダメだ」と言ったんです。

要は、MD5ハッシュを出せという要求がなかったということです。ネイティブコードの任意のハッシュが必要です。例えば、3バイト目ごとの合計値。

この合計が異なる場合、大きな確率でExpert Advisor(ロジック-ネイティブコード)が変更されたことになります。


すなわち、極めてシンプルに!残念ながら、今のところそのような仕組みはありません。

 
Nikolai Semko:

これらをコントロールするのは、すでにメガ・コンプレックスです。自分でリンカーを書くようなものです。

だから、簡単な解決策を話しているんです。

 

この件に関して、開発者の方々は何かおっしゃることはありますか?

https://smart-lab.ru/blog/535490.php

Черный вторник для одного трейдера в Открытии
Черный вторник для одного трейдера в Открытии
  • smart-lab.ru
Привет коллегам по цеху. Поднимите пожалуйста пост в топ, если не затруднит. Случилась одна неожиданная история, как говорится прилетело откуда не ждал. Сегодня ночью на NLMK-9.19 некто, пожелавший остаться неизвестным (на данный момент), слил или перелил 420000 рублей по четырем маркет сделкам 100,35,20,10 контрактов на счете в Открытии...
 
fxsaber:

だから、簡単な解決策を話しているんです。

それならMQに有能な理由付けが必要ですね。
何のために?どのような場合に、どのようにmqlの能力を高めることができるのか?しかも、個人的な気まぐれを満たすためだけでなく。
なぜプログラムが変更されたことを知る必要があるのか、今のところ個人的にはよくわかりません。どのような業務に活用できるのか?もし何かに必要であれば、「余計なもの」を削除した上で、mql-codeからハッシュを取得すれば十分である。しかも、本当に20行以上のコードは必要ないのです。

さらに言えば、仮にMQがそのようなハッシュを公開してくれたとしても、彼はそのようなハッシュではロジックが変更されたことを保証することはできない。例えば、何かのシーケンスを変更するとき。

 

誤ってアップデートしてしまった→また使えなくなった→コンパイルエラー。

#define  MACRO1
#define  MACRO2(x, y)    y
#define  MACRO3          MACRO2(&, MACRO1)
class A {};
void f( A* ) { Print( 1 ); }
void f( A& ) { Print( 2 ); }
void OnStart()
{
        A a;
        f( MACRO3 a ); //Error: '&' - operand expected
}

以前は問題なかった(ビルド1961)

 

こちらも、現在(ビルド2025)、エラーが発生しています。

#define  MACRO1( x )
#define  MACRO2          MACRO1( y ) void
#import "any.dll"
        MACRO2 f(); //Error: '(' - expressions are not allowed on a global scope
#import

そして以前(ビルド1961)は問題なかったのですが

 

この問題を解決するのを助けてください。 今ある文字ではなく、普通の文字を送信させるにはどうしたらいいのでしょうか?