MQL5における取引へのコンピュータビジョンの統合(第2回):アーキテクチャを2D RGB画像解析に拡張する
はじめに:数値が生命を持つとき
第一回では、畳み込みニューラルネットワーク(CNN)が一次元フィルタを通じて為替レートの時系列を解析する方法を示しました。今回は大きな飛躍を遂げます。アルゴリズムに市場を、テクスチャやパターン、隠れたシグナルに満ちた一つの風景として認識させます。
数値系列を画像へ変換することで、アルゴリズムは市場を全く新しい視点から分析できるようになります。これは熟練トレーダーが行う思考方法そのものに近く、単なるデータ表ではなく「生きた市場の風景」として捉えます。アルゴリズムは一次元的表現を超え、数値列では見えなかった構造やパターンを明らかにします。
データの錬金術:数値から視覚的シンフォニーへ
128×128ピクセルのデジタルキャンバスは、市場ドラマが展開される舞台となります。市場の価格データはマルチチャネルのビジュアルマップへと変換されます。

赤いチャネルは価格データを表現します。これはトレーダーが追い求める中心的要素です。緑のチャネルはテクニカル指標を表現します(移動平均、MACD、ボリンジャーバンドなど、長年にわたり洗練されたツールです)。青のチャネルはオシレーターを表現します(RSI、ストキャスティクス、ボラティリティ指標など、市場の「脈動」を示す要素です)。
この変換をおこなうコードは一見すると単純ですが、その背後には市場理解を革新し得る力が存在します。
# Code snippet that converts data into an RGB image for t in range(window_size): x = int(t / window_size * img_size[1]) y = int((1 - img_data[j, t]) * img_size[0]) if 0 <= y < img_size[0] and 0 <= x < img_size[1]: img[y, x, 0] = 1.0 # Red channel for price data
データが画像へと変換されると、夜空の星々のように驚くべき形状が浮かび上がります。それは、方程式で表現するのではなく、写真の中に顔を見るようなものです。トレーダーが何年もかけて習得する、ヘッドアンドショルダー(三尊天井)、ダブルボトム、フラッグといったパターンが、アルゴリズムの前に現れ、夜明けのように明瞭なものとなります。
私たちはこれらの画像をさらに豊かにするために、ローソク足パターンを追加しました。陽線は緑色に輝き、成長への希望を示します。一方で陰線は赤く輝き、警告として機能します。ヒゲは影のように中間色で描かれ、買い手と売り手の攻防を示唆します。これによりモデルは、一般的なトレンドを捉えるだけでなく、「ハンマー」「包み足」「十字線」といった微妙なディテールも認識できるようになります。
コード上では、以下のように実装されています。
if close_y < open_y: # Bullish candle for y in range(close_y, open_y): if 0 <= y < img_size[0] and 0 <= x < img_size[1]: img[y, x, 1] = 1.0 # Green else: # Bearish candle for y in range(open_y, close_y): if 0 <= y < img_size[0] and 0 <= x < img_size[1]: img[y, x, 0] = 1.0 # Red
これらの画像は単なる可視化ではありません。まるでヒートマップのように、色の強度が市場の勢いを反映しており、各ローソク足は、強気と弱気の戦いを描いた小さな物語のようです。これは、アルゴリズムが市場を理解するための新しい言語のようなものです。
ニューラルアーキテクチャ:三重視覚を持つ人工トレーダー
人工トレーダーを構築することは、高層ビルの建築に似ています。各階層がそれぞれ独自の役割を持ち、それらが組み合わさることで壮大な構造が形成されます。このアーキテクチャは3つの並列経路で構成されており、それぞれが異なる角度から市場を観察します。1つ目の経路は短い畳み込みフィルタを用い、瞬間的な変化を捉えます。すなわち、ブレイクアウト、反転、急激な上昇や下落といった動きです。2つ目の経路はより長い畳み込みフィルタを用い、大きなトレンドを観察します。これらは川のように市場サイクルを形成します。3つ目の経路はボラティリティとモメンタムを監視し、オシレーターを分析することで、市場が静かな状態にあるのか、それとも大きく動く前兆があるのかを判断します。
このアイデアを具現化したコードは次のようになります。
local_path = Conv1D(64, 3, padding='same', activation='relu')(inputs[:,:,:,0]) trend_path = Conv1D(64, 7, padding='same', activation='relu')(inputs[:,:,:,1]) vol_path = Conv1D(64, 5, padding='same', activation='relu')(inputs[:,:,:,2])
これらの経路は最終的に一つの全体へと統合されますが、その前にアテンション機構を通過します。これは、騒音やニュース、チャートのノイズの中から本質的なシグナルだけに集中することをモデルに教える技術です。まるで、雑多な情報の中から重要な兆候だけを見抜くトレーダーのようです。『The Creativity Code』の著者マーカス・デュ・ソートイはこれを瞑想に例えて、「モデルはノイズを切り抜け、本質を見ることを学ぶ」と述べています。この現実を実現するのが次の一行のコードです。
attention_layer = Attention()([merged, merged])
しかし、これがすべてではありません。私たちは双方向LSTM層も追加しました。これはデータを前後両方向から解析する仕組みで、まるで歴史家が過去と未来のページをめくるようなものです。これにより、長期的なレンジ相場、隠れた反転、そしてブレイクアウト直前に市場が静止する瞬間といった複雑なパターンを捉えることができます。そして最後に、グローバル特徴アグリゲーション(Global Feature Aggregation)が導入されます。これは指揮者のように、すべての情報を一つの交響曲へとまとめ上げ、市場の全体像を形成します。
最終的な仕上げはマルチタスク学習です。モデルは単に価格が上がるか下がるかを判断するだけではなく、市場がどれだけ動くのかも予測します。伝説的な投資家であるピーター・リンチは、「株価が上昇すると見抜くことと、その上昇幅まで正確に予測することはまったく別の話だ」と述べています。このモデルはまさにそれを実現しており、チェスプレイヤーのように、一手だけでなくゲーム全体を見通します。
鍵穴を通して:アルゴリズムが思考を明かす方法
これを可能にするコードはシンプルですが、その背後には一つの革命が存在します。
attention = np.mean(np.abs(attention_maps[i]), axis=-1) heatmap = cv2.applyColorMap(np.uint8(255 * attention_resized), cv2.COLORMAP_JET)
この可視化は、新しい学問の始まりです。それは「ニューラル市場解析」とも呼ぶべきものです。私たちは初めてブラックボックスから予測結果を得るだけでなく、その理由を理解することができます。
さらに別の発見として、ニューロンの専門化があります。隠れ層の活性化を分析すると、一部のニューロンは急激な転換点でのみ反応し、別のものは滑らかなトレンドで、さらに別のものは嵐の前の静けさの中で活性化することが分かりました。これは人間の脳において視覚や聴覚の領域が分かれているのと似ています。
モデルは独自の市場マップを形成し、これまでのアナリストとは異なる方法で状況を分類しました。たとえば、RSIと価格の間の異常なダイバージェンスを発見し、それは後に経験豊富なトレーダーによって重要なシグナルとして確認されました。これは単なるアルゴリズムではなく、市場を見るための新しい方法です。
決定の透明性:機械が自らを説明するとき
本システムは単に予測を出すだけではなく、その予測に至った理由も説明します。モデルがどこに注目しているかを赤色で強調したグラフを描くことができ、何を見て判断しているのかを可視化できます。それはまるで、トレーダーがチャート上の重要ポイントに印を付ける思考過程を覗き見るようなものです。この可視化のコードは以下のようになります。
def plot_prediction_with_attention(data, prediction, attention_weights): plt.plot(data.index, data['close'], label='Close price', color='black', linewidth=2) for i in range(len(data.index) - 1): plt.axvspan(data.index[i], data.index[i+1], alpha=attention_weights[i] * 0.3, color='red')
このような可視化によって、モデルは謎の存在からパートナーへと変わります。トレーダーは単に「市場が上がるかどうか」だけでなく、「なぜそう判断されたのか」も理解できます。どの指標が、どのローソク足が、どの瞬間がアルゴリズムの判断を導いたのかが明らかになります。モデルはデータの中を滑るように進み、フレームごとに予測を生成します。それはまるで、市場という映画を演出する監督のようです。そこにあるのは単なる数値ではなく、動きとして語られる物語です。
imageio.mimsave(gif_path, frames, duration=0.5)

成功事例:モデルがゲームを変える方法
このモデルが実際にどのように機能するかを理解するために、シカゴの小規模なプロップトレーディングファンドで働くアンというトレーダーを想像してください。アンは長年、経験と直感に頼って取引を行ってきました。しかし市場はますます複雑化し、競争も激化していきました。このモデルを使い始めてから、彼女のアプローチは変わります。チャート分析に何時間も費やす代わりに、彼女はEURUSD上にモデルが描くアテンションヒートマップを見るようになりました。これらのマップは、市場がどこで反転しそうか、どこでトレンドが強まっているか、どこで静けさが訪れるかを示します。しかしこのモデルは、自動売買ロボットとして進化することで、アンのストレスを完全に取り除くことすら可能です。
技術的な詳細:モデルが「見る」ことを学ぶ方法
重要なステップの一つは、データ正規化においてRobustScalerを使用することでした。市場は非常に不規則で、突発的なニュースのようなショックはデータを歪める可能性があります。RobustScalerはこうした異常値の影響を無視することで、モデルの頑健性を維持します。その仕組みは次のようになっています。
scaler = RobustScaler() if window_data[indicator].std() != 0: img_data[j] = scaler.fit_transform(window_data[indicator].values.reshape(-1, 1)).flatten()
もう一つの工夫は、ガウスフィルタによる画像のぼかしです。これによりノイズが平滑化され、モデルはランダムなスパイクではなく全体的なパターンに集中できるようになります。これは、細かなノイズではなく、全体的な傾向を見るための処理です。
img = gaussian_filter1d(img, sigma=0.5, axis=0) img = gaussian_filter1d(img, sigma=0.5, axis=1)
モデルの学習はそれ自体が一つの物語です。過学習を防ぐため、また最良モデルの保存、学習率の調整のためにコールバックを使用しました。EarlyStoppingはモデルがデータを「暗記」し始めた場合に学習を停止します。ReduceLROnPlateauは進捗が停滞した際に学習ステップを減少させます。これはまるで子どもに自転車を教えるようなもので、最初は支えながら、やがて自立させていくプロセスです。
callbacks = [ EarlyStopping(monitor='val_direction_accuracy', patience=15, restore_best_weights=True, verbose=1, mode='max'), ModelCheckpoint(filepath=os.path.join(checkpoint_dir, 'best_model.keras'), monitor='val_direction_accuracy', save_best_only=True, verbose=1), ReduceLROnPlateau(monitor='val_loss', factor=0.5, patience=7, min_lr=0.00001, verbose=1) ]
学習結果のグラフは良好な傾向を示しています。テストセットの精度は大きく低下せず、小規模なエポック数でも一貫して53%以上を維持しています。

改良されたアーキテクチャはすでに有望な結果を示していますが、これはまだ始まりにすぎません。
ファンダメンタルデータの統合
現在のモデルはテクニカルデータのみに基づいて動作しています。次の論理的なステップは、経済指標、ニュースイベント、市場センチメントといったファンダメンタル要因を統合することです。これはマルチモーダル学習によって実現でき、ニュースの文脈をベクトル表現へ変換し、テクニカルデータと統合する形になります。
時間階層と市場のフラクタル構造
市場にはフラクタル的性質があり、異なる時間軸において驚くほど自己相似的なパターンが現れます。分単位から月足までの複数時間足を階層的に扱うアーキテクチャは、複雑な多層パターンを明らかにする可能性があります。
適応学習とメタラーニング
市場は常に変化しているため、モデルにも継続的な適応が求められます。将来的に有望な方向性は、市場環境の変化に応じてモデルの構造やパラメータを自動的に調整するメタラーニングシステムの開発です。
これらの詳細は単なるコードではありません。これらは、モデルが市場をより深く、あらゆるトレーダー以上に理解するための基盤です。
未来への展望:新たな地平線
このモデルは始まりに過ぎず、より大きなキャンバスに描かれる最初の一筆にすぎません。ここにニュースや経済データを追加することを想像してください。TransformerはブルームバーグのヘッドラインやFRBのレポートをベクトルへと変換し、それらをチャートや指標と統合します。利上げ決定や、イーロン・マスクによる突発的なツイートでさえ、アルゴリズムが見る「風景」の一部となります。それはまるで、トレーダーにチャートだけでなく世界全体の文脈を与えるようなものです。
市場はフラクタル構造を持ち、分足から月足まで、異なる時間スケールでパターンが繰り返されます。もしモデルにすべての時間軸を同時に観察させることができれば、人間の優れたアナリストさえ見逃すような入れ子構造のトレンドを発見できる可能性があります。たとえば、日足チャートのヘッドアンドショルダーの内部に、5分足レベルの微細なパターンが存在する状況を想像してください。それは銀河とその星々を同時に見るようなものです。
もしモデルが自ら改善できるとしたらどうでしょうか。メタラーニングは、穏やかな相場から荒れた相場までの変化に適応する能力を与えます。市場がボラティリティを増した場合、モデルは自らパラメータを調整し、嵐の中で舵を取る船長のように振る舞います。これは空想ではなく、すでに目前に迫りつつある次のステップです。
透明性もまた重要な目標です。私たちは、モデルを信頼するだけでなく、そこから学べるようにすることを目指しています。アテンションや活性化のより深い可視化は、アルゴリズムがどのように思考しているかを明らかにし、人間が市場の見方そのものを変える可能性すらあります。たとえば、モデルが誰も気づいていなかったパターンを発見し、トレーダーたちがそれを「ニューラルクロス」と呼ぶようになるかもしれません。それは単なるツールではなく、新しい思考様式となるでしょう。
MetaQuotes Ltdによってロシア語から翻訳されました。
元の記事: https://www.mql5.com/ru/articles/18103
警告: これらの資料についてのすべての権利はMetaQuotes Ltd.が保有しています。これらの資料の全部または一部の複製や再プリントは禁じられています。
この記事はサイトのユーザーによって執筆されたものであり、著者の個人的な見解を反映しています。MetaQuotes Ltdは、提示された情報の正確性や、記載されているソリューション、戦略、または推奨事項の使用によって生じたいかなる結果についても責任を負いません。
初級から中級まで:継承
ラクダアルゴリズム(CA)
エラー 146 (「トレードコンテキスト ビジー」) と、その対処方法
機械学習ベースの取引システムにおける隠れマルコフモデル
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
お馴染みの表現スタイル🤣
今日、どうやら人間の著者は自分で考えを練ることをやめてしまったようだ。
IvanIvanych, 指から「美しい」蔑称を吸い出すだけ でなく、言葉のパターンを分析するためにも使うことができる :
「この記事は、高い技術的正確性、構造化、厳しい出版期限など、AIが作成した文章の特徴を示している。プレゼンテーションの無菌的なスタイルと、アテンション・メカニズムなどの複雑な概念の使用は、資料を作成するためにニューラルネットワークが 積極的に使用されている ことを示している。"
頑張って予算をマスターしてください🖖。