ニューラルネットワークと取引。パート2:DIYキット

では最後の記事、私は本当の市場でのニューラルネットワークからのトレンド予測を取得するために管理方法を説明しました。その記事は興味をそそりましたが、「証拠はどこにあるのか」という質問が判明しました。答えはありません。確かに、取引におけるニューラルネットワークのトピックは多く議論されており、出版物があり、専門家フォーラムの支部はそれに専念しています。しかし、どれだけトピックに没頭しても、専門家とどれだけコミュニケーションをとっても、これはある種のとらえどころのない幻想であるという印象が残ります。実際に機能しているものはなく、リモートであっても、ニューラルネットワークと価格変動予測を実際に接続できるものはありません。したがって、価格の動きは原則として予測できないというコミュニティの十分に根拠のある意見であり、この話はすべて何についてでもありません。



私は、これらの疑問を完全に払拭し、「予測できるかどうか」の領域から「良いか悪いかを予測する」領域に議論を移すことを提案します。そして、私たちはそれをシンプル、迅速、そして視覚的な方法で行います。私は既製のツールを提供し、誰もが自分のコンピューターで結果を得ることができます。無料のプロジェクトGoogleColaboratoryがこれを支援してくれます。これは共同開発のためのオープンプラットフォームであり、すべての計算はGoogleサーバーで行われ、すべての対話はブラウザーを介して行われ、登録は必要ありません。



私たちの仕事のコードは開いており、すでにGoogleColabにロードされています。それぞれのニューラルネットワークをトレーニングした結果は個別になります。これは、初期の重みがランダムに分散され、結果がわずかに異なるためです。また、見積もりの​​履歴は非常にノイズの多いデータであるため、トレーニングの品質は低くなりますが、ニューラルネットワークがどのように予測するかを確認するには十分であることに注意してください。予測は、ほぼ適切な指標のレベルである必要があります。



パスを短縮する唯一の場所は、トレーディングペアの履歴に関するデータを収集することです。収集はMetaTrader5のアプリケーションによって実行されます。プロセスは複雑ではありませんが、MetaTrader5のテスターを操作するスキルが必要です。詳細な手順は別の記事につながるため、ユーロ/ドルのペアについて事前に準備されたデータを使用します(MT5を使用する場合は、エキスパートへのリンクは記事の最後にあります)。実際の市場でのテストに移るとき、事前に準備されたデータが「先読み」せず、最終段階でニューラルネットワークを示唆しないことを確認することが可能になります。



はじめましょう ...



GoogleColaboratory



GoogleColabの「ラップトップ」はこのリンクにあります。最初にGoogle(またはGmail)アカウントにログインすることを忘れないでください。



「ラップトップ」を自分にコピーします。



画像



次に、すべてのブロックを上から下に順番に実行する必要があります。



1.ライブラリのインストール



この手順では、TensorFlowおよびその他のライブラリをインストールします。プロセスは自動的に終了します。何もする必要はありません。



画像



2.トレーニング用のデータのロードと準備



この段階で、データセットがロードされ、トレーニングとテスト用の個別のデータセットが準備されます。データセットは、2015年の初めから現在までの期間のEURUSDペアについて収集されました。データ収集ステップは、M6キャンドルスティックです。過去2週間-テストサイト。データセット内のデータは数十万行のセットであり、各行は次のようなものです。



0.32,0.26,0.00,0.43 ... 0.66,0.25,0.24,0.05,0,1,1600144440,1.189240


予測子はコンマで区切られ、最後からフィールド3と4が、トレンドが進んだ場所(0.1-下; 1.0-上)の正解です。最後から2番目のフィールドはローソク足IDです。最後はろうそくの開封時の価格です。最後の2つのフィールドは、トレーニングには使用されません。



3.モデルのトレーニングとテスト



最初の起動時にデフォルトのニューラルネットワーク設定のままにします。トレーニングは、許容できる結果が得られるまで5パスで行われます。トレーニングが成功すると、次のような表が表示されます。



+------------+---------+----------+-------------+------------+
|   |  |  |  (%) |  (%) 
+------------+---------+----------+-------------+------------+
|     0      |   7174  |   7173   |      50     |   100.0    |
|     2      |   6956  |   6731   |      50     |    95.4    |
|     4      |   6430  |   6224   |      50     |    88.2    |
|     6      |   5867  |   5630   |      51     |    80.1    |
|     8      |   5250  |   5065   |      50     |    71.9    |
|     10     |   4636  |   4450   |      51     |    63.3    |
|     12     |   3964  |   3772   |      51     |    53.9    |
|     14     |   3330  |   3152   |      51     |    45.2    |
|     16     |   2758  |   2539   |      52     |    36.9    |
|     18     |   2198  |   2012   |      52     |    29.3    |
|     20     |   1700  |   1544   |      52     |    22.6    |
|     22     |   1298  |   1167   |      52     |    17.2    |
|     24     |   958   |   825    |      53     |    12.4    |
|     26     |   699   |   517    |      57     |    8.5     |
|     28     |   446   |   278    |      61     |    5.0     |
|     30     |   246   |   127    |      65     |    2.6     |
+------------+---------+----------+-------------+------------+


ニューラルネットワークの応答は、[0 1]が「ダウン」、[10]が「アップ」のバイナリ分類です。しかし、ニューラルネットワークは整数値で応答することはありません。その応答は、「信頼度」の程度に応じて、[0.40.6]タイプになる可能性があります。この応答では、ニューラルネットワークは価格が下がると信じていますが、あまり自信がありません。応答[0.1 0.9]でも下がっていますが、はるかに自信があります。これは、実際の応答の配列がどのように見えるかです。



[[0.5084921  0.49150783]
 [0.3930727  0.6069273 ]
 [0.4930727  0.50692725]
 ...
 [0.5189831  0.48101687]
 [0.27955987 0.7204401 ]
 [0.476914   0.5230861 ]]


「ネットワーク応答」テーブルフィールドは、このバイナリ応答内の差に100を掛けたものです。明らかに、この差は、予測におけるネットワークの「信頼性」を特徴づけます。その結果、100を掛けた後、0〜100の範囲の値が得られます。これで、すべての回答を取得できるわけではなく、ニューラルネットワークが重要な「信頼性」を持っているもののみを選択できます。回答が予測結果にどの程度影響するかを理解するために、この「信頼性」のさまざまなレベルで、テストセクションの予測が正しいかどうかがチェックされます。表の各行は、ネットワーク応答の新しいより高い値のチェックです。ネットワーク応答フィルターが高いほど、応答は少なくなりますが、優れています。これは、「勝った」フィールドと「負けた」フィールドで確認できます。応答(信号)がすべてのテストデータの1%未満になると、プロセスは停止します。



ネットワークが1回のパスでトレーニングされていない場合は、このブロックを再起動するだけです(データをリロードする必要はありません)。



4.トレーディングチャートの結果



このブロックを実行します。ここではすべてが明らかです。テストセットのトレーディングペアのチャートでは、ニューラルネットワーク信号が緑が上、赤が下に描かれています。



画像



5.実際の市場でのテスト



このチェック中に、ニューラルネットワークのデータが読み込まれます。このデータは、新しいキャンドルがリアルタイムで追加されるときに作成されます。それら。受信したデータの最後の部分は、ローソク足の開口部、この場合はゼロローソク足M6で作成されました。もちろん、これらのデータには正解は含まれていません。ネットワークは実際の予測を行うように求められています。印刷(データ)行のコメントを解除し、入力時としばらくして特定の行の値を比較することで、データが履歴に移動するときにデータが変更されないようにすることができます。



def get_from_ennro(symbol, tfm, dim, lim):
    ...
    # print(data)
    ...


実際の市場には信号がない可能性があります。これは、揮発性がテスト領域よりも小さい場合に発生します。この場合、ニューラルネットワークはエントリポイントを認識しません。



結論



はい!予測の質は、ポジションを開くのに適していません。しかし、私たちはそのようなタスクを設定しませんでした。主なことは、ニューラルネットワークがチャート上の何かを学習して認識し、傾向を推測し、その予測が明らかに無秩序ではないということです。最も単純なニューラルネットワーク構成を使用したことに注意してください-2層のSequentialDenseで、トレーニングには10エポックしかありません。さらなる発展の余地があります。



予測を定性的に改善する解決策はすでにありますが、それらについては次の記事で説明します。



PS MetaTrader5の任意のペアのデータを自分で収集して準備したい場合はここ読んここに記載されているGoogleColabを使用してください



All Articles