FAQ(よくある質問)を埋めるためのサブワークショップ。同志を助けよう! - ページ 5

 

約束した、一番簡単なものから始めます)

Question: MQLは 算術演算を誤って 行うのでしょうか?ある数を別の数で割ると0になるのはなぜか?

回答

ほとんどの場合、次のような式を書いていることでしょう。

c = a/b;  // (1)

変数 a と b を整数と宣言している。

int a,b;

その場合、MQLコンパイラは「スラッシュ」記号を「整数の除算」操作として解釈します。したがって、(1)が現れる前に、aと bに 任意の値、たとえ整数でない値を代入しても、変数cにはbは 整数倍の数aに 収まる」という答えが入ることになる。つまり、(1)の計算前にaが bより 小さければ、変数cの 型(この例ではdoubleでも よい)に関係なく、結果は0になるのです。

Expert Advisors のログに「Divide by zero」というメッセージが表示される、ターミナルウィンドウに 1 つ以上のインジケータラインが表示されないなど、クライアントターミナルでのプログラムの動作が「正しくない」ことが原因であることがよくあります。

問題を解決するための

変数宣言のデータ型を、使用する演算に対応したものに修正する。

double a,b;
 
質問: なぜ3を2で割ると1になり、1.5にはならないのですか?

Alert(3/2);

答え: この式に含まれる 3 と 2 は整数である。整数は余りがないと割り切れない。1.5という結果を得るためには、除数が浮動小数点数であることを指定する必要があります。

Alert(3.0/2);

* * *

質問: なぜ式が正しく計算されないのですか?

  double price=1.0; // Цена
  double point=0.0001; // Величина пункта
  double level=272.0; // Уровень в пунктах от цены
  double levelprice; // Значение цены уровня
   
  levelprice=price+point*level; // должно быть 1.0272
   
  if(levelprice==1.0272){
  Alert("Правильно");
  }
  else{
  Alert("Неправильно");
  }

A: 浮動小数点型変数には、小数点以下の桁数に制限があります。このため、計算の過程で数値が若干歪むことがあります。式を計算した後、浮動小数点数を比較する前に、必要な精度に正規化する必要があります。

  levelprice=NormalizeDouble(levelprice,4);

  if(levelprice==1.0272){
  Alert("Правильно");
  }
  else{
  Alert("Неправильно");
  }

* * *

Question: Expert Advisorでカスタムインディケータの値を取得するにはどうしたらいいですか?

回答: この目的のために、iCustom() 関数があります。

* * *

質問: MQL4は何から勉強すればいいですか?

答え: MetaEditorには非常に詳しいヘルプガイドが組み込まれています(MetaEditorを開く - メインメニュー - 表示 - ナビゲータ - 辞書)。
ターミナルには、MACDサンプルと移動平均の2つのExpert Advisorが付属しており、そのコードの分析から始めることができます。
さらに、mql4.comには、チュートリアル、多数の記事、あらゆる種類のコードが あります。
 
Q: 間違いなく0ではないのに、なぜ値が0になるのですか?

  double point=0.00001; // Величина пункта
  Print(point);

A: Print() とAlert()は小数点以下4桁までしか出力されません。それ以上必要な場合は、DoubleToStr()でdoubleをstringに変換してください。
Print(DoubleToStr(point,5));
 

Q: EAで大量のメッセージをPrint()で 出力していますが、半分以上のメッセージがテスターのどこかで欠落しています。

A : テスト中、出力頻度が高い場合、一部のメッセージが「ログ」タブに出力されませんが、テスト後にテスターのログファイルですべてのメッセージを確認することができます。ファイルはtester/logsフォルダにあります。

 
皆さん、ありがとうございました!また書いてください。
夕方、現地に着いたらFAQだけまとめる予定です。
 

モデレーター、および最低限の手助けをしてくださる方への提案です。

情報の構造化された提示、処理、検索を行うには、フォーラムだけでは不十分であることはご承知の通りです。私は、唯一の方法は、最も完全なCHMマニュアルを 作成し それを使ってフォーラムに全セクションを 作成することだと思います。

まず始めに、ヘルプの仕組みを作りました。
大きく3つのセクションに分かれて います。

1) HOW. 想定される質問に対する積極的な回答について説明します。また、関数(Kim's function analogues)の大規模なシステム化されたデータベースがあります。そして最も重要なのは、完成したプリミティブTORの例と、コードの詳細な説明とコメントです。知識や分析の体系化を進める必要があるため、非常に複雑なセクションである。最後の場所に記入されます。

2) WHY. このセクションでは、初心者のよくある質問について説明します(その例は、このスレッドでalsuと integerが うまく説明してくれました)。

3) WHERE: このセクションは、主にどこを見ればいいのか、どこで何かを見つけることができるのかへのリンクです。説明はしませんので、ご自分の目で確かめてください。
準備ができたchm-structureのアーカイブを添付します(ダウンロードは記事の一番下にあります)。


1.マニュアル構成


2.デモンストレーション - 「Where: Useful Links -> MQL4 Tutorial」にアクセスしてください。

ファイル:
mql4_4.zip  53 kb
 


今後の進め方は次のとおりです。

1.サ ブセクションを埋めるために、フリーランスのコントリビューターを募集 しています。つまり、要するに、考え抜かれた質問と、詳細な説明、相互参照のセットなどの回答が必要なのです(FAQトピックの最初のページで提案されている投稿テンプレートです)。(FAQトピックの最初のページで提供されているその投稿テンプレートによると)。

2.サブセクションのために作成されたすべての質問は、そのサブセクションのためのキュレーター(1~2名)によって集められます。彼らはそれらを処理し、共通のスタイルに持ち込み、適宜相互参照を形成する これは所有者の各サブセクションを持ち、データベースを混乱させることはありません 一つのスタイルと回答パターンになります。
例えば、 Whereの セクションは4つのサブセクションに分かれています:テスターに関する質問、ターミナル、フォーラム、便利なリンク です。各サブセクションに1人ずついれば十分です。フリーランサーから入ってくるナレッジベースの整理や、近隣のセクションのメンバーから上がってくる提案の整理にフル回転で取り組みます。そしてもちろん、彼ら自身もデータベースの充実に積極的に参加し、質問を作成する必要があります。

3.サブセクションを埋めるように - 彼らはコレクター (私のような)に転送さ れます。1つのchmファイルに集めて、1つのスタイルで管理することが必要である。クロスリファレンスの追加作成、インデックス作成、検索クエリ用キーワードの追加。

サブセクションは、キュレーターの提案と アセンブラとの 合意により、再ソートや拡張が可能です。

結論:
参加者: 私たちの小屋へようこそ。:) サブセクションのキュレーターになりたい方、すでに何か貢献できることがある方は、ここに気軽にポストアンサーを投稿してください。
司会: 資料がたくさん出てきます。このスレッドでの議論や気の抜けた中身のない書き込みはご遠慮ください。また、セクションの作業を円滑に進めるため、投稿が共通ベースに移動した後、参加者の投稿を削除する必要があります。
キュレーター: ヘルプファイルはWinCHM4.17で作成されています(必要な方はご連絡ください)。ファイル名と 場所の要件:
- フォルダー構造はヘルプの構造を正確に繰り返す必要があります
- ファイル/フォルダー名はすべて意味のあるフレーズで英語のみで指定する必要があります
- 現在のベースの例で、アーカイブのWinCHMを「コンパイル」するもの。

ファイル:
chm4_2.zip  19 kb
 

sergeev:

...


1) HOW. 想定される質問に対する回答を先取りして記述しています。例えば、指標データの取得方法、全注文の決済方法などです。また、機能(キーマなど)をシステム化した大規模なデータベースも収録しています。そして最も重要なことは、既製のプリミティブなTORの例と、コードの詳細な説明とコメントです。知識や分析の体系化を進める必要があるため、非常に複雑なセクションである。最後に記入される予定です。

...

アレクセイ、キムのオーダー機能はどれも信頼性や正確性に非常に疑問が残るものばかりです。EAもリベンジしているのでしょうか?

 
Integer:

アレクセイ、キムのオーダー機能はどれも信頼性や正確性に非常に疑問が残るものばかりです。EAもリベットで留めているのですか?

いや、リアルにテストした自分のを使うよ。:)

正直なところ、この掲示板のおすすめ情報以外では、実質的にキムタクを見たことがありません。 セクションの説明では例としてあげただけなので、何のことかわかると思います。そして、キムさんのはそのコードでマニュアルに載るのかどうか。アイデアだけを取り出して、一般的なスタイルで仕上げる。

HOWの 部分が一番深刻です。なぜなら、すべてのHOWセクションは、最後のセクションである「TORの例とその実装」につながるものであり、すべての可能なオプションとこれまでのすべてのセクションの機能の組み合わせを示すことになるからである。

 

質問: double」型の2つの実数を比較するにはどうすればよいですか?


回答

double A;
double B;

if(NormalizeDouble(MathAbs(A-B),Digits)<0.1*Point)return(true);
else return(false);