記事"MetaTrader5 と Python インテグレーション: データの受信と送信"についてのディスカッション - ページ 7

 
yogibass:

マキシム・ドミトリエフスキー

これを使えるようにしてくれてありがとう。このスレッドを立ち上げてから、リアルタイムの先物データにアクセスできるようになり、それを使ってインジケータを開発・実行できるようになりました。Pythonを使ってライブフィードをプロットし、分析し、MT5プラットフォームを通じて取引を行います。PythonがMTコミュニティに受け入れられることを願っています。

ありがとうございます!

コードがコンパイルされません。

rates = MT5CopyRatesFromPos(i, MT5_TIMEFRAME_M1, 0, 1000)
     d[i] = [y.close for y in rates
 
Dannyhill.0:
コードがコンパイルされないのはなぜですか?

いくつかの理由があります。

  • リストコンプの括弧がない
  • MetaTrader5パッケージの非推奨関数を使用している。
  • iが定義されていない
  • from x import *の使用による名前空間の汚染(衝突の可能性?)
  • closeはndarrayの属性ではない
  • 系列を取り出すためにndarrayをiterしないでください。
  • ターミナルが初期化されたか?

次のようになるはずだ。

import MetaTrader5 as mt

try:
    if not mt.initialize():
        raise Exception('Failed to initialize')
    close_price_map = {}
    for symbol in ['EURUSD', 'USDJPY']:
        rates = mt.copy_rates_from_pos(symbol, mt.TIMEFRAME_M1, 0, 5)
        close_price_map[symbol] = rates['close']
        print(symbol)
        print(close_price_map[symbol])
except Exception as e:
    print(e)
finally:
    mt.shutdown()
    
# EURUSD
# [1.12594 1.12598 1.12584 1.12564 1.12543]
# USDJPY
# [107.5   107.494 107.509 107.525 107.527]

https://www.mql5.com/ja/docs/integration/python_metatrader5

Documentation on MQL5: Integration / MetaTrader for Python
Documentation on MQL5: Integration / MetaTrader for Python
  • www.mql5.com
Python is a modern high-level programming language for developing scripts and applications. It contains multiple libraries for machine learning, process automation, as well as data analysis and visualization. MetaTrader package for Python is designed...
 
MT4で使おうとしているのですが、"SocketClose function not defined "と表示されます。これはMQL4で動作するようになっているのでしょうか?
 

本当に素晴らしいgithubを見つけた

python メタトレーダー api

 
sanazgolriz:
MT4で使おうとしているのですが、"SocketClose function not defined "と表示されます。これはMQL4で動作するようになっているのでしょうか?

ソケット関数はメタトレーダー4では動作しないと思います。

新しいMetaTrader5パッケージ(ドキュメントを 参照)を使用することもできます。

mt4ではzeromqを お試しください。

Documentation on MQL5: Integration / MetaTrader for Python
Documentation on MQL5: Integration / MetaTrader for Python
  • www.mql5.com
Python is a modern high-level programming language for developing scripts and applications. It contains multiple libraries for machine learning, process automation, as well as data analysis and visualization. MetaTrader package for Python is designed...
 

こんにちは、マキシム!

別のスレッドで、コードの修正について助けていただきました。MQL5のウェブサイトを検索したところ、Pythonプログラミング言語を使ったデータの送受信に関する記事を見つけました。ネットワークソケットは 物理的なデバイスなのでしょうか、それとも複数のファイルの集合の形をしたソフトウェア製品なのでしょうか、それとも単一のファイル、例えば同じcsvのようなものなのでしょうか?

よろしく、ウラジミール。

 
MrBrooklin:

こんにちは、マキシム!

別のスレッドで、コードの修正について助けていただきました。MQL5のウェブサイトを検索したところ、Pythonプログラミング言語を使ったデータの送受信に関する記事を見つけました。ネットワークソケットは 物理的なデバイスなのでしょうか、それとも複数のファイルの集合の形をしたソフトウェア製品なのでしょうか、それとも1つのファイル、例えば同じcsvのようなものなのでしょうか?

よろしく、ウラジミール。

ネットワークソケットは、プログラム(プロセス)がデータを交換する ためのソフトウェアインターフェースです。例えば、ウェブサイトにアクセスすると、ウェブサイトサーバーのオープンソケットにアクセスします。同じことが、1台のPCの中でもできる。大雑把に言えば、ソケットはオペレーティングシステムに組み込まれた機能です。

 
Maxim Dmitrievsky:

これは、プログラム(プロセス)が通信するためのソフトウェア・インターフェースである。例えば、ウェブサイトにアクセスすると、そのサイトのサーバーが開いているソケットにアクセスする。同じことが、1台のPCの中でもできる。大雑把に言えば、ソケットはオペレーティング・システムに組み込まれた機能である。

ありがとう、マキシム!

あなたの記事の本質を正しく理解できただろうか?私の言葉で説明するので、何か誤解していたら訂正してください。

  1. 私のコンピューターには、MQLプログラミング言語とは根本的に異なるプログラミング言語で作成されたサードパーティのプログラムがいくつか入っているとします。
  2. Pythonプログラミング言語で記述されたプログラムコードにより、これらのサードパーティプログラムの相互作用を、例えば同じMT5ターミナルとリンクさせることができます。
  3. 別のコンピュータからのサードパーティ・プログラムは、私のコンピュータ上の同じMT5ターミナルの作業をリモートで制御することができます。

これは正しいのでしょうか?このような質問をする理由は後で説明します。

よろしく、ウラジミール。

 
MrBrooklin:

ありがとう、マキシム!

私はあなたの記事の本質を正しく理解していましたか?私の言葉で説明するので、何か誤解していたら訂正してほしい。

  1. 私のコンピュータに、MQLプログラミング言語とは根本的に異なるプログラミング言語で作成されたサードパーティのプログラムがいくつかあるとします。
  2. Pythonプログラミング言語で記述されたプログラムコードにより、これらのサードパーティプログラムの相互作用を、例えば同じMT5ターミナルとリンクさせることができます。
  3. サードパーティのプログラムは、同じMT5ターミナルの作業を遠隔操作することができます。

これは正しいのでしょうか?なぜこのような質問をするのか、後で説明します。

よろしく、ウラジミール。

それはタスクによりますので、何とも言えません。むしろ、ソースコードにアクセスできるのであれば、それらを直接「リンク」する方が良いでしょう。そうでなければ、プログラムはあるけれどソースコードがなくて、それがとても必要な場合、Pythonスクリプトを使って何かすることができます。
 
Maxim Dmitrievsky:
タスクにもよるので、一概には言えない。むしろ、ソースコードにアクセスできるのであれば、それらを直接「リンク」した方がいい。そうでなければ、プログラムはあるがソースコードがなく、どうしても必要な場合は、Pythonスクリプトで何とかすることができる。

さて、次はタスクそのものだ。これは技術的なタスクではなく、その本質を非常に簡潔に述べたものである。

定期的に(例えば、1時間に1回、1日に1回、1週間に1回)複数の(10を超えない)サイトから様々なデータを取り込み、サードパーティーのプログラム(MQLではない)で複雑な中間計算を 行う必要がある。これらの計算の結果は、MT5ターミナル制御用の3つのシグナルになります:買い注文をオープンするシグナル、売り注文をオープンするシグナル、注文をクローズするシグナルです。

これは可能ですか?私はフリーランスのための技術的なタスクを有能に構成できるようにするために、これを知る必要があります。

よろしく、ウラジミール。

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Свойства пользовательских индикаторов
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Свойства пользовательских индикаторов
  • www.mql5.com
Количество индикаторных буферов, которые можно использовать в пользовательском индикаторе, не ограничено. Но каждому массиву, который назначается в качестве индикаторного буфера с помощью функции SetIndexBuffer(), должен быть указан тип данных, которые он будет хранить. Это может быть одно из значений перечисления ENUM_INDEXBUFFER_TYPE...