"ダミー "からの質問 - ページ 69

 
rlx:

すべてエラーなく正しく変換されます

MQL5 Reference / Language Basics / Data Types / Type conversion」において、2つのことが述べられています。

1) long=>double 変換は、精度を損なう可能性があります。

2) long型の代わりにdatetime型が使用可能(それぞれ8バイトを要する)。

理想を言えば、datetime =>double の変換も精度が落ちる可能性がある、という結論に達しました。でも、例を挙げることはできません。

rlx です。

datetimeをindicateに格納するのはいかがなものか......あるいはdouble型の バッファ

ドットがたくさん追加されたり、何らかのリファレンスが表示されたりします。

インジケーターバッファー」(スペース2つ)というように、2つの単語の間に余分なスペースを入れるとわかりやすいでしょう。

 
Yedelkin:

MQL5 Reference Guide / Language Basics / Data Types / Type conversion」において、2つのことが述べられています。

1) long=>double 変換は、精度を損なう可能性があります。

2) long 型の代わりに datetime 型(8バイト)を使用できるようにした。

理想を言えば、datetime =>double の変換も精度が落ちる可能性がある、という結論に達しました。でも、例を挙げることはできません。

2つの単語の間に余分なスペースを入れるのは簡単です。"indicator buffers"(スペース2つ)です。

簡単なコンバージョンテストを書けば、自分の目で確認することができます。そして、他の人には後で教えてあげてください。

 
Vladix:

簡単な変換テストを書けば、自分の目で確認することができます。そして、後でみんなに教えてあげればいいんです。

本質的な答えがあるのか?

簡単な変換テスト」は、すでにrlxさんが 行っています。参考資料による疑義は上記の通りです。datetime =>double の変換が正しくない例があれば、質問してください。

 
Yedelkin:

実質的な答えはあるのでしょうか?

簡単な変換テスト」は、すでにrlxさんが 行っています。参考資料による疑義は上記の通りです。datetime =>double の変換が正しくない例があれば、教えてください。

void OnStart()
  {   
   double vDbl = 1.7976931348623158 e+308;
   datetime vTime = (datetime)vDbl;
   
   Print((double)vTime);  
  }

2011.09.25 16:24:38 test (EURUSD,H1) -9.223372036854776e+018

これは問題が発生する可能性のある例ですが、あなたのケースではないことは確かです。

 
Vladix:

2011.09.25 16:24:38 test (EURUSD,H1) -9.223372036854776e+018

これは問題が発生する可能性のある例ですが、あなたのケースではないことは確かです。

おめでとうございます。ライブ・アンド・ラーニング!
 
Vladix:

2011.09.25 16:24:38 test (EURUSD,H1) -9.223372036854776e+018

これは問題がある場合の例ですが、あなたのケースではないことは確かです。

あまり正しい例ではない、20分間チンカスという言葉通り(自分のことではなく、使う人のことです)

現在のdatetimeの値は、1316816136それらの10桁、それは40年であり、仮数倍は16桁です。

したがって、Mantis doubleのオーバーフローとそれに続くdatetimeからdoubleへの誤った変換は、6*40=240年後に発生することになります。

使う時間はあると思います。

 
Yedelkin:
スパ!スパ生きていると、長い時間学ぶことができます

今、あなたのために一例をまとめてみました。出力は以下の通りです。

datetime型は3000年12月31日23時59分59秒まで 定義されており、32535215999と なります。

double 型は1.7976931348623158e+308 まで定義されています。

datetimeの最大値をdoubleに変換する場合、有効桁数にまだ許容誤差があることが判明した。

したがって、結論としては、すべてのケースで正しく動作することになります。

ウラン です。

これは、20分間、ガラスのチンコを持った馬鹿に言うのだから、あまり正しい例ではない。

例えが良くないですね。

型を与える ときに値の境界値を確認する必要があるという例です、あくまで余談ですが。しかし、繰り返しになりますが、これは事実ではありません。

 

前の計算が正しくなかった、より正確にはここ:15桁を使用、16桁目が存在する場合、変換エラーが発生するため

   long i,l;double d;
   for(i=0;i<999999999999999;i+=365*86400){d=(double)i;l=(long)d;if(i!=l)break;}
   Print("до ",(1970+i/(365*86400))," года datetime в double преобразуется верно");

31711762年までのdatetimeがdoubleに正しく変換されます。

だから、3100万年目までぐっすり眠れるのです。

 

ex5ライブラリからインポートした関数を呼び出す

お願いします、説明してください。読む https://www.mql5.com/ru/docs/runtime/imports

システムライブラリ(DLL)は、オペレーティングシステムの規則に従ってロードされます。ライブラリが既にロードされている場合(例えば、別のExpert Advisorや、並行して実行されている別のクライアント端末からも)、呼び出しは既にロードされているライブラリに送られます。

ex5ライブラリはどのようにロードされますか?ライブラリが既にロードされている場合(例えば、別のExpert Advisorや、並行して実行されている別のクライアント端末からもロードされている場合)

テストのために、私はライブラリ

lib.mq5。

#property library
int      i=0;

int Get(void) export {return(i++);}

lib.mq5 を lib.ex5 にコンパイルした。

作成されたExpert Advisor

エキスパート.mq5

#import "lib.ex5"
  int Get(void);
#import
void OnTick()
  {
   Print(Get());
  }

コンパイルした。

EURUSDにExpert Advisorを設置しました。

印刷されます。

0

1

2

3

4

5

GBPUSDにExpert Advisor(オプション)を付ける

印刷物

6 --- EURUSD Expert Advisorより

0 --- GBPUSD Expert Advisorより。

7 --- EURUSD Expert Advisorより

1 --- GBPUSD アドバイザーより。

8 --- EURUSD アドバイザーより

2 --- GBPUSD アドバイザーより。

GBPUSD Expert Advisor 用に lib.ex5 ライブラリをもう一枚ダウンロードした場合など。

印刷する 方法をご存知の方はいらっしゃいますか?

6 --- EURUSD Expert Advisorより

7 --- GBPUSD Expert Advisorより。

8 --- EURUSD Expert Advisorより。

9 --- GBPUSD アドバイザーより。

10 --- EURUSD アドバイザー

11 --- GBPUSD アドバイザーより。

MT5の機能のみを使用

PS// あるいは、特別な方法で図書館に接続する必要があるのかもしれませんね。

///// I.e. このex5ライブラリは一度だけ読み込ませる必要があります。

Документация по MQL5: Программы MQL5 / Вызов импортируемых функций
Документация по MQL5: Программы MQL5 / Вызов импортируемых функций
  • www.mql5.com
Программы MQL5 / Вызов импортируемых функций - Документация по MQL5
 

こんにちは。教えてください。なぜ注文や取引にはチケットがあるのに、ポジションにはないのですか?

また、チケットとIDの違いは何ですか?