mql5.comフォーラムでよく出ます。MQL5開発で拒絶の壁に直面すると、カスタムメソッドを使ったテンプレート実装についての興味が膨らむのです。いうわけで私の調査結果を本稿で提供していきます。言語はシステムタスクを処理する機能を提供するために開発されました。言語製作者は言語の次項環境の中小モデルは実装しませんでした。システムのプログラマーが必要とする機能を実装したにすぎません。それらはメモリを使用した直接動作、コントロールのストラクチャ構築、アプリケーションのモジュール管理のメソッドです。実際、言語にはそれ以外なにもインクルードされていません。その他はすべてランタイムライブラリに取り込まれていました。言語をストラクチャされたアセンブラと呼ぶたちの悪い人達がときどきいるのはそういう理由です。その人達が何を言おうが、手法は大成功を収めているように見えました。そのようにして、簡素化と言語力の間の割合は新たなレベルへ達したのです。言語はシステムプログラムの汎用言語のようなものです。それはこれら限界に留まりませんでした。言語は世界中のプログラマーの間で高い人気を博しました。異なるアプリケーションで広く使われるようになったのです。C言語も)を配布したことです。そこではプログラマーの新世代が教育を受けていました。言語のアキレスのかかとは90年代に起こった問題に対してレベルが低すぎることです。この問題には2つの局面があります。言語レベルが低すぎるというのは、それはメモリとアドレス幾何の作業だということです。C言語アプリケーションに多大な問題を起こします。抽象タイプにおいては、多相性と例外処理を意味します。言語アプリケーションではタスク実装技術がしばしばマテリアル面を越えてしまうのです。いった欠点の第一の修正は08年代初頭に試みられました。C言語の拡張版を開発しました。言語そのものの作成姿勢と変わるところはありませんでした。特定グループの人の作業がしやすくなるような異なる機能が追加されたのです。言語における主要な改善は新しいタイプのデータを使用する可能性を与えるクラスのメカニズムです。プログラマーはクラスオブジェクトの内部表現と関数メソッドセットを記述しその代表にアクセスするのです。言語製作目的のひとつはすでに書かれたコードを再利用する割合を増やすことでした。言語の改善はクラスのイントロ部分だけを構成するのではありません。例外を構成的に処理するメカニズム(それがないfail-safeアプリケーションの開発は複雑なものとなります。)、テンプレートメカニズム、そのた多くのものを実装しました。Сとのフルな互換性は保存したまま、新たな高レベル構成を導入することでその機能を拡げるように、との指示でした。マクロ代用のメカニズムとしてのテンプレートMQL5でテンプレートを実装する方法を理解するには、それがC++言語でどのように動作するか理解する必要があります。言語プログラムの機能で、それにより関数およびクラスは遺伝的タイプを伴う処理が可能となります。これにより関数やクラスがお互いを書き直すことなく多くの異なるデータタイプに動作できるようになります。テンプレートを持ちません。いってテンプレートありのプログラムスタイルが使用できないわけではありません。言語におけるテンプレートのメカニズムは、実際言語の深く埋め込まれたマクロ生成の洗練されたメカニズムです。言い換えれば、プログラマーがテンプレートを使用するとき、コンパイらが、宣言されるデータタイプではなく対応する関数が呼ばれるデータタイプを判断します。言語で紹介されたテンプレートです。プログラマによってキーボードでタイプされるコードはコンパイラによって作成されるコードとは異なります。テンプレート自体のメカニズムはプログラムサイズを減らす結果にはなりませんでした。ソースコードのサイズを減らしただけでした。それがテンプレートを用いて解決する主要な問題がプログラマーによってタイプされるコードを減らすことな理由です。マシーンコードはコンパイル中に生成されるため、通常のプログラマーは関数コードが一度だけ作成されているのか複数回作成されているのか確認できないのです。テンプレートコードをコンパイルする間、関数のコードはタイプ数と同じだけ生成されます。そこではテンプレートが使用されます。基本的にテンプレートはコンパイルの段階でオーバーライドされます。言語でテンプレートを導入する二番目の側面はメモリアロケーションです。言語でのメモリ問題は静的に割り当てられます。この割当てをより柔軟にするために配列メモリサイズを設定するテンプレートが使われます。動的オブジェクトとして実装されています。よって未解決事項はタイプ代用問題だけです。開発者はそれを解決しようとしませんでした。テンプレート代用メカニズムの使用を参照することでコンパイラーを破壊し、そのため再コンパイルとなりそうだというのです。彼らはそれをよく承知しています。そこで、選択肢はひとつしかありません。このパラダイムを独自の方法で実装するのです。我々はコンパイラーを変えることも、言語基準を変えることもないことをお伝えします。私が提案するのはテンプレート自体へのアプローチを変えることです。コンパイル段階でテンプレートを作成できなくても、それでマシンコードを書くことができなくなるわけではありません。私の提案は、バイナリコードの部分的作成からテキストコードが書かれる部分にテンプレートの使用を移動することです。この手法を「疑似テンプレート法」と呼びましょう。言語テンプレートと比較するとメリット、デメリットがあります。ファイル移動の余計な操作が必要なのはデメリットです。言語基準に縛られず柔軟なことはメリットの一つです。言葉から行動に移ります。疑似テンプレートを使用するのに必要なことは、プロセッサの類似体です。そのため、スクリプト「テンプレート」を使用します。スクリプトに対する一般的要件があります。スクリプトは指定のファイル(データストラクチャを持つ)を読むこと。テンプレートをみつけ指定タイプに置き換えることす。ここで一言必要なようです。テンプレートの代わりにオーバーライドメカニズムを利用しようとしているので。コードはオーバーライドされるタイプ数だけ書かれることとなります。要するに、代用は分析に与えられるコードすべてを処理するのです。よって、コードはスクリプトによって複数回書かれ、毎回新規代用が作成されるのです。「機械による手動作業」スローガンを思い出します。要求されるインプット変数を決めます。nameコードの一部だけにスクリプトを繰り返すには、マーカー名を設定します。マーケット開始は処理開始を指示し、終了マーカーは終了を指示します。スクリプト使用中、マーカー読み取り問題に直面しました。分析中に発見したことは、MetaEditorでドキュメントをフォーマットする際、スペースまたは表作成(状況による)がコメント行に追加されるということがよく起こります。マーカー決定時に特定のシンボルの前後にあるスペースを削除することで問題は解決しました。この機能はスクリプトで自動として認識されますが、そこにはリマークがあります。マーカー名はスペースで始まったり終わったりしません。終了マーカーは必ずしも必要ではありません。それがなければコードはファイルの最後まで処理されます。開始マーカーは必ず必要です。プロセッサ命令を使います。text)を作成しました。配列に書き込むのです。スクリプトがファイル名およびマーカー名を受け取ると、ファイルを読み始めます。ドキュメントのフォーマットを保存するために、配列で見つけた行を保存しながらスクリプトは情報行を一行ずつよにます。すべてを一つの変数としてフラッシュすることも可能ですが、今回の場合は、ハイフンを失い、テキストは無限行となってしまいます。ファイル読み取り関数が新規ストリングを取得する反復における細部を変更するストリング配列を使用するのはそのためです。それにより編集済みファイルを閉じなくてもスクリプトを開始することができます。'mqh'として指定されます。よって、スクリプトはインクルードファイルに格納されたコードのテキストを直接読みます。拡張子を伴うファイルがテキストファイルであるということです。ファイルを開けば確認できます。読み込みの最後では、配列長は開始および終了マーカー間の行数に等しくなります。しないと最初のファイルは上書きされ、。すべての情報は失われます。ここからは情報分析に入ります。count)に書き込む関数から呼ばれます。コメントは関数内部に入れます。}データがその場所で置き換えられ、変換後配列は変更されるので、コピーに連携します。例に従って書き込みをします。使用するテンプレート代用を処理します。関数のパラメータは以下です。処理される配列(ここでテンプレート代用が行われます。(タイプ配列内をナビゲートします。)ここではネストサイクルが2つあるため、ソースコードは指定タイプの数だけコードが印刷されます。StringReplac()を呼びます。関数名が基本関数StringReplaceの名前に似ているのには理由があります。それらもまた同数のパラメータ数を持つのです。よって、一文字"e"を追加することで、置き換えのロジック全体を変更することが可能です。例の値を取り、それを指定のストリング「置換」と置き換えます。言葉の一部であるかチェックします。置き換えますが、前記の場合ではいずれにしてもそのように置き換わります。タイプ設定以外にもオーバーライドされたデータ名として使用することができます。使用中に追加された改善点についてお話します。スクリプト使用中にマーカー読み出し問題があることはすでにお話しました。内部に次のコードを書くことで解決されます。使用する表作シンボルの成切り捨ては強化版のみにあります。拡張子を外し、アウトプットファイルを使える状態にしたことも改善点の一つです。それは指定ストリングから指定された例の関数を削除することで実装されます。count)にあります。templateまた、プレテンプレートの準備を行うモードも紹介されています。なければ、プレテンプレートファイルとして作成されます。flagnewによって保護されています。スクリプト使用中、テンプレートを一つ追加しました。第二テンプレートへの連携処理も同じです。新規テンプレートに連携するパスはbeatenです。いうわけで、好きなだけテンプレートを連携することができます。操作確認まず、要求されるパラメータを指定することからスクリプトを始めます。表示されるウィンドウで、ファイル名「テンプレート例」を指定します。使って、データのカスタムタイプフィールドに書き込みます。ボタンが押されるとすぐ、テンプレートディレクトリが作成されます。templat.mqh"が含まれます。このイベントはメッセージ付きでジャーナルに表示されます。プレテンプレートを変更し、スクリプトを再び開始します。今回、ファイルはテンプレートディレクトリにすでに存在します(ディレクトリ自体とともに)。よって、ファイルオープンのエラーメッセージは表示されまん。指定のテンプレートに従い置換が行われます。ValueSTRING;ご覧のとおり、パラメータとして渡したタイプ数に応じ、1行から4行が作成されます。次にテンプレートファイルに以下の2行を書きます。Type_XXX_;//this_is_the_end_point結果として、明確にスクリプト操作ロジックが表示されます。コード全体は一つのデータタイプで書かれ、それから別タイプの処理が行われます。これはすべてのデータタイプが処理されるまで行われます。TypeSTRING;そして例のテキスト内に二番目のテンプレートをインクルードします。ind){return((string)ind);};最後の例では、わざと最終行のあとにスペースを入れました。そのスペースはスクリプトが一タイプ処理を終え、別のタイプ処理を始める箇所を表しています。二番目のテンプレートに関して、タイプ処理は最初のテンプレート同様に行われることに留意します。同じタイプが最初のテンプレートになければ、なにも印刷されません。コードデバッグの疑問を解決したいと思います。挙げられているのはデバッグの極簡単な例です。プログラミング中、コードのかなりおおきな部分をデバッグし、それがおわるとすぐに掛け合わせる必要があるかもしれません。それにはプリテンプレートにコメント行が保持されています。このコメントを移動させれば、テンプレートは実タイプとなります。要するに、コンパイラに対してテンプレートをどのように解釈するか伝えるのです。残念ながら、この方法ですべてをデバッグするわけにはいきません。変更することができます。いうことは全タイプを一つずつデバッグすることは可能です。デバッグには呼ばれたファイルのディレクトリまたはインクルードディレクトリにファイルを移動する必要があります。これは以前、疑似テンプレートのデメリットをお話したとき申し上げたデバッグの欠点です。おわりに結論として申し上げたいのは、疑似テンプレート使用は考え方として面白く、生産性のあるものですが、実装の小さな開始についての考えにしかすぎません。前述のコードは動作しているし、コードを書く上でかなりの時間を節約しましたが、また多くの疑問は未解決のままです。最初に、標準を開発する疑問です。私のスクリプトはテンプレート置換ブロックを実装しています。この手法は必ずしも必要なものではありません。特定ルールを解釈するもっと複雑な分析手法も作成することができます。ここでお話したことはまたまだはじまりです。大きな議論を期待しています。指向はコンフリクトを呼びます。Ltd.が保有していますこれらのマテリアルの全部または一部のコピーや再プリントは禁じられています。Correlationの統計データを基にしたシグナルのフィルタリング過去の価格変動と将来のトレンドの間に関連はあるのでしょうか?前日の値動き特性が本日繰り返されるのはなぜでしょうか?価格変動予想に統計は有用でしょうか?答えはあり、それはポジティブなものです。お疑いならこの記事はそんな方向けです。MQL5のシステムでトレーディングシステム向けの作業フィルター作成方法をお話します。それは価格変動の興味深いパターンを表します。本稿では、インディケータメソッドの計算アルゴリズムの最適化を取り上げます。みなさんはご自身のニーズにもっとも合うメソッドをお探しのことと思います。本稿では3種類の手法について述べます。その一つはきわめて簡単なものです。次のひとつはしっかりした数学の知識が必要です。最後のひとつには多少のウィットが必要です。ターミナルのデザイン的特性を利用します。その手法はかなり汎用的で直線回帰計算だけでなくその他のインディケータに対しても使用可能です。異なることですべての構成要素を直接考慮するのは困難です。念入りに作られた回帰モデルを基にしたマーケット価格予測について述べます。ENCOGへの連携をご紹介します。これは発展したニューラルネットワークとマシン学習のフレームワークです。DLL、トレーニングされたネットワークはすべて添付があります。