はじめに
aiomql
パッケージは、MetaTrader5 Python 統合ライブラリ (metatrader5
) の機能を強化および拡張する高度なアルゴリズム取引フレームワークです。その目的は、アルゴリズム取引に特化した豊富なツールと抽象化のセットを提供しながら、カスタム取引ボットの構築プロセスを簡素化することです。 aiomql
柔軟性と適応性を念頭に置いて設計されたこのフレームワークは、MetaTrader5 Python 統合に代わる軽量の非同期代替手段を探しているユーザーから、複雑なマルチ戦略取引ロボットを構築する開発者まで、さまざまなユーザーのニーズを満たすことができます。
需要
このチュートリアルでは、aiomql
フレームワークの 4 番目のバージョンを紹介します。これは、速度、効率、設計の点で以前のバージョンに比べて大幅な改善が施されています。このリリースの主なハイライトは、強力なバックテスト機能が組み込まれていることです。これにより、ユーザーは実際に展開する前に履歴データを使用して取引戦略をテストできるようになります。
aiomql
の以前のバージョンのフレームワークに精通していると理解が深まりますが、前提条件ではありません。このチュートリアルは、フレームワークを使用したことがない初心者でも簡単に理解できるように設計されています。ただし、ここで説明する概念を完全に理解して適用するには、Python の実践的な知識とアルゴリズム取引の基本的な理解が必要です。
この記事は、ステップバイステップのチュートリアルではなく、主にフレームワークの紹介を目的としていますが、Python 3.11 を必要とするコード スニペットが含まれています。 NumPy で互換性の問題が発生した場合は、次のコマンドを使用してサポートされているバージョンをインストールすることで問題を解決できます:
<code class="language-bash">pip install aiomql pip uninstall numpy pip install 'numpy<v2></v2></code>
aiomql
フレームワークは 3 つの主要なサブパッケージ (core、contrib、lib) と、フレームワーク全体で使用されるユーティリティ関数を提供するトップレベル モジュール utils.py
に分かれています。便宜上、すべてのクラス、関数、定数、およびその他のコンポーネントにはトップレベルから直接アクセスできます。
前述したように、aiomql
ライブラリは metatrader5
パッケージの非同期版です。この機能は、フレームワークの基本コンポーネントである MetaTrader クラスを通じて実装されます。このクラスは metatrader5
ライブラリの機能を複製し、その関数、定数、特殊な型をメソッドとプロパティとして提供します。
metatrader5
パッケージ内の関数は、元の名前を保持したまま、MetaTrader クラスの非同期インスタンス メソッドとしてアクセスされます。この設計により、非同期プログラミングの利点を活用しながら、元のライブラリに慣れているユーザーにとってシームレスな統合が保証されます。
MetaTrader クラスは非同期コンテキスト マネージャーとして設計されており、MetaTrader ターミナルの管理を簡素化します。コンテキストに入ると、端末が自動的に初期化され、ログイン操作が実行されます。終了時には、エラーが発生した場合でも、リソースが適切にクリーンアップされ、切断されます。この構造は、ライフサイクル管理の簡潔かつ効率的な方法を提供し、非同期ワークフローに特に適しています。
これらの関数の非同期バージョンは引き続きアクセスできますが、プライベート メソッドとして扱うことができることを示すためにアンダースコア (_) が接頭辞として付いています。
MetaBackTester は、特にバックテストに使用される MetaTrader のサブクラスです。 BackTestEngine インスタンスを使用します。これは、初期化中に提供することも、構成から取得することもできます。 config.mode
が「バックテスト」に設定されている場合、このクラスは端末接続に依存するアプリケーションの MetaTrader を自動的に置き換え、バックテスト機能のシームレスな統合を保証します。
Base
クラスと _Base
クラスは、フレームワーク内の他のクラスを形成する基本コンポーネントであり、システムがライブ取引中かどうかに応じて、データ検証、シリアル化、MetaTrader または MetaBackTester へのシームレスなアクセスなどの基本ユーティリティを提供します。またはバックテストモードの例。これらのクラスが直接使用されることはほとんどありませんが、より特殊な機能のバックボーンとして機能することで、システム全体の安定性と信頼性が確保されます。
Base クラスは、検証とシリアル化に重点を置いた強力なデータ処理関数を提供します。インスタンス化中、クラス本体で明示的に注釈が付けられているプロパティ、または親クラスから継承されたプロパティのみに値を割り当てることができ、これらの値は定義された型に厳密に準拠する必要があるため、構造化された型安全なデータ管理が保証されます。
exclude
(セット): プロパティにアクセスするとき、またはオブジェクトの辞書表現を生成するときに除外するプロパティ名のセット。 include
(セット): 明示的に含める属性名のコレクション。両方のコレクションが提供されている場合、このコレクションは exclude
コレクションをオーバーライドします。 dict
: exclude
および include
コレクションで指定されたフィルターを適用して、すべての属性を辞書として返す属性。 set_attributes(**kwargs)
: インスタンスのプロパティを動的に設定するメソッド。入力を検証し、入力が正しい型であることを確認します。 get_dict(exclude: set = None, include: set = None)
: インスタンスのプロパティを辞書として返すメソッド。exclude
および include
フィルターを指定できます。両方のパラメーターが指定された場合、include
パラメーターが exclude
パラメーターより優先されます。 このクラスは、特に端末に接続するための追加のプロパティと機能を備えた Base
のサブクラスです。
config
: 構成インスタンスを表します。このプロパティには、クラスの実行に必要なすべての構成設定が含まれています。 mt5
(MetaTrader | MetaBackTester): config
オブジェクトの mode
プロパティによって決定される MetaTrader または MetaBackTester インスタンスを提供します。インスタンスのタイプは、システムがライブ取引モード (MetaTrader) であるかバックテスト モード (MetaBackTester) であるかによって異なります。 MetaTrader5 ライブラリは、多数の定数を特殊な列挙体に編成し、開発者にとっての明確さと機能性を向上させます。これらの列挙はさまざまな取引操作、注文タイプ、時間枠などを表し、関連する定数を直感的なカテゴリにグループ化することで使用を簡素化します。各列挙はプロパティを提供し、該当する場合は値の変換、反転、導出などの機能を可能にする追加のメソッドまたはプロパティを提供します。この構成により、特に複雑な取引アプリケーションにおいて、エラーが減少し、コードの可読性が向上し、定数の管理が容易になります。
、TradeAction
、OrderFilling
などの TimeFrame
列挙型は、使いやすさを向上させるために Python スタイルの文字列表現を提供しながら、定数を整数値としてカプセル化します。一部の列挙型 (TimeFrame
など) には、秒を事前定義された間隔に変換したり、すべての可能な値にアクセスしたりするための高度なメソッドが含まれています。これらの定数を体系的に整理することで、MetaTrader5 ライブラリはより効率的で開発者に優しいエクスペリエンスを保証し、取引操作やプラットフォーム データとの対話を簡素化します。
モデル モジュールは、MetaTrader5 ライブラリの構造に基づいて構築された、よく整理されたデータ処理クラスのセットを提供します。すべてのクラスは Base クラスを継承し、データ検証、シリアル化、フィルタリングなどの機能を追加して、使用を簡素化します。これらのクラスは、OrderSendResult
、SymbolInfo
、TradeRequest
などのさまざまな取引関連エンティティを表し、開発者が MetaTrader5 の取引環境と効率的に対話できるようにします。
各クラスは、対応するトランザクション エンティティに関連する特定のプロパティと特性をカプセル化し、堅牢で構造化されたデータ管理を保証します。たとえば、SymbolInfo
は金融商品に関する詳細情報を提供し、TradeRequest
は取引操作の作成と送信を可能にします。このモジュール設計により、可読性が向上し、複雑な取引ワークフローが簡素化され、アプリケーションで MetaTrader5 を活用する開発者にとってデータの一貫性と使いやすさが保証されます。
TaskQueue クラスは、同時実行用の asyncio.PriorityQueue
インスタンスを使用して、ボットまたはバックテスターのバックグラウンド タスクを効率的に管理します。バックグラウンドで継続的に実行されるため、取引実行後のデータを記録するためにこれを使用する Trader クラスなどの他のコンポーネントとのシームレスな統合が可能になります。タスクは add
メソッドを介してキューに追加されますが、最初にパラメーター、優先度、完了要件などのタスクのメタデータを含む QueueItem
でラップする必要があります。
TaskQueue は、構成可能なワーカー数、タイムアウト設定、タスクの優先順位により、堅牢なタスク管理とエラー処理を保証します。制限付きまたは無限の実行モードをサポートし、優先順位に基づいて終了する前に残りのタスクを適切にクリーンアップできます。この設計は、バックグラウンド操作を非同期にオフロードおよび管理することでワークフローを強化し、複雑な取引環境やテスト環境のスムーズで信頼性の高い機能を保証します。
Account
クラスは、ブローカー アカウントの詳細を管理するために使用されるシングルトンで、アプリケーションの存続期間中にインスタンスが 1 つだけ存在するようにします。 Base
と _AccountInfo
を継承し、アカウント固有の情報にアクセスするための構造化されたユーザーフレンドリーなインターフェイスを提供します。このアーキテクチャにより、一貫性が確保され、インスタンスの重複が防止され、アプリケーション内でアカウント管理が集中化されます。
AsyncContextManager として、Account
クラスは初期化とクリーンアップのプロセスを自動化することでリソース管理を簡素化します。コンテキストを入力すると、MetaTrader ターミナルが初期化され、指定されたアカウントにログインします。終了時に、リソースが適切に閉じられ、クリーンアップされることが保証されます。この簡素化されたアプローチにより、リソース処理の信頼性が向上し、アカウント管理がより直観的になり、取引操作中のエラーの可能性が減ります。
connected
(ブール値): ログインが成功し、端末への接続がアクティブであるかどうかを示します。アカウントが接続されている場合は True を返します。 refresh()
: 端末から最新のアカウント詳細を取得してアカウント インスタンスを更新し、アカウント データが最新の状態に保たれるようにします。 RAM
クラスは、取引活動中のリスク評価とリスク管理の管理を担当します。 risk_to_reward
、fixed_amount
、min_amount
、max_amount
、risk
などの属性があり、トレーダーがリスク エクスポージャーを効果的に定義および制御できるようになります。これらのプロパティにより、各取引のリスク パラメーター、最小および最大リスク量、リスクと報酬の比率を柔軟に設定できます。
このクラスには、利用可能な証拠金とリスク割合に基づいて各取引のリスク量を計算する get_amount
や、損失またはポジション額が事前定義された範囲内に収まることを保証する check_losing_positions
および check_open_positions
などのメソッドが含まれます。限界。これらの機能を統合することにより、RAM クラスはリスク管理への包括的なアプローチを提供し、意思決定能力を強化し、より安全な取引慣行を促進します。
risk
(浮動小数点数): 整数で表される、取引ごとのリスクにさらされている資本の割合 (例: 1 は 1% を意味します)。デフォルトは 1 です。 risk_to_reward
(浮動小数点): リスクと報酬の比率。潜在的なリスクと報酬の関係を示します。デフォルトは 2 です。 fixed_amount
(浮動小数点): 取引ごとのリスクに対する固定金額が設定されている場合、パーセンテージベースの計算が上書きされます。 get_amount()
: リスク、fixed_amount
、min_amount
、max_amount
などの設定されたプロパティに基づいて、各取引のリスク量を計算して返します。 RAM
クラスは、注文する前に使用できる Trader クラスで使用するのが最適です。
Candle
クラスと Candles
クラスは、端末から取得した価格バーを管理するためのカスタム ツールです。 Candle
クラスは単一の価格バーのデータをカプセル化し、始値、高値、安値、終値 (OHLC) などの必要なプロパティが各インスタンスに存在することを保証します。ハッシュ、反復、比較などの Python プロトコルをサポートし、プロパティを管理するための keys()
や values()
などのメソッドを提供します。さらに、インスタンス化中に渡されるプロパティを動的に追加するため、柔軟なカスタマイズが可能になります。
Candles
クラスは、時系列順に配置された複数の Candle オブジェクトのコンテナーとして機能します。 pandas DataFrame
を使用してデータを保存および管理し、高度なテクニカル分析のための pandas-ta などのツールとのシームレスな統合を可能にします。このクラスは、スライスや反復などのさまざまな Python プロトコルをサポートし、タイムフレームなどの特殊なプロパティを通じて機能を拡張することにより、取引戦略を開発するための強力な基盤として機能します。その多用途性により、複雑な分析ワークフローで頻繁に使用できます。
time
(int): ローソク足サイクルの開始時間。 open
(浮動小数点数): ローソク足の始値。 high
(浮動小数点数): ローソク足期間中に到達した最高値。 low
(浮動小数点数): ローソク足期間中に到達した最低価格。 close
(浮動小数点数): ローソク足の終値。 tick_volume
(float): ローソク足期間のティックの量。 real_volume
(浮動小数点数): ローソク足期間中の実際の取引高。 spread
(フロート): ローソク足期間内にスプレッドします。 Index
(int): シーケンス内のローソクの位置を示すカスタム プロパティ。 set_attributes(**kwargs)
: 指定されたキーワード引数からキャンドル インスタンスのプロパティを動的に設定します。 is_bullish()
: ローソク足が強気 (終値が始値以上) の場合は True を返し、それ以外の場合は False を返します。 is_bearish()
: ローソク足が弱気 (終値が始値より低い) 場合は True を返し、それ以外の場合は False を返します。 dict(exclude: set = None, include: set = None)
: キャンドル属性の辞書を返します。オプションで exclude
または include
コレクションを使用して属性をフィルターできます。 Index
(Series[int]): pandas オブジェクト内のすべてのローソク足のインデックスを含むシリーズ。 time
(Series[int]): pandas オブジェクト内のすべてのローソク足時間を含むシリーズ。 open
(Series[float]): オブジェクト内のすべてのローソク足の始値を含むパンダ シリーズ。 high
(Series[float]): pandas オブジェクト内のすべてのキャンドルの最高価格を含むシリーズ。 low
(Series[float]): pandas オブジェクト内のすべてのキャンドルの最低価格を含むシリーズ。 close
(Series[float]): オブジェクト内のすべてのローソク足の終値を含むパンダシリーズ。 tick_volume
(Series[float]): pandas オブジェクト内のすべてのローソク足のティック量を含むシリーズ。 real_volume
(Series[float]): pandas オブジェクト内のすべてのキャンドルの実際の体積を含むシリーズ。 spread
(Series[float]): pandas オブジェクト内のすべてのキャンドル スプレッドを含むシリーズ。 Candle
(Type[Candle]): オブジェクト内の単一のキャンドルを表すために使用されるクラス。 timeframe
(TimeFrame): タイムスタンプから計算されたローソク足の時間枠。 data
(DataFrame): オブジェクト内のすべてのキャンドルの基本データを含む pandas DataFrame。 rename(inplace=True, **kwargs)
: 基礎となる DataFrame の列の名前を変更します。 ta
: data
属性を介してローソク足に対して直接テクニカル分析を実行することで、pandas-ta ライブラリにアクセスします。 ta_lib
: 追加の技術分析のための ta ライブラリへのアクセスを提供します。Series または DataFrame オブジェクトを引数として渡す必要がある関数で使用します。 columns
: 基になる DataFrame の列名を返します。Ticks
クラスと Tick
クラスは、Candle
クラスと同様に、取引ターミナルからの Tick データを管理するように設計されています。 Tick
クラスは単一のティックを表し、そのプロパティには買値、売値、最終価格、出来高が含まれており、各インスタンスが単一のティック イベントに必要なデータを確実にカプセル化します。動的な属性管理をサポートし、辞書のようなアクセスを提供するため、さまざまなコンテキストでの適応性と操作が容易になります。
Ticks
クラスは複数の Tick オブジェクトのコンテナとして機能し、効率的な操作と分析のためにデータを pandas DataFrame
に保存します。イテレーション、スライス、およびさまざまなデータ操作をサポートしており、テクニカル分析用の pandas-ta などのツールとのシームレスな統合が可能です。このクラスは、取引システムで大量のティック データを処理するために不可欠であり、リアルタイムまたは履歴データ分析のための強力な構造を提供します。
_Symbol_
クラスは、金融商品のデータをカプセル化する強力な構造を提供し、トランザクションを開始する前に必要な計算と操作をサポートします。 _Base
と SymbolInfo
のサブクラスとして、金融商品を効率的に処理するために幅広いプロパティとメソッドを統合します。このクラスは、さまざまなブローカーのさまざまな商品に合わせてカスタマイズできるため、取引プラットフォーム間での適応性が確保されます。
Symbol
クラスは、現在の Tick データへのアクセス、市場深度の管理、通貨換算の実行のためのユーティリティ メソッドを使用して、複雑な取引タスクを簡素化します。シンボルの初期化、出来高の検証、過去のレートやティックの取得などの機能を提供し、取引戦略の開発の重要な部分となっています。その設計により、開発者は特定の取引要件を満たすようにその動作を拡張およびカスタマイズできます。
Symbol
クラスは機能が豊富なクラスです。この記事では、使用する可能性が最も高い重要なもののいくつかについてのみ触れました。 tick
と account
は、Symbol
親クラスで定義されているプロパティとは異なり、SymbolInfo
クラスの唯一のプロパティです。
tick
(ティック): 金融商品の現在の価格ティックを表し、リアルタイムの市場データを提供します。 account
(口座): シンボルに関連付けられた現在の取引口座のインスタンス。 __init__(*, name: str, **kwargs)
: シンボル インスタンスを初期化します。 name
属性は必須であり、ターミナル内のブローカーによって指定されたシンボル名と一致する必要があります。 initialize()
: ターミナルから最新の価格ティックと詳細を取得してシンボル インスタンスを設定します。成功すると、select
プロパティが True に設定され、すべてのプロパティにサーバー データが設定されます。 convert_currency(*, amount: float, from_currency: str, to_currency: str)
: 指定された金額をある通貨から別の通貨に換算します。 amount_in_quote_currency(*, amount: float)
: 口座通貨が見積通貨と異なる場合、金額を口座通貨から見積通貨に変換します。この方法は、リスク管理の計算を実行する場合に特に役立ちます。 info_tick
: 金融商品の現在の価格ティックを取得します。 symbol_select(enable: bool = True)
: MarketWatch ウィンドウにシンボルを追加または削除します。 check_volume(volume: float)
: 指定されたトランザクション量が許可された制限内であることを確認し、必要に応じて調整します。 round_off_volume(volume: float, round_down: bool = False)
: 音量を最も近い有効なステップに丸めます。 compute_volume
: 取引に適した量を計算します。 copy_rates_from_pos(timeframe, start_position=0, count=500)
: 特定のインデックスから始まるバーを取得します。 copy_rates_from(timeframe, date_from, count=500)
: 指定した日付から始まる過去の為替レート (バー) を取得します。 copy_ticks_from(date_from, count=100, flags=CopyTicks.ALL)
: 指定した日付から始まる Tick データを取得します。 Symbol
クラスは、金融商品を管理するために設計された多機能で機能が豊富なツールで、データの取得と変換に必要なメソッドを提供します。この紹介では、初期化、通貨換算、最新の Tick データの取得などの主要な機能に焦点を当てていますが、他の多くの機能については今後の説明で検討します。これには、アルゴリズム取引システムへの統合や、さまざまなユースケースへの適合性の実証が含まれます。
注目すべき貢献は ForexSymbol
クラスです。これは Symbol
クラスの特殊な拡張であり、外国為替取引専用に設計されています。このサブクラスは、通貨ペア取引の固有の要件を処理するように設計されており、さまざまな取引シナリオにおける Symbol
クラスの柔軟性とカスタマイズの可能性をさらに示しています。
Order
クラスは、関連するプロパティとメソッドを組み合わせることで取引注文の管理を簡素化し、注文の確認、検証、送信を容易にします。 _Base
と TradeRequest
のサブクラスとして、強力な機能を継承しながら、さらなる利便性を提供します。 action
、type_time
、type_filling
などのプロパティに適切なデフォルト値を設定することで、インスタンス化中のコードの重複が最小限に抑えられ、トランザクション操作の効率と明確さが確保されます。
このクラスは、未決注文の取得、資金の適正性の確認、証拠金、損益の計算などの中核的なタスクを簡素化します。 send()
や check()
などのメソッドの統合により、取引操作の開始と検証のためのシームレスなワークフローが確保され、calc_margin()
や calc_profit()
などのユーティリティにより取引前分析が容易になります。その設計により、アルゴリズム取引戦略を効率的に実装するために不可欠なツールになります。
__init__
: 有効な TradeRequest
属性である必要があるキーワード引数を使用して注文インスタンスを初期化します。 action
のデフォルト値は DEAL
、type_time
のデフォルト値は DAY
、type_filling
のデフォルト値は FOK
ですが、インスタンス化中にカスタマイズできます。 check(**kwargs)
: 注文する前に注文を確認してください。指定されたキーワード引数はリクエスト オブジェクトを更新します。 send
: 注文を実行するために端末に送信します。 calc_margin
: 取引を行うために必要な証拠金を計算します。 calc_profit
: 取引の潜在的な利益を計算します。 calc_loss
: 取引の潜在的な損失を計算します。 request
: このプロパティは、トランザクション要求オブジェクトを辞書として返します。 Trader
クラスは、取引注文を管理するためのユーティリティが豊富な抽象基本クラスとして機能します。これは、トランザクションの検証、ルーティング、記録などの主要なプロセスを処理しながら、さまざまな注文タイプを作成および管理するための基本的な方法を提供します。このクラスは、特定の取引戦略に適応する柔軟性を確保するために、そのサブクラスに place_trade
メソッドを実装する必要があります。
主な機能には、pips または pips に基づいてストップロスとテイクプロフィットのレベルを設定する方法、ストップロスレベルの有無にかかわらず注文を作成する方法、および取引に適切な金額を計算する方法が含まれます。このクラスは、適切に初期化された Symbol インスタンスおよびリスク評価用のオプションの RAM
インスタンスと統合され、シームレスなトランザクション管理が可能になります。また、実行されたトランザクションの追跡と分析を容易にするトランザクション結果の記録もサポートしています。
modify_order(**kwargs)
: 指定されたキーワード パラメーターを使用して注文属性を変更します。 modify_ram(**kwargs)
: 指定されたキーワード引数を使用して、RAM (リスク評価および管理) インスタンスのプロパティを更新します。 check_order
: 注文する前に、注文が必要な条件を満たしていることを確認してください。 send_order
: 注文を実行するためにブローカーに送信します。 record_trade(*, result: OrderSendResult, parameters: dict = None, name: str = "")
: トランザクションの詳細を CSV または JSON ファイルに記録し、タスクを config.task_queue
インスタンスに委任します。取引結果と戦略パラメーター (提供されている場合) が含まれます。 contrib
パッケージには、ScalpTrader
と SimpleTrader
という 2 つの単純なトレーダーが付属しています。ScalpTrader
は以下に示されています。
Session
クラスと Sessions
クラスは、取引時間を管理および実行するための強力なフレームワークを提供します。 Session
は、開始時刻と終了時刻を持つ UTC で定義された期間を表し、整数または datetime.time
オブジェクトとして指定できます。これらのセッションは、すべての取引や利益/損失ポジションのみのクローズなど、事前定義されたアクション、またはユーザー指定のカスタム アクションをトリガーできます。これにより、戦略は特定の期間中の取引活動を正確に制御できるようになります。
Sessions
クラスは、複数の Session
インスタンスを並べ替えられたコレクションにグループ化し、重複または連続する取引期間の管理を容易にします。これは非同期コンテキスト マネージャーとして機能し、現在時刻を継続的に監視してアクティブなセッションを決定します。アクティブなセッションがない場合、Sessions
インスタンスは、次にスケジュールされたセッションが開始されるまで取引操作を一時停止し、指定された取引ウィンドウの遵守を確保します。
これらのクラスを統合することで、取引戦略に時間ベースのルールを簡単に組み込むことができ、その精度と信頼性が向上します。この機能は、取引時間を厳守する必要がある自動システム (外国為替や株式市場の取引など) や、事前に定義された時間間隔で操作を調整する必要がある自動システムで特に役立ちます。
start
(datetime.time): UTC でのセッションの開始時刻。 end
(datetime.time): UTC でのセッションの終了時刻。 on_start
(文字列): "close_all"
、"close_win"
、"close_loss"
またはカスタム アクションなど、セッションの開始時に実行するアクションを指定します。 on_end
(文字列): on_start
と同様に、セッション終了時に実行されるアクションを指定します。 custom_start
(呼び出し可能): セッションの開始時に実行されるオプションのカスタム関数。 custom_end
(呼び出し可能): セッション終了時に実行されるオプションのカスタム関数。 name
(文字列): セッションの名前が指定されていない場合、デフォルトで開始時刻と終了時刻の組み合わせが使用されます。 in_session
: 現在時刻がセッション内であるかどうかを確認します。 begin
: セッションの開始時に on_start
または custom_start
で指定されたアクションを実行します。 close
: セッションの終了時に、on_end
または custom_end
で指定されたアクションを実行します。 duration
: セッションの継続時間を、時、分、秒の期間オブジェクトとして返します。 close_all
: オープンポジションをすべてクローズします。 close_win
: 収益性の高いポジションをすべてクローズします。 close_loss
: 負けているポジションをすべて決済します。 action(action: str)
: ポジションの決済やカスタム関数のトリガーなど、指定されたアクションを実行します。 until
: 現在時刻からセッションの開始までの時間を秒単位で計算します。 sessions
(list[Session]): 開始時刻でソートされた Session
オブジェクトのリスト。 current_session
(セッション | なし): 現在アクティブなセッション (存在する場合)。 find(moment: datetime.time = None)
: 指定された時間を含む会話を検索して返します。時間が指定されていない場合は、現在の時間が使用されます。 find_next(moment: datetime.time = None)
: 指定された時間の後の次のセッションを検索して返します。時間が指定されていない場合は、デフォルトで現在時刻が使用されます。 check
: 現在のセッションを監視します。アクティブなセッションがない場合は、次のセッションが開始されるまで待機します。 config
: モード (ライブまたはバックテスト) を決定する、セッションに関連付けられた構成インスタンス。 Strategy
クラスは、取引戦略を開発するための基本フレームワークであり、Bot
および Backtester
とシームレスに統合できます。抽象基本クラスとして多くの機能を備えていますが、派生クラスで trade
メソッドを実装する必要があります。このメソッドは、戦略の中核となる取引ロジックとして機能します。 Strategy
クラスは非同期コンテキスト マネージャーとして機能し、run_strategy
メソッドを使用してポリシーを実行し、動作モードに応じて live_strategy
または backtest_strategy
メソッドを呼び出します。
このクラスは、symbol
、sessions
、parameters
などの属性を使用して、戦略をカスタマイズして特定の金融商品や取引セッションに適合させることができます。 sleep
や delay
などの協調的なマルチタスク手法の統合により、戦略の効率性が維持され、ライブ環境またはバックテスト環境での市場の更新と同期することが保証されます。これにより、Strategy
クラスは、複雑な取引システムを構築するための強力で柔軟なツールになります。
name
(str): 戦略の名前。明示的に指定しない場合、デフォルトでクラス名が使用されます。 symbol
(シンボル): 戦略に関連付けられた金融商品。 parameters
(dict): ポリシー固有のパラメーターの辞書。 sessions
(セッション): ストラテジーがアクティブな取引セッション。 mt5
(MetaTrader | MetaBackTester): モード (ライブまたはバックテスト) に基づく MetaTrader
または MetaBackTester
のインスタンス。 config
: ポリシーの構成設定。 running
(ブール値): ストラテジーが現在実行中かどうかを示します。 backtest_controller
(BackTestController): バックテスト操作を管理するために使用されるコントローラー。 current_session
(セッション): 現在アクティブな取引セッション。 __init__(symbol: Symbol, params: dict = None, sessions: Sessions = None, name: str = "")
: 指定されたシンボル、パラメーター、およびセッション初期化戦略を使用します。 以上がAIOMQLの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。