そもそも論を知る必要がある
昨今、ご質問に多いのがAIを使ったEAに関してのものです。
そもそもAIとは?EAとは?
などの基礎知識があまり無い状態で状態で、
「AIが搭載されているEA」
と聞くとなにかすごいEAに聞こえるかもしれませんが、多少知識がある人からすると、
壮大なギャクに聞こえます。
ではなぜ、ギャクに聞こえるのかを出来るだけ専門用語を使わず、EAとAIも交えながら解説出来たら思います。
この記事を読むメリットとしては今後、
AI×EA
の文言を見た時に、違和感を感じてもらえるようになってもらえると思います。
簡単に解説、AIとはなに?
AI(エーアイ)、または人工知能(Artificial Intelligence)とは、コンピューターシステムが人間のような知能を模倣してタスクを実行する能力です。
これには
学習(情報の取得と規則のための使用)、
推論(規則を使用して論理的な結論に達する)、
自己修正、知覚、問題解決などが含まれます。
ただこれらから説明するのは2023年10月以降のAIについてです。
というのも、AI の歴史は 1950 年に遡ります。
イギリスの数学者アラン・チューリングが発表した「Computing Machinery and Intelligence(計算する機械と知性)」という論文内で、機械が人間と同等の知能を持つことが可能かを試すための「チューリングテスト」を提唱したことが始まりと言われています。
このチューリングさんですが映画、
イミテーション・ゲーム/エニグマと天才数学者の秘密
のモデルとなった人です。
お勧めの映画なのでぜひ!
さて話を戻すと、この記事で取り上げるAIとは上記の
学習(情報の取得と規則のための使用)、
推論(規則を使用して論理的な結論に達する)、
自己修正、知覚、問題解決などが含まれます。
これらを取り入れたものとします。
簡単に解説、EAとはなに?
EA、またはエキスパートアドバイザー(Expert Advisor)は、取引プラットフォームにおける自動取引プログラムの一種です。
MT4(MetaTrader 4)やMT5(MetaTrader 5)などのプラットフォームで使用されるものを指します。
これらの自動取引プログラムは、
予め設定されたパラメーターや条件に基づいて、取引の開始、管理、終了を自動的に行うものです。
EAを開発するには、通常、MetaQuotes Language 4 (MQL4) または MetaQuotes Language 5 (MQL5) と呼ばれるプログラミング言語の知識が必要です。
開発の難しさ
まずお伝えしたいのが、
MT4のEAにAIや機械学習の機能を組み込むことは
一応可能だとは思います。
ただそのプロセスは複雑であり、通常のEAの開発や運用よりも高度な知識と技術に加え手間が求められます。
少し専門用語も入りますが、以下にその理由と可能なアプローチについての説明します。
まずはリソースの制限があります。
大前提として、MT4は機械学習モデルのトレーニングに必要な計算リソースを十分に持っていません。
そのため、AIや機械学習モデルを取りいれるためには、外部の強力なサーバーやクラウドベースのプラットフォームなどでトレーニングする必要があります。
ただそんなことをするようならEAではなく、最初から別の言語を使いトレーディングシステムを作る方が
速いし早いです。
次にデータの管理と処理の問題!
機械学習アルゴリズムのトレーニングには大量のデータが必要です。
このデータは整理、前処理、そして場合によっては外部からの追加データが必要になることもあります。
とてもじゃないですが、そう考えるとEAを作る時に使用するMETAエディターでAI開発しようとは思いません。
※METAエディターはMT4を起ち上げると上部にボタンがありますので、そこから開くことが出来ます。
したがってプログラム初心者でもすぐに開発することを始められます。
モデルの統合をする必要がある
トレーニングされたモデルをEAに統合するためには、通常、APIを通じて外部サーバーと通信するか、予測を生成するための固定パラメーターをEAに直接組み込む必要があります。
これも重複しますが、それをわざわざMT4 or MT5でやる必要はないと考えるのが普通です。
APIを通じて外部サーバーと通信と書くとちょっと分かり難いと思うので別の表現で例えます。
まずAPIは、コンピューター同士がおしゃべりする方法と考えて下さい。
そして例えると、あなたのスマホが外の大きなコンピューター(サーバー)に「情報ください!」とメッセージを送ると、サーバーは必要な情報をスマホに送り返します。
これで、ゲームやアプリが新しいデータを受け取ったり、面白い機能を使えるようになります。
ようはMT4だけでAIモデルのトレーディングシステムを構築することは不可能なので、その他のコンピューターも必要となると考えてもられば理解しやすいと思います。
継続的な学習と最適化が出来ない
市場環境は絶えず変化するため、最高のパフォーマンスを維持するには、AIモデルを定期的に再トレーニングし、新しい市場データや情報に適応させる必要があります。
恐らく多くの方はここにAIトレーディングシステムの魅力を感じていると思います。
しかしそもそもを考えると、EAはそのようには設計されていません。
ここでお伝えしたいので、EAとAIではフィールドが違うということです。
最初の部分に戻りますがAIは
学習(情報の取得と規則のための使用)、
推論(規則を使用して論理的な結論に達する)、
自己修正、知覚、問題解決などが含まれます。
が得意です。
一方、EAもお伝えした通り、
予め設定されたパラメーターや条件に基づいて、取引の開始、管理、終了を自動的に行うものです。
したがって、AIに我々が求める、
学習、推論、自己修正、知覚、問題解決などはEAがすごく苦手な分野になります。
まとめてみる
冒頭お伝えした
壮大なギャクに聞こえます。
の部分ですが、
せっかくEAがもっている得意分野があるにも関わらず、
不得意とするAI処理をやらせる必要があるのかと考えると疑問しか残りません。
営業で日本一だった人に経理部長の仕事はさせません。
簿記で1級取った人に、営業部長の仕事をさせません。
なので、
「AIが搭載されているEA」
といわれると、
「ネコにドッグフードを与える人」
「太陽に懐中電灯を照らす人」
「子供たちにエレベーターで階段の昇り方を教える先生」
のような滑稽な姿しか想像が出来ません。
結果
壮大なギャクに聞こえます。
編集後記
AI×EAの質問は今後も増えると思って、私が知っている内容を殴り書きしましたが、やはり説明が難しいと感じました。
ただもうちょっと説明したいという感じもするので、補足程度で追加でかいてみたいと思います。
ただ、内容は非常に面白くないものとなりますので、関心がある方は流し見程度で良いので確認してみて下さい。
どんな知識が必要か??
仮にAIを用いたトレーディングシステムを開発する場合はどんなプログラミング言語が適しているのかという点と、いくつかの提案を思いつく感じで書きだしてみます。
もちろん、プロジェクトの要件によって最適な選択が変わる場合があります。
あくまでも私が知る限りの情報と一般的に考えられるものとなります。
Python (パイソン)
これはおそらく最も人気のある選択です。Pythonは、そのシンプルさとコードの読みやすさで知られています。また、Pandas、NumPy、SciPy、Scikit-learn、TensorFlow、Kerasなどのデータ分析、機械学習、深層学習に関連する多くのライブラリやフレームワークが利用可能です。
R言語
Rは統計分析とデータモデリングに非常に適しています。金融業界特有のニーズに対応する豊富なパッケージを提供しているため、特に複雑な統計的手法を取り入れたい場合に適しています。
Java/C++
高いパフォーマンスと低レベルのシステムコントロールが必要な場合、JavaやC++がよく使用されます。
これらの言語は、リアルタイムシステムでの高速な処理と、ハードウェアへの直接的なアクセスが必要な場合に適しています。
※MQL4はC++をベースに開発された言語です。
JavaScript/TypeScript
これらの言語は、ユーザーインターフェースの作成に特に有用です。
トレーディングシステムがウェブベースのプラットフォームを使用する場合、これらの言語はフロントエンド開発に広く用いられています。
今回紹介するもの中では取得が一番簡単だと思います。
MATLAB(マトラボ)
特にプロトタイピング段階で、MATLABは複雑な数学的計算を必要とするアルゴリズムの迅速な開発に役立ちますが、商用環境ではライセンス費用が高くなることがあります。
しかしMATLABは産業界での長年の実績もあり、AIアプリケーションの開発でも名前が上がると思います。
さて以上が、
パッと出てくるものですが、選択するプログラミング言語は、プロジェクトの要件とチームの既存のスキルに基づいて決定されるので言い切ることは難しいですが、一応候補を出してみました。
ただ多くの場合、Pythonかなと??
というのもそのバランスと広範なライブラリサポートにより、この種のプロジェクトに非常に適していると個人的には思ってます。
編集後記:これだけじゃ終わらない
トレーディングシステムを開発する際には、当然ですがデータベースに関する知識も非常に重要です。トレーディングシステムは通常、取引データ、価格データ、ファンダメンタルズデータ、ユーザー情報、リアルタイムフィード、歴史データなど、大量のデータを迅速に処理し、保存する必要があります。
以下に、関連する主要なポイントを挙げます。
リレーショナルデータベース(RDBMS)
MySQL, PostgreSQL, Oracle, または Microsoft SQL Serverなどのリレーショナルデータベースは、整理されたデータ構造と強力なトランザクション整合性が必要な場合に使用されます。
これらは複雑なクエリが可能で、一貫したデータ構造を維持します。
時系列データベース
これらのデータベースは、時系列データ(価格、取引量など)の追跡に最適化されており、InfluxDBやKdb+などが該当します。
これらは金融市場のデータを効率的に保存し、クエリするために設計されています。
その他、NoSQLデータベース、データウェアハウス、データレイク、キャッシングなどのキーワードも上がってきます。
重複しますが、これらの技術は、データの種類、アプリケーションの要件、チームのスキルセット、予算などに応じて選択されます。
また、データセキュリティ、バックアップ戦略、データの可用性と耐久性も重要な考慮事項です。
データ管理と分析のための適切なツールと技術を選択することは、トレーディングシステムのパフォーマンスと信頼性に直接影響を与えるため、この分野の知識は不可欠です。
編集後記:まとめ
長々書いてすみませんでした。
この記事が少しでもお役に立てれば幸いです。
M(__)M