記事"インディケータ間のデータ交換:簡単です"についてのディスカッション - ページ 2

 
<br/ translate="no">。

...ただひとつの疑問は、ポインターをどうやって整数に変換するかということだ。そこでダイナミック・リンク・ライブラリが助けてくれるのが、C++のデータ型変換機能だ。C++のポインターは4バイトのデータ型なので、4バイトのint型を使うのが便利だ。

私が間違っていなければ、著者は暗黙的な 型変換について話している。これはとても有益な記事です。著者に感謝します。

また、SetPtrメソッドを作る必要がある場合、明示的な型変換なしではできないことも付け加えておきたいと思います。

次のようになります。

double* SetPtr(int a)
{
  double* a1 = reinterpret_cast <double* > (a);
  return(a1);
}

一般的に、ポインタが広く認識され使用されるようになれば、MQL5は多くの恩恵を受けるでしょう。

 

一般的に、ポインタが広く認識され使用されるようになれば、MQL5は大きな恩恵を受けるだろう。

私はこのリストに、例外処理、パラメーターを持つコンストラクター、多重継承を加えたいと思う。

しかしなぜか開発者たちは、私たちはこれらの機能をすべて利用できるほど賢くないし、自分たちを苦しめるだけだと考えている。

しかし、上記はすべて標準的なOOPツールであり、誰も損をしたことはない。

私には)単にこれらのメカニズムを確実に実装できないだけだという印象を受ける。

誰かが、ここではそれを持たないと決めたのは悲しいことだ。

 

MT4の新しいビルドでは、SetIndicatorValue()関数が機能せず、GetIndicatorValue()は機能することに気づきました。これは私だけなのでしょうか、それとも新しいビルド(ビルド225以降のどこかで変更があったと思います)でその関数を壊してしまった何かがあるのでしょうか?もしそうなら、この記事の方法論を新しいMT4ビルドで動作させる方法について何か提案はありますか?古いビルドがサポートされなくなったという事実は、この点で問題を引き起こしています。EA内でインジケータの計算を一度だけ行わせ、計算された値をインジケータバッファの ポインタにプッシュすることでチャートに表示させたいと考えているからです。(ところで、この記事を見つけ、そのテクニックを適用することができて本当に感謝しています。)

関連する質問として、2011/3/17のMT4のBuild 392のリリースノートに、"3.チャート上にインジケータを表示する際の不要な再計算を削除しました。" と書かれていることに気づきました。この改善により、カスタムインジケーターを本来の方法で使用しても、この記事で教えているポインターベースのテクニックを使用するよりも遅くなることはなくなり、この記事のテクニックの必要性は事実上なくなったのでしょうか?ありがとうございました。

 
brisully:

MT4の新しいビルドでは、SetIndicatorValue()関数が機能せず、GetIndicatorValue()は機能することに気づきました。これは私だけなのでしょうか、それとも新しいビルド(ビルド225以降のどこかで変更があったと思います)でその関数を壊してしまった何かがあるのでしょうか?もしそうなら、この記事の方法論を新しいMT4ビルドで動作させる方法について何か提案はありますか?古いビルドがサポートされなくなったという事実は、この点で問題を引き起こしています。EA内でインジケータの計算を一度だけ行わせ、計算された値をインジケータバッファの ポインタにプッシュすることでチャートに表示させたいと考えているからです。(ところで、この記事を見つけて、そのテクニックを適用することができて、本当に感謝しています。)

関連する質問として、2011/3/17のMT4のBuild 392のリリースノートに、"3.チャート上にインジケータを表示する際の不要な再計算を削除しました。" と書かれていることに気づきました。この改善により、カスタム・インディケータを本来の方法で使用しても、この記事で教えているポインタ・ベースのテクニックを使用するよりも遅くならないという意味で、この記事のテクニックの必要性は事実上なくなったのでしょうか?ありがとうございます。

記事に添付したインジケーターファイルはMT4の新しいビルドで動作します。誤報で申し訳ありません。
 
Zhunko:

なんて複雑なんだ!...

年前、イルヌールの助けを借りて、私はMQL4でメモリを扱うためのライブラリを書いた。メモリの確保、ポインタの移動、書き込み、読み出し、メモリ領域の名前を他のプログラムに転送することができる。

すべてはマッピングに基づいている。提案されているものよりずっとシンプルです。

どうすればこのライブラリを入手できますか?ありがたいです。私は2台のMT間でデータを転送する必要があります。
 
サンキュー
 

DLLにdoubleだけでなく、datetime、long、intを扱う関数を追加することは可能でしょうか?

価格配列のデータはコピーすることなくネストした構造体間で簡単に転送できることがわかりましたが、時間、スプレッド、ボリュームのデータはまだコピーしなければなりません。

私はGetPtrをdatetimeとlongで動作するように適応させようとしました(そしてintビットを移動させるという曲解もしました)。

誰かこの問題を解決した人はいますか?

 

静寂。

ああ...。C++を思い出して、自分でMSVCをインストールしなきゃ...。

 
Laryx:

静寂。

ああ...。C++を思い出して、自分でMSVCをインストールしなきゃ...。

そして今、誰もあなたに何も答えてくれない。

MT4のアップデートについて何か聞いた?

 

耳の端で、耳の端で...。:)

MT4のアップデートは私にとってはとても良いことです - 私は大規模なライブラリを持っていますが、それらはすべてMT5上にあります(OOPなしの生活は考えられません)。そして、DCは、悪い人たちですが、全員がMT5を持っているわけではありません。だから、このニュースは私にとってはとてもいいことだ。

しかし、通常のMT4++が登場するまでは、更新されたプラットフォーム用にコードを適合させる意味があるとは思えません。公式ベータ版のようなものが出たら(そう、標準ライブラリが出たら、それなしではExpert Advisorを書きたくない)、コードの変換を始めるつもりだ。

そして今、私は、ダブル配列だけでなく、他の配列のアドレスも取得したいのです。あ~あ...。型変換(timeとlongも8バイト)で問題を回避したかったのですが、まだうまくいきません・・・。