MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1134

 
皆さん、ペアでよく助けてください。一般リストにMTがない場合、どのように追加するのですか?
 
Valeriy Yastremskiy:

ファイル共有読み込み

128

複数のプログラムによる共有の読み取りアクセス。このフラグは、ファイルを開くとき(FileOpen())に使用されるが、ファイルを開くときに FILE_WRITE および/または FILE_READ を指定する必要性に取って代わるものではありません。

それはない。また、一般的には、カチカチといちいちファイルを開いたり閉じたりしない方がよいでしょう

共有リードではなく、共有リードを許可している
ありがとうございます。効いてますね〜。いちいちファイルを閉じるのはコンピュターがかわいそうなので、OnDeinitにファイルを閉じる処理を入れています。
 
HeAic:
インジケーターのSleep(500)関数を 置き換えるにはどうしたらいいですか?

もし本当に必要なら、プロセッサのティックタイムをミリ秒でカウントする独自のポーズを作ってください。一時停止はしますが、スレッド全体が待機します。

 
  int fileHandle=FileOpen("logg.txt",FILE_READ|FILE_WRITE|FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_TXT|FILE_ANSI);   
  datetime time=TimeLocal();
int OnInit()
  {
  return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
  FileClose(fileHandle);
  }
void OnTick()
  {
  FileWrite(fileHandle,"Время=",TimeLocal());
  }
FileWrite」で使用しないのに、なぜ「time」変数を宣言するのか?申告しない場合
int fileHandle=FileOpen("logg.txt",FILE_READ|FILE_WRITE|FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_TXT|FILE_ANSI);   
datetime TimeLocal();
を使うと、コンパイラは悪態をつきますが、何の意味があるのでしょう?
 
ascerdfg:
FileWrite "で使用しないのに、なぜ変数 "time "を宣言したのですか?もし宣言しなければ、コンパイラは悪態をつくだろうが、何の意味があるのだろう?
datetime TimeLocal();

THIS WHAT???????

その行を完全に削除して見てはいかがでしょうか?

 
Valeriy Yastremskiy:

THIS WHAT???????

その行を完全に削除して見てはいかがでしょうか?

ヘルプにそう書いてあります。https://www.mql5.com/ru/docs/dateandtime/timelocal

パラメータなしの呼び出し

datetimeTimeLocal()。

Документация по MQL5: Дата и время / TimeLocal
Документация по MQL5: Дата и время / TimeLocal
  • www.mql5.com
Дата и время / TimeLocal - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
ascerdfg:

ヘルプファイルにはこのように書かれています。https://www.mql5.com/ru/docs/dateandtime/timelocal

パラメータなしで呼び出される

datetimeTimeLocal()。

ファイルオープン

この関数は、指定された名前と指定されたフラグでファイルを開く。

intFileOpen()
文字列file_name,//ファイル名
intopen_flags,// フラグの 組み合わせ
shortdelimiter='\t',// デリミタ
uintcodepage=CP_ACP//codepage
);

そして、fileopenはこのように書かれています。これはプログラムでの書き方の例ではなく、戻り値の型を示すものです。

 qqq.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                                  https:// |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
 int fileHandle=FileOpen("logg.txt",FILE_READ|FILE_WRITE|FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_TXT|FILE_ANSI);   
//  datetime time=TimeLocal();
int OnInit()
  {
  return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
  FileClose(fileHandle);
  }
void OnTick()
  {
  FileWrite(fileHandle,"Время=",TimeLocal());
  }
'qqq.mq4'       qqq.mq4 1       1
0 errors, 0 warnings, 202 msec elapsed          1       1
oninitでtime変数にローカルコンピュータの時刻を代入し、これをEAの開始時刻とするのは理にかなっています))
 
ありがとうございました。
 
double a=20.43;
double b=20.56;
int OnInit()
  {
  return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
  }
void OnTick()
  {
  Print(a-b);
  }
結果は、-0.12999999999と表示されます。なぜ?
 
ascerdfg:
結果は、-0.1299999999と表示されます。なぜ?

コンピュータのメモリに実数を格納することの特徴。

DoubleToString()を使って目的の精度で出力する。

一般的には、基本を学んでからプログラムを書いてみるのがよいでしょう。

Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
  • www.mql5.com
Вещественные типы (или типы с плавающей точкой) представляют значения, имеющие дробную часть. В языке MQL5 есть два типа для чисел с плавающей точкой. Способ представления вещественных чисел в машинной памяти определен стандартом IEEE 754 и не зависит от платформ, операционных систем и языков программирования. Константы с плавающей точкой...