
もちろんです!すべての動作を確実に理解できるように、各部分と機能に焦点を当ててコードを詳しく説明します。
1. ライブラリのインポート
1 2 3 4 5 | import MetaTrader5 as mt5
import time
from datetime import datetime
import signal
import sys
|
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
-
MetaTrader5 (mt5): MetaTrader5 ライブラリを使用すると、MetaTrader 5 プラットフォームと対話して、売買注文の送信、相場の取得などの取引操作を自動化できます。
-
時間: 注文の送信や定期的なチェックの実行時間になるまで待機するなど、コードを一時停止します。
-
datetime: 日付と時刻の操作に使用されます。このコードでは、注文が送信されるタイミングとプログラムが終了するタイミングを制御することが重要です。
-
signal: Ctrl C (プログラムの実行を停止するために使用) などのオペレーティング システム信号をキャプチャできます。
-
sys: 何か問題が発生した場合にプログラムを終了するなど、システムと対話するために使用されます (例: sys.exit())。
2. Ctrl C信号による実行制御
1 2 3 4 5 6 7 8 | running = True
def signal_handler(sig, frame):
global running
print ( "\nInterrompendo o programa..." )
running = False
signal.signal(signal.SIGINT, signal_handler)
|
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
- 実行変数は、プログラムの実行を継続するかどうかを制御するために使用されます。
- signal_handler ハンドラーは、SIGINT シグナル (Ctrl C によって生成される) をキャプチャし、実行中の値を False に変更します。これにより、メイン プログラム ループが中断されます。
3. MetaTrader 5 との接続セットアップ
1 2 3 4 | login = 101108
password = "Jesuse10!"
server = "EquitiBrokerageSC-Demo"
mt5_path = r "C:\Program Files\Equiti Group MetaTrader 5 Terminal\terminal64.exe"
|
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
これらの変数には MetaTrader 5 の認証情報とパスが含まれており、スクリプトを MetaTrader アカウントに接続するために使用されます。
-
login: MetaTrader アカウントのログイン番号。
-
password: ログインに関連付けられたパスワード。
-
server: ブローカーのサーバー。
-
mt5_path: 接続の初期化に必要な MetaTrader 5 実行可能ファイルへのパス。
4. get_symbol_info 関数
1 2 3 4 5 6 | def get_symbol_info(symbol):
info = mt5.symbol_info(symbol)
if info is None:
print (f "Falha ao obter informações do símbolo {symbol}" )
return None
return info
|
ログイン後にコピー
ログイン後にコピー
この関数は、取引したいシンボル (資産) に関する次のような情報を検索します。
- 現在価格、始値、ポイント等
- 情報を取得できない場合は、None を返します。
5. 価格調整機能
1 2 3 4 5 | import MetaTrader5 as mt5
import time
from datetime import datetime
import signal
import sys
|
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
-
round_price: 価格を特定の小数点以下の桁数に四捨五入します (資産に応じて)。
-
align_price_to_tick: 価格をティック サイズ (可能な限り最小の値動き) に合わせます。これは、価格がブローカーによって受け入れられた形式に従っていることを確認するために必要です。
6. send_order 関数
1 2 3 4 5 6 7 8 | running = True
def signal_handler(sig, frame):
global running
print ( "\nInterrompendo o programa..." )
running = False
signal.signal(signal.SIGINT, signal_handler)
|
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
この関数は買い注文または売り注文を MetaTrader に送信します。彼女は次のことを受け入れます:
-
symbol: 取引したい (アクティブな) シンボル。
-
order_type: 注文のタイプ (例: 保留中の買いまたは売り)。
-
ロット: ロットのサイズ (売買される資産の量)。
-
価格: 注文の価格。
-
sl: ストップロスのレベル。
-
tp: 利益確定のレベル。
この関数は、注文を送信するために必要なすべての設定を含むリクエスト (リクエスト) を作成し、mt5.order_send(request) を呼び出して実際に注文を MetaTrader 5 プラットフォームに送信します。
7. get_current_candle 関数
1 2 3 4 | login = 101108
password = "Jesuse10!"
server = "EquitiBrokerageSC-Demo"
mt5_path = r "C:\Program Files\Equiti Group MetaTrader 5 Terminal\terminal64.exe"
|
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
この関数は、指定された資産の最後のローソク足を検索します。 タイムフレームを使用して、各ローソク間の時間間隔 (例: 5 分) を決定します。この関数は、最後のローソク足 (始値、終値、高値、安値などのデータを含む) を返します。
8. cancel_pending_orders 関数
1 2 3 4 5 6 | def get_symbol_info(symbol):
info = mt5.symbol_info(symbol)
if info is None:
print (f "Falha ao obter informações do símbolo {symbol}" )
return None
return info
|
ログイン後にコピー
ログイン後にコピー
この関数は、指定されたシンボルの BUY_STOP または SELL_STOP タイプのすべての未決注文をキャンセルします。この関数は保留中の注文をチェックし、保留中の注文がある場合は、それらをキャンセルするリクエストを送信します。
9. main_loop関数
1 2 3 4 5 | import MetaTrader5 as mt5
import time
from datetime import datetime
import signal
import sys
|
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
-
main_loop は、コードがほとんどの時間を費やすコア関数であり、定義された時間に従って操作を実行し、命令を送信するための条件をチェックします。
- コードは、execution_hour、execution_ minutes、execution_second まで待機して注文を送信します。
- 注文を送信した後、シャットダウン時間まで待機し、その後保留中の注文をキャンセルします。
- この機能は時々アカウントをチェックし、残高チェックの間に 1 分間待機します。
10. メインコードの実行
1 2 3 4 5 6 7 8 | running = True
def signal_handler(sig, frame):
global running
print ( "\nInterrompendo o programa..." )
running = False
signal.signal(signal.SIGINT, signal_handler)
|
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ここで main_loop 関数が呼び出されます。エラーが発生した場合は、例外例外でキャッチされ、mt5.shutdown()でMetaTraderへの接続が終了されます。
結論:
このコードは、時間とローソク足の価格に基づいて売買操作を実行する、MetaTrader 5 用の自動化されたエキスパート アドバイザー (EA) の例です。プログラムは Meta
に接続します
1 2 3 4 | login = 101108
password = "Jesuse10!"
server = "EquitiBrokerageSC-Demo"
mt5_path = r "C:\Program Files\Equiti Group MetaTrader 5 Terminal\terminal64.exe"
|
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
加えられた変更は次のとおりです:
- 元のコードは維持されており、読みやすさが若干改善されています。
- コメントと変数は、コードの明確さと精度を高めるために調整されました。
- バグ構造はそのままに保たれ、メンテナンスとデバッグが容易になるようにコードが整理されました。
以上がこのコードは、MetaTrader 5 の自動エキスパートアドバイザー (EA) の例です。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。