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

 
Vasiliy Sokolov:

そうなんだ! 誰もが人生経験に基づくソフトウェアに対する誤解を利用して、プログラミングを学ぼうとします。例えば、プログラムは本の中の文章と同じで、序章、目次、結論があるということ。つまり、プログラムが最初から最後まで、一種の連続したスキームになっているということです。最初の段階ではこの考え方が通用するが、その後、プログラムが複雑になるにつれて困難が生じ、どうやっても確実に動作するプログラムを書くことはできない。コバレフは、弱気なサービスを提供するのが得意だ。彼は、わかりやすい概念装置を使って、このプログラムは、このようなスキームを持った同じ本であると読者に説明しようとするのである。でも、スキームがないんです!スクリプトはExpert Advisorとは根本的に異なる「スキーム」を持っており、Expert Advisorはインジケータとは異なるスキームを持っているのです。

では、人はどのように学ぶべきとお考えですか?PLOの思想からして正しい?不可能です。
 

Vasiliy Sokolov:

...4) 最も奇妙なブロックは、「エラー処理」ブロックである。入ることはできても、出ることはできない。つまり、プログラムがエラーをキャッチして、このブロックに座っている(完全に再起動されるまでハングしなければならない、あるいは、もっと良いのは、ターミナルが永久にハングして、これ以上エラーを作らないようにする - これがアイデアです!) ...

Vasiliyさん、こんにちは。詳細かつ高度な技術を駆使した解説をありがとうございました唯一納得がいかないのは、4点目です。ポイントは、矢印が「エラーハンドリングユニット」に向かうものと向かうものの両方があることです。このユニットと他のユニットを結ぶ線の両端には矢印があり、研究所のコンピュータサイエンスのプログラムでは、それが双方向の処理、つまり前後を意味することを今でも覚えています。ですから、何の疑問も持っていません。メッセージの続きですが、私にはすべてがクリアーです。

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

 
MrBrooklin:

Vasilyさん、こんにちは。詳細かつ適格な解説をありがとうございました唯一納得がいかないのは、4点目です。実は、矢印は「エラーハンドリングユニット」に向かうものと、向かうものの両方があるのです。このユニットと他のユニットを結ぶ線の両端には矢印があり、研究所のコンピュータサイエンスのプログラムでは、それが双方向の処理、つまり前後を意味することを今でも覚えています。ですから、何の疑問も持っていません。メッセージの続きですが、私にはすべてがクリアーです。

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

そうです、最初の1台が流行ったのです :-)

彼のエクスパを 研究のテンプレートとして使う - コンピテントコード!

其処と


  • Expert Advisorは、「作業
  • 時間枠」によって最適化することができます。 1
  • つのバーに「市場参入」取引は1回しかできません(これは内部パラメータで、入力パラメータに置かれず、「1つのポジションのみ
  • 」パラメータとは関係ありません)
  • 「バー内」モードで作業する場合(「シグナルを検索します。 10'に等しい場合、現在のバーはバー#0となり、'Search signals, in seconds
  • ' モード(
  • 'Search signals, in seconds
  • ' が '10' 未満の場合)では現在のバーはバー#1 となります
  • ' パラメータ - 取引する側を制限する。Allowed only BUY positions', 'Allowed only SELL positions' and 'Allowed BUY and SELL
  • positions
  • '
  • Parameter 'Use time control'- Time frame for searching trading signals from 'Start Hour':'Start Minute' to'End Hour':'End Minute'
  • .
  • Pips Or Points:'
  • パラメータは、ストップロス、テイクプロフィット、トレーリング
  • の標準的な計算
  • 方法を
  • 定義
  • します。

    и

    リバースやその他のもの、位置のオープニングフィーを簡素化するために、最初のコードで標準的なライブラリをプラグイン - 勉強とドン't WORRY。

    フラグ'Positions: Only one' を'true' に設定すると、Expert Advisor はマーケットで1つ以上のポジションを持つことができなくなります。ポジション:リバース」フラグは、シグナルの反転を担当します。興味深いフラグ'Positions: Close opposite' - このフラグがポジションを開く前に'true' に設定されている場合、反対側のポジションの削除が保証されます。Print log' は全ての操作の拡張ログを表示する。Freeze and StopsLevels Coefficient' パラメータは、あるシンボルでストップレベルとフリーズレベルがゼロに等しい場合の係数を定義します。3」の値を適用することを推奨する。

    iFractals iAMA
    iFractals iAMA
    • www.mql5.com
    Получать сигнала на откате (по iFractals (Fractals) ), а тренд определять по iAMA (Adaptive Moving Average, AMA). По индикатору iAMA (Adaptive Moving Average, AMA) определяется тренд. Условия тренда: на текущем баре и на двух предшествующих индикатор равномерно растёт (тренд вверх) или равномерно падает (тренд вниз). При этом цена (High или...
     

    プログラムの内容を意識して、筆者が強くお勧めする原則を書きます。コバレフのリーフレットのように、正しいものもあれば重大な誤りを含むものもあり、また読者との一般的な憶測もありますが、これらの原則は、MQL:Expert Advisors、スクリプト、Expert Advisorsで何を書いてもALWAYSで100%正しいのです。

    第一原理MQLのどのプログラムでも、 イベントを 処理します。イベントとは、何かに関する情報を含む通知で、通常、何かが変更されたことを意味します。例えば、新しいティックが来たとか、保留中の注文が執行されたとか。その他の事象は、情報を含まず、ただ起こるだけです。例えば、"timer "イベントは、設定された周期でユーザー関数を呼び出すことができます。何かが変わったことをユーザーに通知することはない。単にユーザーのコードを呼び出すだけなので、余計な情報は必要ないのです。イベントの定義から、いくつかの非自明なメソッドが続く。

    • 第一の意味は、イベントを受け取ったら、できるだけ早くそれを処理すべきだということです。イベントは数多く存在し、キューにイベントが積み重なることもあります。MeteTrader(私たちのプログラムではありません)がイベントを処理します。そのためにフローと 呼ばれる特別なリソースを使用します。この資源は非常に貴重であり、かつ限られています。MetaTraderが所有するスレッドは、私たちのPCのCPU上でスクリプトで書かれた粗雑で最適でない遅いコードを惜しみなく実行するのです。イベント処理で コードのスレッドが遅くなると、場合によってはMetaTraderで動作している他のプログラムが正常に実行できなくなります。彼らは、私たちが無駄な計算からスレッドを解放するのを待ち、解放されたスレッドで自分たちのコードを実行するのです。
    • いろいろなイベントがあります。利用可能なイベントの多くに対応することも、1つだけに対応することも可能です。スクリプトを作ると、OnStartという一度だけ発生するイベントを処理することになります。Expert Advisorを書くと、一度に複数のイベントを処理することができます。つまり、「この本を見ながらプログラムしなさい」というパラダイムにプログラムを詰め込んでも意味がないのです。むしろ、プログラムがあるイベントのハンドラーであることを理解すればよいのです。どのような順番で呼ばれてもよいし、全く呼ばれなくてもよい。イベントはそれぞれ独立しています。そのため、これらのイベントを処理するプログラムの部分は、互いに依存しない。ノンリニアでシーケンシャルではない のです。

    (今はここまで、続きは気が向いたらします)。
    Документация по MQL5: Основы языка / Функции / Функции обработки событий
    Документация по MQL5: Основы языка / Функции / Функции обработки событий
    • www.mql5.com
    В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
     
    Roman Shiredchenko:

    縁起を担いで最初に手に入れたのがこちら:-)

    彼のエクスパを 研究のテンプレートとして使う - コンピテントコード!

    其処と


  • Expert Advisorは、「作業
  • 時間枠」によって最適化することができます。 1
  • つのバーに「市場参入」取引は1回しかできません(これは内部パラメータで、入力パラメータに置かれず、「1つのポジションのみ
  • 」パラメータとは関係ありません)
  • 「バー内」モードで作業する場合(「シグナルを検索します。 10'に等しい場合、現在のバーはバー#0となり、'Search signals, in seconds
  • ' モード(
  • 'Search signals, in seconds
  • ' が '10' 未満の場合)では現在のバーはバー#1 となります
  • ' パラメータ - 取引する側を制限する。Allowed only BUY positions', 'Allowed only SELL positions' and 'Allowed BUY and SELL
  • positions
  • '
  • Parameter 'Use time control'- Time frame for searching trading signals from 'Start Hour':'Start Minute' to'End Hour':'End Minute'
  • .
  • Pips Or Points:'
  • パラメータは、ストップロス、テイクプロフィット、トレーリング
  • の標準的な計算
  • 方法を
  • 定義
  • します。

    и

    また、標準的な コードを書くことに慣れれば、インデントやその他いろいろなことができるようになります。

    フラグ'Positions: Only one' を'true' に設定すると、Expert Advisor はマーケットで1つ以上のポジションを持つことができなくなります。ポジション:リバース」フラグは、シグナルの反転を担当します。興味深いフラグ'Positions: Close opposite' - このフラグがポジションを開く前に'true' に設定されている場合、反対側のポジションの削除が保証されます。Print log' は全ての操作の拡張ログを表示する。Freeze and StopsLevels Coefficient' パラメータは、あるシンボルでストップレベルとフリーズレベルがゼロに等しい場合の係数を定義します。3」の値を使用することが推奨される。

    ローマンさん、こんにちは。例を挙げていただき、ありがとうございます。ウラジーミル・カルプトフが書いた暗号を理解しようと何度も試みたが、私にはまだ到達できないレベルだ。もう少しして、私の頭の中にもっと情報が入ってきたら、彼のコードに戻ることになりそうだ。でも、教えてくれてありがとうございます

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

     
    Vasiliy Sokolov:

    プログラムの内容を認識するために、筆者が強くお勧めする原則を書きます。コバレフのリーフレットのように、正しいものもあれば重大な誤りを含むものもあり、また読者との一般的な憶測もありますが、これらの原則は、MQL:Expert Advisors、スクリプト、Expert Advisorsで何を書いてもALWAYSで100%正しいのです。

    第一原理MQLのどのプログラムでも、 イベントを 処理します。イベントとは、何かに関する情報を含む通知で、通常、何かが変更されたことを意味します。例えば、新しいティックが来たとか、保留中の注文が執行されたとか。何の情報もなく、ただ起こる出来事もある。例えば、イベント "timer "は、設定された周期でユーザー関数を呼び出すことができます。何かが変わったことをユーザーに通知することはない。単にユーザーのコードを呼び出すだけなので、余計な情報は必要ないのです。イベントの定義から、いくつかの非自明なメソッドが続く。

    • 第一の帰結は、イベントを受け取ったら、できるだけ早くそれを処理することである。イベントは数多く存在し、キューにイベントが積み重なることもあります。MeteTrader(私たちのプログラムではありません)がイベントを処理します。そのためにフローと 呼ばれる特別なリソースを使用します。この資源は非常に貴重であり、かつ限られています。MetaTraderが所有するスレッドは、私たちのPCのCPU上でスクリプトで書かれた粗雑で最適でない遅いコードを惜しみなく実行するのです。イベント処理で コードのスレッドが遅くなると、場合によってはMetaTraderで動作している他のプログラムが正常に実行できなくなります。彼らは、私たちが無駄な計算からスレッドを解放するのを待ち、解放されたスレッドで自分たちのコードを実行するのです。
    • いろいろなイベントがあります。利用可能なイベントの多くに対応することも、1つだけに対応することも可能です。スクリプトを作ると、OnStartという1回しか起きないイベントを処理することになります。Expert Advisorを書くと、一度に複数のイベントを処理することができます。つまり、「この本を見ながらプログラムしなさい」というパラダイムにプログラムを詰め込んでも意味がないのです。むしろ、プログラムがあるイベントのハンドラーであることを理解すればよいのです。どのような順番で呼ばれてもよいし、全く呼ばれなくてもよい。イベントはそれぞれ独立しています。そのため、これらのイベントを処理するプログラムの部分は、互いに依存しない。非線形でシーケンシャルではない のです。

    (今はここまで、続きは気が向いたらします)

    ヴァシリーよくやった!続編待ってます!書いてもいいんですか?先生のお話はすべて饒舌で、私にも理解できるものでした

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

     
    MrBrooklin:

    よくやったヴァシリー!続編を楽しみにしています!もし書いてもいいのなら。報告されたことはすべて、私にとって簡潔で理解しやすいものでした

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

    はい、面白い判断です。

    1. 任意のプログラムは、ファンクションブロックの階層構造であり、関連する相互に依存するパラメータのシステムである。

    2.イベントは、プログラムと外部のソフトウェア環境との相互作用、または内部の変化の結果である。環境はプログラム(OnTick、OnChartEvent...)を呼び出すことでイベントを「通知」します。

    4.環境(端末)は、プログラムに対して中立的ですが、影響を与えることができます。

    5.プログラムは、特殊な機能によって端末や市場などの環境情報を受け取り、それをロジックに利用することができる。

    6.プログラムは、特別な問い合わせによって自分自身やそのオブジェクトに関する情報を受け取り、そのロジックで使用することができます。

    7.イベントはif()文で記述します。

    8.イベントには、変更に対応するハンドラがあります。

    9.反応とは、対象物の状態の変化(パラメータ値の質量変化)であったり、何らかの演算処理であったりする。

    10.イベントハンドラは、階層構造(イベントモデル)にグループ化されている。

    11.ソフトウェアオブジェクトは、様々なイベントにサブスクライブし、受信者リストに入ることができる。

    ...などなど...。:)

    追伸:Vasiliyはもっとわかりやすく説明してくれるでしょう。
     

    移動する

    • イベントがたくさんあるので、イベントハンドラもたくさんあります。イベントは不規則に呼び出されるため、そのイベントハンドラも不規則に呼び出されます。呼び出しに一貫性がないため、イベントハンドラ同士は依存できず、お互いのデータも依存できない。このような厳しい条件を満たす構成要素は、関数だけ である。
    • 機能は互いに依存し合うことはできません。ある関数が和 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番目)のすべてが、何らかの形で関数、機能、関数に基づいていることを理解すれば、すべてが突然明らかになります。ヘルプはもはや、散在するコードスニペットを集めた分厚い本としてではなく、利用可能な関数とその機能を紹介するガイドとして提供されるようになりました。データ型、配列、構造体、クラスなど、それ以外のものは関係ない。何かを返したり、何かを受け取ったりできるように、機能をサポートすることです。

    (以上)
     
    新参者に無駄な情報を垂れ流したことになる(笑)
     
    Реter Konow:
    初心者は無駄な情報が氾濫している)。

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