Eye関数の働き・役割
Eye関数は、行と列を持つ四角い表(=行列)を作るための関数です。この表のうち、指定された対角線(右上から左下へ斜めに並ぶ線)にだけ1が入って、その他の部分にはすべて0が入るように設定されます。
たとえば、3行3列の行列を作るとき、主対角線(中央の対角線)にだけ1が入り、その他の場所はすべて0になります。このような行列は、数値の計算や並べ替えなどを行うときに便利です。行列のサイズや1が入る対角線の位置も自由に設定できるため、いろいろな形の行列を作ることができます。
例えば、3行3列の表を作る場合、次のような形になります。
1 0 0
0 1 0
0 0 1
斜めの線にだけ1が入っていて、他は全部0です。表の大きさや、1が入る場所も指定できるので、いろいろな形の表を作るときに使います。
Eye関数の引数について
matrix::Eye関数は、次の3つの引数を受け取ります。
1つ目の引数は、rowsで、行列の「行」の数を指定します。この値が大きいほど、縦に長い行列が生成されます。
2つ目の引数は、colsで、行列の「列」の数を指定します。この値が大きいほど、横に広い行列が生成されます。
3つ目の引数は、ndiagで、1を入れる「対角線」の位置を指定します。初期値は0で、この場合は主対角線(左上から右下に続く線)に1が配置されます。1以上の値を指定するとその数だけ上側の対角線に、負の値を指定するとその数だけ下側の対角線に1が配置されます。
Eye関数の戻り値について
matrix::Eye関数を使うと、指定した場所に1が入って、その他の部分がすべて0の四角い表(行列)が作られます。たとえば、主対角線(左上から右下に続く斜めの線)に1を並べた場合、「単位行列(対角線に1が並ぶ特別な行列)」が作られます。
もし、1が入る場所を少し上や下の対角線にしたいときは、数字を使って指定することで、好きな位置の対角線に1を並べた行列を作ることができます。このような行列は、いろいろな計算やデータの並べ替えに役立ちます。
Eye関数を使ったサンプルコード
// matrix::Eye関数を使ったサンプルコードです
// OnStart関数は、スクリプトが開始されると自動的に呼び出される関数です
void OnStart()
{
// matrix::Eye関数を使って3行3列の行列を作成し、変数eye_matrixに代入します
// この行列は主対角線(左上から右下に続く斜めの線)にだけ1が入り、他はすべて0になります
matrix eye_matrix = matrix::Eye(3, 3);
// Print関数を使って、作成した行列をエキスパートログに表示します
// "eye_matrix = \n"は、表示する文字列で、\nは改行を意味します
// ここでの改行は、行列が見やすくなるようにしています
Print("eye_matrix = \n", eye_matrix);
// 次に、matrix::Eye関数を使って4行4列の行列を作成し、変数eye_matrix_k1に代入します
// この行列は主対角線ではなく、1つ上の対角線に1が並び、他はすべて0になります
// 第3引数の1は、1つ上の対角線を指定するためのものです
matrix eye_matrix_k1 = matrix::Eye(4, 4, 1);
// Print関数を使って、作成したeye_matrix_k1行列もエキスパートログに表示します
// これにより、1つ上の対角線に1が配置された行列が確認できます
Print("eye_matrix_k1 = \n", eye_matrix_k1);
}
サンプルコードの解説
void OnStart関数
OnStart関数はスクリプトを実行すると自動的に呼び出され、プログラムの内容を一度だけ実行します。
voidについて
voidは、関数が何も戻り値を返さないことを意味します。この場合、結果や値を返すのではなく、表示やデータ処理を行います。
matrix eye_matrix = matrix::Eye(3, 3);
この行では、「eye_matrix」という名前の変数を作成し、3行3列の行列を作成して代入しています。
matrixについて
matrixはデータ型を指定しています。ここでは数値を並べて保存できる「行列」という型を指定しています。
eye_matrixについて
eye_matrixは変数の名前で、このコード内で作成した行列を入れておくための箱として使います。
matrix::Eye関数について
matrix::Eye関数は、3行3列の行列を作成します。この行列は、左上から右下に続く対角線(主対角線)にだけ1が入り、その他の部分はすべて0になります。
Print関数による出力
ここでは、作成した行列eye_matrixの内容をエキスパートログに出力しています。
Print関数について
Print関数は、指定した内容をエキスパートログに表示するための関数です。この関数を使って、作成した行列がどのような形になっているかを確認できます。
表示内容について
eye_matrix = \nは、表示する文字列です。表示する内容のラベルとしてeye_matrix = と書いており、\nは「改行」を表します。この改行によって、行列が次の行から表示されるようになります。
matrix eye_matrix_k1 = matrix::Eye(4, 4, 1);
この行では、4行4列の行列を作成し、eye_matrix_k1という変数に代入しています。この行列は、1つ上の対角線にだけ1が入り、その他の部分は0になります。
matrix eye_matrix_k1について
matrix eye_matrix_k1は、4行4列の行列を入れる変数を定義しています。
matrix::Eye関数(第3引数指定)について
matrix::Eye関数では、4行4列の行列を作成し、1という値で1つ上の対角線に1を入れるように指定しています。対角線の位置を指定するこの1の引数があることで、主対角線以外の位置にも1を配置できます。
Print関数によるeye_matrix_k1の出力
最後の行では、作成した新しい行列eye_matrix_k1の内容をエキスパートログに表示しています。
Print関数の使い方
Print関数でeye_matrix_k1行列の内容を確認しています。これにより、上の対角線に1が配置された行列が表示されます。
eye_matrix_k1 = \nについて
eye_matrix_k1 = \nと改行コードで、表示する内容のラベルをつけ、行列が見やすくなるようにしています。
基本的な文法の説明
変数について
変数は、データを保存するための「名前のついた箱」のようなものです。ここでは、eye_matrixやeye_matrix_k1が変数で、作成した行列を保存しています。
関数について
関数は、ある処理をまとめたもので、ここではmatrix::Eye関数やPrint関数が登場します。それぞれ、行列の作成や内容の表示のために使われています。
引数について
引数は関数に渡す具体的な値やデータのことです。matrix::Eye関数で(3, 3)と指定すると行と列の数を意味し、matrix::Eye関数で(4, 4, 1)と指定すると行列のサイズに加えて対角線の位置を指定しています。
このサンプルコードを通して、matrix::Eye関数を使って異なる対角線に1が並ぶ行列を生成し、その内容を確認する方法を学べます。各行とエキスパートログの結果を見ることで、行列がどのように作成されるかが視覚的に理解できます。
Eye関数を使ってEAを作る際のアイディア
matrix::Eye関数を使うことで、特定の対角線にだけ1を持つ対角行列(対角にのみ値が入った行列)を簡単に作成できるため、エキスパートアドバイザー(EA)を作る際にさまざまな応用が考えられます。以下にいくつかのアイディアを示します。
数値のフィルタリングに基づくトレードシグナル生成
matrix::Eye関数で作成した対角行列(対角にのみ値が入った行列)を数値データに適用し、特定のシグナルやパターンに基づいてトレードの判断を行うことができます。例えば、価格データやインジケータの数値に対して、特定の値だけを抽出するフィルタとして対角行列を用い、異なる条件でトレードの判断を行うEAを開発できます。
時系列データの変換や前処理
matrix::Eye関数を使って、価格データやインジケータのデータに対して対角線の数値を抽出し、トレンドやサポート・レジスタンスを特定する際の計算を効率化できます。例えば、各時点のデータを使い、特定のパターンが見られるときのみエントリー・エグジットを行うEAを作成できます。
リスク管理用の行列ベースのシミュレーション
matrix::Eye関数で作成した対角行列(対角にのみ値が入った行列)に、ポジションのリスクや資金管理の基準となる数値を埋め込むことで、取引におけるリスクとリターンを効率よくシミュレーションできます。たとえば、対角線にリスク管理基準値を設定し、それに基づいてポジションサイズを調整するEAを開発することが可能です。
機械学習モデルでの特徴量作成
対角行列(対角にのみ値が入った行列)の対角に特定の数値を設定し、価格データやインジケータのパラメータを分析するための特徴量(データの要素)として活用することもできます。EAに機械学習を取り入れる際、matrix::Eye関数を使って単位行列を作成し、計算の基礎として利用できます。
ヒートマップ表示の簡略化
matrix::Eye関数で作成した対角行列(対角にのみ値が入った行列)をヒートマップ表示に活用し、特定の時間や価格でのトレードパターンを視覚化できます。例えば、ヒートマップ上で特定の対角線に関する情報が重要であれば、その箇所を強調することでトレードの方向性を見極める補助として使えます。
これらのアイディアは、matrix::Eye関数を使ってシンプルに行列を生成するだけでなく、トレード判断やデータ処理に活用することで、EAの機能をさらに豊かにするために役立ちます。