MQL5言語をゼロから独学で学ぶ - ページ 29

 
Реter Konow:
初心者を無駄な情報で埋め尽くしたことになる(笑)。

情報が役に立つかどうかは、初心者が判断することです

ワシリー・ソコロフ

よく言った、有益な、ありがとうございます。

 
Alexey Viktorov:

これは、自分の欲望をそのように誇示してはいけないということを示唆しています。ウラジミールは、C++を学べとか、アセンブラを学べとかいう「専門家」の戯言ではなく、これこれこういう機能ですと具体的に質問して、有益なアドバイスをもらった方がよかったかもしれません。まずはパンチカードの勉強から始めてみてはいかがでしょうか。

TCが自分の計画通りに勉強し、「飛び級」しないことに賛成です。すべて順調です。そして、MQLはもちろん、正しい順序で学ぶ必要があります。上記の哲学(ヴァシリーと私)は、知識の構造化に役立つかもしれないが、知識を空にすることはできない。そして、学生は学習のごく初期に、私たちの哲学的な表記法に従って空虚を構造化しようとしなければならない。

教科書に戻って、高尚なことはひとまず忘れてください。
 
Vasiliy Sokolov:

移動する

  • イベントがたくさんあるので、イベントハンドラもたくさんあります。イベントは不規則に呼び出されるため、そのイベントハンドラも不規則に呼び出されます。呼び出しに一貫性がないため、イベントハンドラは互いに依存できず、互いのデータにも依存できない。このような厳しい条件を満たす構成要素は、関数だけ である。
  • 機能は互いに依存し合うことはできません。ある関数が和 a+b を返し、次の関数が積 a*b を返す場合、この2つの関数の結果は呼び出しの順序に依存しない。最初の関数を引数3と5で呼び出すと、8が得られます。次に、同じ引数で2番目の関数を呼び出すと、24が得られます。そして、その通話を交換する。結果は同じになります。加算関数は、引数3と5で必ず8を返します。乗算関数は、同じ引数で常に24を返します。
  • 上記から明らかなように、イベントハンドラは関数にしかできない。新しいティックイベントが発生した場合、OnTick関数で処理されます。Startイベント(スクリプトの1回限りの起動)が発生した場合は、特別なOnStart関数で処理されます。
  • この機能は全世界共通です。この機能は、イベントだけでなくこの関数は、何か役に立つもの、例えば現在の時刻を返すことができます。関数は、渡された引数で複雑な計算を行い、その最終結果を一つの値として返すことができる。最後に、関数はデータプロバイダーになることができます。関数を呼び出して、そこから相場などの必要なデータを取得するのです。
  • MetaTraderは内部的には数千の機能で構成されており、そのうち約15万はユーザーが親切に利用できるようになっています。これらは非常に便利な機能です。システム時間を確認したり、興味のある機器のデータを取得したりすることができます。取引注文の 送信に使用される機能です。ICLハンドブックを開くと、関数とその引数で構成されていることがわかります。つまり、MetaTraderは、ユーザープログラムに関する限り、1つの大きな機能セットなのです。
  • ユニバーサル機能だけでは不十分いくら新機能を追加しても、常に不足するのが現状です。その理由は、人それぞれニーズが違うからです。あらゆるシーンに対応する万能な機能はありません。最も一般的で普遍的な機能は、すでにMetaTraderに搭載されており、親切に教えてくれます。しかし、ユーザーニーズは無限大です。MetaQuotesは、10万人の自社端末ユーザーの個々のニーズに応えることはできません。その代わりに、もっと柔軟な方法で、ユーザー自身が欲しい機能を作るようにしたのです。ユーザーにもメリットがあった。自分たちに合わないシステム関数を使う代わりに、自分たちの問題を完璧に解決する関数を書くことができるのです。システム機能には普遍性があるため、完璧なものはありません。
  • ユーザーが自分で関数を書いて、その仕組みを理解できるスキルは、プログラマーの腕前を物語る。彼/彼女が、プログラムは、入ってくるイベントを一貫して処理しないハンドラ(関数の形)のばらばらの集合であると理解しているならば、それは良いことです。自分で関数を書く方法を知っていれば、それもプラスになります。また、複数の機能(自機能とシステム機能の両方)の仕事を共通のアルゴリズムにまとめることができれば、それは彼にとってもう一つのプラスになります。
  • メタトレーダー(4番目と5番目)のすべてが、何らかの形で関数、機能、関数に基づいていることを理解すれば、すべてが突然明らかになります。ヘルプはもはや、散在するコードスニペットを集めた分厚い本としてではなく、利用可能な関数とその機能のガイドとして提示されます。データ型、配列、構造体、クラスなど、それ以外のものは関係ない。何かを返したり、何かを受け取ったりできるように、機能をサポートすることです。

一応

素晴らしい!!!ヴァシリー あなたには、教える才能がありますね。特に全くのゼロの状態でも、すべてがクリアに理解できるようになっています。MQL4 Tutorial by Sergey Kovalevのような本を書こうと思ったことはありますか?

このテーマは、そのような取り組みに刺激を 与えるものだと思いませんか、ヴァシリー?

ウラジミールさん、ありがとうございます。

 
ヴァシリーは、ある特定の側面にのみ注意を向け、他の側面よりも重要視しています。例えば、FunctionやEventなど。S.Kovalevの著作を読めば、関数について、それに劣らず(あるいはそれ以上に)詳細でわかりやすい説明があることがわかるが、他の分野を犠牲にしてまで、関数に集中する必要はないのだ。ですから、教科書を読まなければなりません。

たしかに、Vasiliyはとてもよく書いていますが、彼の主観的な理解によって、少し「歪んで」います。

正しいやり方を知っている私から学びなさい!」ではなく、「教科書から学び、基本を正しく理解しなさい、私がその科目で今気にしていることを、にわか仕込みの概念ではなく」と言いたいのです。

P.S. ただし、それはあなた次第です。
 
Реter Konow:
ヴァシリーは、ある特定の側面だけに注意を向け、それが他の側面よりも重要であると信じています。例えば、FunctionやEventなど。S. Kovalevの「Functions」を読めば、それに劣らず(あるいはそれ以上に)詳細で分かりやすい説明が得られると思いますが、それらに焦点を当てることで、他の分野を犠牲にすることはありません。ですから、教科書を読まなければなりません。

たしかに、Vasiliyはとてもよく書いていますが、彼の主観的な理解によって、少し「歪んで」います。

正しいやり方を知っている私から学びなさい!」ではなく、「教科書から学び、基本を正しく理解しなさい、私がその科目で今気にしていることを、にわか仕込みの概念ではなく」と言いたいのです。

P.S. ただし、あなた次第です。

そして、ピーター、あなたとヴァシリーが一緒に良い仕事をして、MQL5に関するそのような本を書かないかと提案することができます。

本を書くことは、人類の歴史、特にプログラミングの歴史に 痕跡を 残すための最良の方法 である。考えてみてください!

ウラジミールさん、ありがとうございます。

 
MrBrooklin:

ピーター あなたとヴァシリーは一緒に良い仕事をして、MQL5に関するそのような本を書くことを提案します。

本を書くことは、人類の歴史、特にプログラミングの歴史に 足跡を 残すための最良の方法 である。考えてみてください!

ウラジミールさん、ありがとうございます。

しかし、このような本で必要とされる古典的なアプローチについては、Vasiliyが簡単に「勝っている」のです。オブジェクトと環境の動的な相互作用をプログラミングというプリズムを通して抽象的に理解することしかできないが、これが最終章となる ))))
 
Реter Konow:
しかし、Vasilyは古典的なアプローチで簡単に私を「打ち負かす」ので、このような本にはまさに私が必要としているものです。オブジェクトと環境の動的な相互作用をプログラミングというプリズムを通して抽象的に理解することしかできないが、これが最終章となる ))))

なるほど。さて、私の本の企画書について、ヴァシリーの意見を聞いてみたい。

私は現在、先生の記事「Universal Trading Expert Advisor:Working withCustom Trailing Stops(Part6)」を勉強しているところです。

敬具 ウラジミール

 

に続く。

上の投稿を見ると、機能に重点を置いていることがよくわかりました。すべては彼らのために、彼ら以外の何者でもなく、捧げられていた。これは明らかな主観的偏見、あるいは難解な「哲学」だと思われるかもしれません。しかし、ここに哲学はない。そして、そうした機能へのこだわりは、決して偶然のものではありません。要は、プログラミングでは、関数が基本的に重要なのです。また、関数は数学において非常に重要かつ基本的な概念である。前世紀20年代、アロンゾ・チャーチは、関数に基づく微積分の体系を開発した。これをラムダ計算と呼んでいた。このシステムは、計算可能性の概念を形式化し、コンピュータの計算と数学を強固に結びつけるもので、世界の一流プログラマーは、ラムダ計算をベースに、関数を主役とするいわゆる関数型プログラミング 言語を開発した。例えば、関数型プログラミング言語であるHaskellでは、forループなどというものすら存在しない。その代わり、特殊な方法で関数を再帰的に呼び出して、目的の値を計算することが提案されています。関数だけで、代入をしない場合、チューリング完全なプログラミング言語を書くことが可能であることが証明される。これは、手続き型言語やOOP言語など、他のチューリング完全言語で可能なことをすべて書けるようにする言語である。

MQLは関数型言語ではなく、手続き型言語であり、クラスによって拡張可能で、厳格な型付けと豊富なサブジェクト指向のAPI(同じ関数の形で、おお驚き)を備えています。一方、関数の理論はしっかりとした数学的基礎の上に成り立っており、関数のあるプログラミング言語であれば、簡単で効果的な使い方のパターンを提供してくれるので、少なくとも関数とその背後にある数学的基礎を捨てることは遠大なことではないだろう。だからこそ、機能にはとことんこだわる。配列の設計をどれだけ理解していても、あるデータ型を間違えてしまっても問題ないのです。これはすぐに修正・訂正することができます。しかし、関数とその関連性を理解しなければ、並みのプログラマーにすらなれない。

したがって、プログラムの機能を拡張するために、時間をかけて普通にプログ、すなわちリニアに学習するためには、次のことを学ぶ必要があります。

  • MetaTrader 4.5のイベントモデルを明確に(徹底的にではないにせよ、明らかに必要)表現すること。
  • システム機能の操作方法を知っている。自分の結果を自分の関数にまとめる。システム関数の呼び出しを自作関数にまとめる。
  • 自分で関数を書けること、好きであること。
  • 関数呼び出しの連鎖を理解できる:例えば、関数a()が関数b()を呼び出し、b()がc()を呼び出し、e()が関数c()を呼び出す場合など。
  • クリーンな関数の書き方を知り、なぜクリーンな関数を書かなければならないかを理解する。純粋関数とは何かは後で説明します。

機能はシンプルに見える。"何を学ぶか "です。ここの段落を読めばいいだけなんです。そして、配列、for、while......"。- いいえ、そうではありません。機能はシンプルに見えますが(それでいいんです)。しかし、本当に効率的に課題を解決するためには、関数が一定の性質を持ち、互いに一定の方法で組み合わされる必要がある。どうすればいいのかは、おそらく後で書くことになるだろう。

 
MrBrooklin:

なるほど。さて、私の本の企画書について、ヴァシリーの意見を聞いてみたい。

私は現在、先生の記事「Universal Trading Expert Advisor:Working with Custom Trailing Stops(Part6)」を勉強しているところです。

敬具 ウラジミール

いいえ。本はありません。たぶん、いくつかの記事。しかし、確実に直近の時間ではありません。

 
MrBrooklin:

ピーター あなたとヴァシリーは一緒に良い仕事をして、MQL5のような本を書いてはどうでしょう。

そんなことはないだろう。ピーターとの見解が違いすぎる。どのように違うかは、いくつかのコードを見ていただければと思います)。