MQL4とMQL5のプログラム記事

icon

取引戦略をプログラミングするためのMQL5言語を、ほとんどがコミュニティメンバーによって書かれた数多くの公開記事で学びます。記事は統合、テスター、取引戦略等のカテゴリに分けられていて、プログラミングに関連する疑問への解答を素早く見つけることができます。

新着記事をフォローして、フォーラムでディスカッションしてください。

新しい記事を追加
最新 | ベスト
preview
母集団最適化アルゴリズム:スマート頭足類(SC、Smart Cephalopod)を使用した変化する形状、確率分布の変化とテスト

母集団最適化アルゴリズム:スマート頭足類(SC、Smart Cephalopod)を使用した変化する形状、確率分布の変化とテスト

この記事では、確率分布の形状を変えることが最適化アルゴリズムの性能に与える影響について検証します。最適化問題の文脈における様々な確率分布の効率を評価するために、スマート頭足類(SC、Smart Cephalopod)テストアルゴリズムを用いた実験をおこないます。
preview
母集団最適化アルゴリズム:等方的焼きなまし(Simulated Isotropic Annealing、SIA)アルゴリズム(第2部)

母集団最適化アルゴリズム:等方的焼きなまし(Simulated Isotropic Annealing、SIA)アルゴリズム(第2部)

第1部では、よく知られた一般的なアルゴリズムである焼きなまし法について説明しました。その長所と短所を徹底的に検討しました。第2部では、アルゴリズムを抜本的に改良し、新たな最適化アルゴリズムである等方的焼きなまし(Simulated Isotropic Annealing、SIA)法を紹介します。
preview
MQL5での定量分析:有望なアルゴリズムの実装

MQL5での定量分析:有望なアルゴリズムの実装

定量分析とは何なのか、また、主要プレーヤーがどのように定量分析を使用しているのかを分析します。MQL5言語で定量分析アルゴリズムの1つを作成します。
preview
ニューラルネットワークが簡単に(第67回):過去の経験を活かした新しい課題の解決

ニューラルネットワークが簡単に(第67回):過去の経験を活かした新しい課題の解決

この記事では、訓練セットにデータを収集する方法について引き続き説明します。明らかに、学習プロセスには環境との絶え間ない相互作用が必要です。しかし、状況はさまざまです。
preview
母集団最適化アルゴリズム:焼きなまし(SA)アルゴリズム(第1部)

母集団最適化アルゴリズム:焼きなまし(SA)アルゴリズム(第1部)

焼きなましアルゴリズムは、金属の焼きなまし過程にヒントを得たメタヒューリスティックです。この記事では、このアルゴリズムを徹底的に分析し、この広く知られている最適化方法を取り巻く多くの一般的な信念や神話を暴露します。この記事の後半では、カスタムの等方的焼きなまし(Simulated Isotropic Annealing、SIA)アルゴリズムについて説明します。
preview
PythonとMQL5を使用して初めてのグラスボックスモデルを作る

PythonとMQL5を使用して初めてのグラスボックスモデルを作る

機械学習モデルの解釈は難しく、このような高度なテクニックを使用して何らかの価値を得たいのであれば、モデルが予想から外れる理由を理解することが重要です。モデルの内部構造に対する包括的な洞察がなければ、モデルのパフォーマンスを低下させるバグを発見できないことがあります。予測できない機能のエンジニアリングに時間を浪費し、長期的にはモデルのパワーを十分に活用できない危険性があります。幸いなことに、モデルの内部で何が起こっているかを正確に見ることができる、洗練され、よく整備されたオールインワンソリューションがあります。
preview
母集団最適化アルゴリズム:ネルダー–ミード法、またはシンプレックス(NM)検索法

母集団最適化アルゴリズム:ネルダー–ミード法、またはシンプレックス(NM)検索法

この記事では、ネルダー–ミード法の完全な探求を提示し、最適解を達成するために各反復でシンプレックス(関数パラメータ空間)がどのように修正され、再配置されるかを説明し、この方法がどのように改善されるかを説明します。
preview
ニューラルネットワークが簡単に(第66回):オフライン学習における探索問題

ニューラルネットワークが簡単に(第66回):オフライン学習における探索問題

モデルは、用意された訓練データセットのデータを使用してオフラインで訓練されます。一定の利点がある反面、環境に関する情報が訓練データセットのサイズに大きく圧縮されてしまうというマイナス面もあります。それが逆に、探求の可能性を狭めています。この記事では、可能な限り多様なデータで訓練データセットを埋めることができる方法について考えます。
preview
Python、ONNX、MetaTrader 5:RobustScalerとPolynomialFeaturesデータ前処理を使用したRandomForestモデルの作成

Python、ONNX、MetaTrader 5:RobustScalerとPolynomialFeaturesデータ前処理を使用したRandomForestモデルの作成

この記事では、Pythonでランダムフォレストモデルを作成し、モデルを訓練して、データ前処理をおこなったONNXパイプラインとして保存します。その後、MetaTrader 5ターミナルでモデルを使用します。
preview
ニューラルネットワークが簡単に(第65回):Distance Weighted Supervised Learning (DWSL)

ニューラルネットワークが簡単に(第65回):Distance Weighted Supervised Learning (DWSL)

この記事では、教師あり学習法と強化学習法の交差点で構築された興味深いアルゴリズムに触れます。
preview
ニューラルネットワークが簡単に(第64回):ConserWeightive Behavioral Cloning (CWBC)法

ニューラルネットワークが簡単に(第64回):ConserWeightive Behavioral Cloning (CWBC)法

以前の記事でおこなったテストの結果、訓練された戦略の最適性は、使用する訓練セットに大きく依存するという結論に達しました。この記事では、モデルを訓練するための軌道を選択するための、シンプルかつ効果的な手法を紹介します。
preview
トレーダーに優しい損切りと利食い

トレーダーに優しい損切りと利食い

損切り(ストップロス)と利食い(テイクプロフィット)は取引結果に大きな響を与えます。この記事では、最適な逆指値注文の値を見つけるためのいくつかの方法を見ていきます。
preview
Scikit-Learnライブラリの分類器モデルとONNXへの書き出し

Scikit-Learnライブラリの分類器モデルとONNXへの書き出し

この記事では、Scikit-Learnライブラリで利用可能なすべての分類器モデルを適用して、フィッシャーのIrisデータセットの分類タスクを解決する方法について説明します。これらのモデルをONNX形式に変換し、その結果得られたモデルをMQL5プログラムで利用してみます。さらに、完全なIrisデータセットで元のモデルとONNXバージョンの精度を比較します。
preview
初心者からプロまでMQL5をマスターする(第1回):プログラミングを始める

初心者からプロまでMQL5をマスターする(第1回):プログラミングを始める

この記事は、プログラミングに関する連載の紹介です。読者がこれまでプログラミングを扱ったことがないことを前提としているため、この連載は基礎から始まります。プログラミング知識レベル:全くの初心者。
preview
CatBoostモデルにおける交差検証と因果推論の基本、ONNX形式への書き出し

CatBoostモデルにおける交差検証と因果推論の基本、ONNX形式への書き出し

この記事では、機械学習を使用してボットを作成する方法を提案しています。
preview
多銘柄多期間指標の作成

多銘柄多期間指標の作成

この記事では、多銘柄、多期間の指標を作成する原則について見ていきます。また、エキスパートアドバイザー(EA)や他の指標から、このような指標のデータにアクセスする方法も紹介します。EAや指標でマルチ指標を使用する主な特徴について考察し、カスタム指標バッファを使用してそれらをプロットする方法を見ていきます。
preview
MLモデルとストラテジーテスターの統合(結論):価格予測のための回帰モデルの実装

MLモデルとストラテジーテスターの統合(結論):価格予測のための回帰モデルの実装

この記事では、決定木に基づく回帰モデルの実装について説明します。モデルは金融資産の価格を予測しなければなりません。すでにデータを準備し、モデルを訓練評価し、調整最適化しました。ただし、このモデルはあくまで研究用であり、実際の取引に使用するものではないことに留意する必要があります。
preview
ニューラルネットワークが簡単に(第63回):Unsupervised Pretraining for Decision Transformer (PDT)

ニューラルネットワークが簡単に(第63回):Unsupervised Pretraining for Decision Transformer (PDT)

引き続き、Decision Transformer法のファミリーについて説明します。前回の記事から、これらの手法のアーキテクチャの基礎となるTransformerの訓練はかなり複雑なタスクであり、訓練のために大規模なラベル付きデータセットが必要であることにすでに気づきました。この記事では、ラベル付けされていない軌跡をモデルの予備訓練に使用するアルゴリズムについて見ていきます。
preview
ニューラルネットワークが簡単に(第62回):階層モデルにおけるDecision Transformerの使用

ニューラルネットワークが簡単に(第62回):階層モデルにおけるDecision Transformerの使用

最近の記事で、Decision Transformerを使用するためのいくつかの選択肢を見てきました。この方法では、現在の状態だけでなく、以前の状態の軌跡や、その中でおこなわれた行動も分析することができます。この記事では、階層モデルにおけるこの方法の使用に焦点を当てます。
preview
ニューラルネットワークが簡単に(第61回):オフライン強化学習における楽観論の問題

ニューラルネットワークが簡単に(第61回):オフライン強化学習における楽観論の問題

オフライン訓練では、訓練サンプルデータに基づいてエージェントの方策を最適化します。その結果、エージェントは自分の行動に自信を持つことができます。しかし、そのような楽観論は必ずしも正当化されるとは限らず、模型の操作中にリスクを増大させる可能性があります。今日は、こうしたリスクを軽減するための方法の1つを紹介しましょう。
preview
ニューラルネットワークが簡単に(第60回):Online Decision Transformer (ODT)

ニューラルネットワークが簡単に(第60回):Online Decision Transformer (ODT)

最後の2つの記事は、望ましい報酬の自己回帰モデルの文脈で行動シーケンスをモデル化するDecision Transformer法に費やされました。この記事では、この方法の別の最適化アルゴリズムについて見ていきます。
preview
ニューラルネットワークが簡単に(第59回):コントロールの二分法(DoC)

ニューラルネットワークが簡単に(第59回):コントロールの二分法(DoC)

前回の記事では、Decision Transformerを紹介しました。しかし、外国為替市場の複雑な確率的環境は、提示した手法の可能性を完全に実現することを許しませんでした。今回は、確率的環境におけるアルゴリズムの性能向上を目的としたアルゴリズムを紹介します。
preview
母集団最適化アルゴリズム:差分進化(DE)

母集団最適化アルゴリズム:差分進化(DE)

この記事では、これまでに取り上げたアルゴリズムの中で最も議論の的となっているアルゴリズム、差分進化(DE)アルゴリズムについて考察します。
preview
母集団最適化アルゴリズム:Spiral Dynamics Optimization (SDO)アルゴリズム

母集団最適化アルゴリズム:Spiral Dynamics Optimization (SDO)アルゴリズム

本稿では、軟体動物の殻など自然界における螺旋軌道の構築パターンに基づく最適化アルゴリズム、Spiral Dynamics Optimization(SDO、螺旋ダイナミクス最適化)アルゴリズムを紹介します。著者らが提案したアルゴリズムを徹底的に修正し、改変しました。この記事では、こうした変更の必要性について考えてみたいと思います。
preview
母集団最適化アルゴリズム:Intelligent Water Drops (IWD)アルゴリズム

母集団最適化アルゴリズム:Intelligent Water Drops (IWD)アルゴリズム

この記事では、無生物由来の興味深いアルゴリズム、つまり川床形成プロセスをシミュレーションするIntelligent Water Drops (IWD)について考察しています。このアルゴリズムのアイデアにより、従来の格付けのリーダーであったSDSを大幅に改善することが可能になりました。いつものように、新しいリーダー(修正SDSm)は添付ファイルにあります。
preview
母集団最適化アルゴリズム:荷電系探索(Charged System Search、CSS)アルゴリズム

母集団最適化アルゴリズム:荷電系探索(Charged System Search、CSS)アルゴリズム

この記事では、無生物の自然にヒントを得た別の最適化アルゴリズムである荷電系探索(CSS)アルゴリズムについて検討します。この記事の目的は、物理学と力学の原理に基づいた新しい最適化アルゴリズムを提示することです。
preview
リプレイシステムの開発(第32回):受注システム(I)

リプレイシステムの開発(第32回):受注システム(I)

これまで開発してきたものの中で、このシステムが最も複雑であることは、おそらく皆さんもお気づきでしょうし、最終的にはご納得いただけると思います。あとは非常に単純なことですが、取引サーバーの動作をシミュレーションするシステムを作る必要があります。取引サーバーの操作方法を正確に実装する必要性は、当然のことのように思えます。少なくとも言葉ではです。ただし、リプレイ/シミュレーションシステムのユーザーにとって、すべてがシームレスで透明なものとなるようにする必要があります。
preview
リプレイシステムの開発(第31回):エキスパートアドバイザープロジェクト - C_Mouseクラス(V)

リプレイシステムの開発(第31回):エキスパートアドバイザープロジェクト - C_Mouseクラス(V)

リプレイ/シミュレーションの終了まで残り時間を表示できるタイマーが必要です。これは一見、シンプルで迅速な解決策に見えるかもしれません。多くの人は、取引サーバーが使用しているのと同じシステムを適応して使用しようとするだけです。しかし、この解決策を考えるとき、多くの人が考慮しないことがあります。リプレイでは、そしてシミュレーションではなおさら、時計の動きは異なるということです。こうしたことが、このようなシステムの構築を複雑にしています。
preview
母集団最適化アルゴリズム:Stochastic Diffusion Search (SDS)

母集団最適化アルゴリズム:Stochastic Diffusion Search (SDS)

この記事では、ランダムウォークの原理に基づく非常に強力で効率的な最適化アルゴリズムである確SDS(Stochastic Diffusion Search、確率的拡散探索)について説明します。このアルゴリズムは、複雑な多次元空間で最適解を求めることができ、収束速度が速く、局所極値を避けることができるのが特徴です。
preview
リプレイシステムの開発(第30回):エキスパートアドバイザープロジェクト - C_Mouseクラス(IV)

リプレイシステムの開発(第30回):エキスパートアドバイザープロジェクト - C_Mouseクラス(IV)

今日は、プログラマーとしての職業生活のさまざまな段階で非常に役立つテクニックを学びます。多くの場合、制限されているのはプラットフォーム自体ではなく、制限について話す人の知識です。この記事では、常識と創造性があれば、クレイジーなプログラムなどを作成することなく、MetaTrader 5 プラットフォームをより面白くて多用途にし、シンプルでありながら安全で信頼性の高いコードを作成できることを説明します。創造力を駆使して、ソース コードを1行も削除したり追加したりすることなく、既存のコードを変更します。
preview
リプレイシステムの開発(第29回):エキスパートアドバイザープロジェクト - C_Mouseクラス(III)

リプレイシステムの開発(第29回):エキスパートアドバイザープロジェクト - C_Mouseクラス(III)

C_Mouseクラスを改良した後は、分析のためのまったく新しいフレームワークを作るためのクラスを作ることに集中しましょう。この新しいクラスを作るのに、継承やポリモーフィズムは使用しません。その代わりに、価格線に新しいオブジェクトを追加します。それがこの記事でやろうとしていることです。次回は、分析結果を変更する方法について見るつもりです。これらはすべて、C_Mouseクラスのコードを変更することなくおこなわれます。実際には、継承やポリモーフィズムを使用すれば、もっと簡単に実現できるでしょう。しかし、同じ結果を得る方法は他にもあります。
preview
リプレイシステムの開発(第28回):エキスパートアドバイザープロジェクト-C_Mouseクラス(II)

リプレイシステムの開発(第28回):エキスパートアドバイザープロジェクト-C_Mouseクラス(II)

人々が初めてコンピューティングが可能なシステムを作り始めたとき、すべてには、プロジェクトを熟知しているエンジニアの参加が必要でした。コンピュータ技術の黎明期、プログラミング用の端末すらなかった時代の話です。それが発展し、より多くの人々が何かを創造できることに興味を持つようになると、新しいアイデアやプログラミングの方法が現れ、以前のようなコネクタの位置を変えるスタイルに取って変わりました。最初の端末が登場したのはこの時です。
preview
リプレイシステムの開発(第27回):エキスパートアドバイザープロジェクト-C_Mouseクラス(I)

リプレイシステムの開発(第27回):エキスパートアドバイザープロジェクト-C_Mouseクラス(I)

この記事では、C_Mouseクラスを実装します。このクラスは、最高水準でプログラミングする能力を提供します。しかし、高水準や低水準のプログラミング言語について語ることは、コードに卑猥な言葉や専門用語を含めることではありません。逆です。高水準プログラミング、低水準プログラミングというのは、他のプログラマーが理解しやすいか、しにくいかという意味です。
preview
リプレイシステムの開発(第26回):エキスパートアドバイザープロジェクト-C_Terminalクラス

リプレイシステムの開発(第26回):エキスパートアドバイザープロジェクト-C_Terminalクラス

これで、リプレイ/シミュレーションシステムで使用するEAの作成を開始できます。ただし、行き当たりばったりの解決策ではなく、何か改善策が必要です。にもかかわらず、最初の複雑さに怯んではなりません。どこかで始めることが重要で、そうでなければ、その課題を克服しようともせずに、その難しさを反芻してしまうことになります。それこそがプログラミングの醍醐味であり、学習、テスト、徹底的な研究を通じて障害を克服することです。
preview
リプレイシステムの開発 - 市場シミュレーション(第25回):次の段階への準備

リプレイシステムの開発 - 市場シミュレーション(第25回):次の段階への準備

この記事では、リプレイ/シミュレーションシステム開発の第1段階を完了しました。この成果により、システムが高度なレベルに達したことを確認し、新機能の導入への道を開くことができました。目標は、システムをさらに充実させ、市場分析の調査開発のための強力なツールに変えることです。
preview
リプレイシステムの開発 - 市場シミュレーション(第24回):FOREX (V)

リプレイシステムの開発 - 市場シミュレーション(第24回):FOREX (V)

本日は、Last価格に基づくシミュレーションを妨げていた制限を取り除き、このタイプのシミュレーションに特化した新しいエントリポイントをご紹介します。操作の仕組みはすべて、FOREX市場の原理に基づいています。この手順の主な違いは、BidシミュレーションとLastシミュレーションの分離です。ただし、時間をランダム化し、C_Replayクラスに適合するように調整するために使用された方法は、両方のシミュレーションで同じままであることに注意することが重要です。これは良いことです。特にティック間の処理時間に関して、一方のモードを変更すれば、もう一方のモードも自動的に改善されるからです。
preview
リプレイシステムの開発 - 市場シミュレーション(第23回)FOREX (IV)

リプレイシステムの開発 - 市場シミュレーション(第23回)FOREX (IV)

これで、ティックをバーに変換したのと同じ時点で作成がおこなわれます。こうすることで、変換プロセス中に問題が発生した場合、すぐにエラーに気づくことができます。これは、早送り中にチャート上に1分足を配置するコードと同じコードが、通常のパフォーマンス中に足を配置する位置決めシステムにも使用されるためです。言い換えれば、このタスクを担当するコードは他の場所には複製されません。このようにして、メンテナンスと改善の両方においてはるかに優れたシステムが得られます。
preview
リプレイシステムの開発 - 市場シミュレーション(第22回):FOREX (III)

リプレイシステムの開発 - 市場シミュレーション(第22回):FOREX (III)

このトピックに関する記事は今回で3回目になりますが、株式市場とFOREX市場の違いをまだ理解していない方のために説明しなければなりません。大きな違いは、FOREXでは、取引の過程で実際に発生したいくつかのポイントに関する情報がないというか、与えられないということです。
preview
リプレイシステムの開発 - 市場シミュレーション(第21回):FOREX (II)

リプレイシステムの開発 - 市場シミュレーション(第21回):FOREX (II)

FOREX市場で作業するためのシステムを構築し続けます。この問題を解決するためには、まず、前のバーを読み込む前にティックの読み込みを宣言しなければなりません。これによって問題は解決されますが、同時にユーザーは構成ファイルの構造に従わざるを得なくなります。これは個人的にはあまり意味がありません。なぜなら、構成ファイルの内容を分析し、実行する役割を担うプログラムを設計することで、ユーザーが必要な要素を好きな順番で宣言できるようになるからです。
preview
外国為替市場の季節性から利益を得る

外国為替市場の季節性から利益を得る

例えば、冬になると新鮮な野菜の値段が上がったり、霜が降りると燃料の値段が上がったりすることはよく知られていますが、同じようなパターンが外国為替市場にもあることを知っている人は少ないです。