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

 

Vladimir Simakov:

私の仲間は、このクソをみて言った。俺に25万ドル、俺のジャンク2人に7万5千ドルずつだ。半年でこのクソを書き直すか、処分するかだ。

このようなやり方では、GPとの間に必ず問題が発生します。

 
MrBrooklin:

グローバル変数に関するすべての投稿を読み、この議論の参加者全員が私に伝えようとしていることを理解しました。グローバル変数を使用しないプログラムコードの書き方を学びます。皆さん、このような建設的なアドバイスをありがとうございました

敬具 ウラジミール

プログラマーがグローバル変数の使用を嫌うのは、その値を変更する際にミスを犯す可能性があるからです。これは、各機能がそれらを変更することができるため、エラーがローカライズすることが困難であるという状況を生み出します。もちろん、グローバルスコープに存在する変数だけは、すべてのプログラム関数が参照しなければなりません。そうでなければならないのです。

グローバル変数を使うと、プログラムが巨大で活発な建設現場と化す一方で、機能を素早く拡張できるため、私は常にグローバル変数を好んで使っていました。よくコードの書き方を非難されますが、だから建設現場なんです。基本的な建築作業が終わったら掃除して、家が完成したらタイルを貼ったり、ペンキを塗ったり、掃除をしたりする。それまでは、型枠を組み立ててコンクリートを流し込むことが最優先です)。

しかし、プログラマーの考え方は違う。彼らは、たとえ2.5行であっても、コードを「きれいに」「こすり」ます。二行半のコードであってもスクラップしてくれますが、新品のコインのように輝きます(笑)。このようなコードに対する姿勢は、彼らが生きている職業上、正当化されるものですが、クリエイティブな視点から見ると、硬直的で稚拙なものとなってしまいます。そういうことなんだ...。

アドバイスとしては、きちんとした文章を書くことを学びつつ、時にはルールから離れ、より多様な経験を積むために実験することを許容することです。そうすることで、学習効果が高まり、より早く習得することができます。
 
MrBrooklin:

プログラミング言語「MQL5」の勉強を続けています。このスレッドの参加者からのヒントを考慮して、再度スクリプトのコードを修正したものを貼り付けます。すべてのモードでスクリプトをテストしました。問題なく検出されました。まず始めに、最小限の入力パラメータを適用しています。スクリプトのコードは英語で書かれており、コードへのコメントはロシア語で書かれているため、消化しやすくなっています。先ほどの約束通り、プログラミングスクールの1期生にも理解できるようにスクリプトを記述してみました。

このスレッドの参加者に言われたとおりにしたつもりですが、間違っているかもしれません。

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

グローバル変数bool enough_timeをどこにどのように移動させるか、ご自身で考えられたのは素晴らしいことです。進歩しているんですね。
 
Реter Konow:
グローバル変数bool_timеをどこにどのように移動させるかを把握されたのは素晴らしいことです。いい仕事してますね。

ピーターさん、ありがとうございました。以前、このスレッドの参加者からいただいたヒントのおかげで、グローバル変数を 関数内に移動させました。今は、頭の中で情報が整理されると、新しいことを把握するのがとても楽になりました。

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

 

皆さん、おはようございます!ご機嫌いかがでしょうか?

プログラミングの専門家の皆様へ皆様からいただいたヒントや建設的なアドバイスに、心から感謝いたします。

敬具 ウラジミール

 
MrBrooklin:

皆さん、おはようございます!ご機嫌いかがでしょうか?

プログラミングの専門家の皆様へ皆様からいただいたヒントや建設的なアドバイスに、心から感謝いたします。

敬具 ウラジミール


動きが早いですね.:-)
基礎的な高等技術教育を受けているからこそ、間違いがなければ......。

 
Aleksey Masterov:

動きが早いな...。:-)
基本的な高等技術教育があるからだと思うのですが......。

こんにちは、アレクセイ! そうです、私はソビエトで 生産工程の自動化に関連する高等技術教育を受け、同じソビエト 時代にECMの修理を行っていた組織で電子技術者として経験を積んでいます。

ウラジミール

 
MrBrooklin:

私は、生産工程の自動化に関する高等技術教育を受け、同じソ連 時代にECMの修理に携わっていた組織で電子エンジニアとしての経験がある んです。

敬具 ウラジミール


それはあなたですぐに目につく、私にとっては...。ファンタジーをコードに変換する「アート」、特に今回のスクリプトのような哲学的なものについては、そのレベルの高さとスピードに驚かされますね。:-)
IMHO、このままでは、ここにいる多くのアラプログの専門家の鼻をこすることになりますよ.:-)
MT5 methaquotesチームでのリモートワークに応募する!!!!
 
Vasiliy Sokolov:

に続く。

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

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

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

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

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

Vasiliyさん、こんにちは。差し支えなければ、関数の特性について続編をお願いします。私にとっても、他のプログラミング初心者にとっても、関数がある特性を持ち、ある方法で互いに結合しなければ ならないことを知ることは、非常に重要であり有用なことです。

機能に関するメッセージブロックは、すでに私用に1つのWord文書にまとめられています。

敬具 ウラジミール

 
Aleksey Masterov:

...MT5 methaquotesチームでのリモートワークに応募する!!!!

アレクセイ、冗談だろう?そうですね、まずは基本をしっかり学びたいと思います

敬具 ウラジミール