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

 
Alexey Navoykov:

新ビルド1200の発表について。

このようなソリューションは、datetimeの時間と共に長い time_mscが 構造体に追加されると、非常に地味に見えます。 問題は、なぜ時間が 必要なのか? 無意味なリソースの無駄遣いです。

また、uint フラグについても同様で、ucharで十分か、少なくともushort(将来のための大きな予備を持つもの)である。 そして、なぜuintが そこに必要なのかは、理解できないものである。悲しいのは、開発者が合理的なデータ保存を全く考えていないことです。 刻みの配列はそれだけで巨大なサイズです。 そして、ここでメモリが無造作に浪費されている...。

とにかく、時間といえば。MQLにミリ秒を含む通常の時間タイプを導入する時期が来たのかもしれません。今後90年間は4バイト(uint)で十分です(Duncan McLeodは私たちの中にいません)。

この解決策は、秒単位の時間やSymbolInfoTick() を使用する古いプログラムとの互換性を維持するものです。

私たちの経験では、「1〜2バイトで作ろう」という遊びは、将来的にとんでもない問題を引き起こすと信じています。10年先を見据えたソフトを書いてこそ、理解できるものです。

秒単位の4バイトのdatetimeは、90年後ではなく、2038年(あと22年)に終了します。

 

ここでいうTM=30Mとは、どういう意味でしょうか?

  • 取引端末:MetaTrader4.0
  • 取引商品:任意(主要FX通貨ペア、できれば最小スプレッド)
  • TM=30M です。
  • 取引レバレッジ:1:100 以上から。
  • 口座の種類:マイクロ口座、ミニ口座、スタンダード口座。
  • 最小初期ロット=0.01
  • 最低入金額:300米ドル/セントから(最低ロット0.01の場合)。
 
Renat Fatkhullin:

私たちの経験では、「1バイト、2バイトにしよう」という遊びは、将来とんでもない問題を引き起こすことになります。10年先のソフトを書くときに初めて気づくことです。

だから、タイトに作ればいいという問題ではない。 もちろん、ある程度のマージンは残しておくべきだが、合理的な 範囲で。 例えば、今回のケースでは、flags フィールドには他の6つのフィールドに関する情報のみが格納されている。ushort 型にすると、フィールドが10個余ります。 どこまで増やせるか?

ガラスをフルに保存するつもりなら、32ビットでは足りません。 一気に64ビットにしたらどうでしょう。 たとえば、ガラスはかなり違う構造が必要になりますが。

もちろん、2バイト増えたところであまり意味がないことは理解しています。 しかし、ここに2バイト、あそこに2バイト...ということが判明したのです。と加算されます。

4 datetime bytes in seconds は、90年後ではなく、2038年(さらに22年)後に終了します。

uintは 136年、つまり2106年まで保存できます。 もともとMQL5を開発するときにそのような間違いをしたようですね。
 

何十年という単位で考え、長期的なサポートが必要だと思えば、すべてが明らかになるでしょう。

4バイトのデータタイムでは、2038年に大量のソフトウェアがオーバーフローで大問題になり、古いコードを必死で書き直すことになるでしょう。また、マット演算や差分演算では、オーバーフローをさらに早期に発見することができるようになります。

私は25年間プログラミングをやってきたので、何を言っているのかわかります。私はずっとコストパフォーマンスの高いプログラムを書いてきました。私たちの端末を見ると、小さなサイズの単一exeファイルに多くの機能が含まれており、まさに傑作です。クリーンなコンピュータで裸のterminal.exeを一発実行し、何が起こるか見てみましょう。

しかし、今は状況が変わりました。ほとんどどこでも余裕を持って64ビットのコードを書くか、将来取り残されるか、どちらかです。クローズドボックスではなく、互換性が求められる開発用プラットフォームをリリースしている私たちにとって、これは特に重要なことです。

数年後には、また投資不足に陥って、自分たちを責めることになるでしょうね。そして、周囲には基本装備で数十ギガバイトのコンピュータが並んでいる。

 
Yousufkhodja Sultonov:

ここでいうTM=30Mとは、どういう意味でしょうか?

  • 取引端末:MetaTrader4.0
  • 取引商品:任意(主要FX通貨ペア、できれば最小スプレッド)。
  • TM=30M です。
  • レバレッジ:1:100 以上から。
  • 口座の種類:マイクロ口座、ミニ口座、標準口座。
  • 最小開始ロット=0.01
  • 最低入金額:300ドル/セントから(最低ロット0.01の場合)
"TM=30M" - タイムフレーム30分(チャート期間30分)。
 
Renat Fatkhullin:
4バイトのデータタイムでは、2038年にはほとんどのソフトウェアでオーバーフローが発生し、古いコードを必死で書き直すことになるでしょう。また、マット演算や差分演算では、オーバーフローをさらに早期に発見することができるようになります。

MQL4のコードのことですか? (datetimeはもともとintがベースでした)それから、もちろん互換性の問題に関連した別の話も出てきます。 しかし、私はもともと合理性の 話をしていたのです。 この場合、合理性は損なわれるわけですね。

しかし、いずれにせよ、ミリ秒を含む新しいタイプの時間が必要であり、それは1970年からではなく、もっと前、例えば1900年から始まるべきだということには同意していただけると思います。もはやFXだけではない、取引所の歴史は古い。

 
Alexey Navoykov:

...

しかし、いずれにせよ、ミリ秒を含む新しいタイプの時間が必要であること、そして、それは1970年ではなく、もっと前、例えば1900年から始まるべきであることに、皆さんは同意されると思います。今はFXだけでなく、取引所は非常に長い間存在しています。

ただ、ツァーリ・ゴロク時代にはコンピューターを使うことが流行らず、ティックの歴史が後世に残らなかったことが問題だが......。
 
Joo Zepper:
ただ、ツァーリ・ゴロク時代にはコンピューターを使うことが流行らず、ティックの歴史が後世に残らなかったことが問題だが......。
必ずしもダニが原因とは限りません。デイキャンドルなどは、保存されています。
 
Alexey Navoykov:
必ずしもティックにこだわる必要はない。 例えば、日足 ローソク足はそのままである。

お恥ずかしい話ですが、なぜ1900年...年分の日足ローソク足の価格が必要なのでしょうか?テクニカル分析をするため?アドバイザーの歴史を検証するため?

 
Renat Fatkhullin:

MetaTrader 5ターミナルのx64バージョンでは、実行速度が2倍から10倍に向上します。

その価値は十分にある仕上がりです。コンパイル速度については、まだまだ工夫していきますが。

最近、MQLのスピードはC++に近いと自慢していましたが、今度はC++を数倍も上回ることが判明したのですか(笑))

しかし、どのような場合でもコンパイル速度は低下しているのです。