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

 
MrBrooklin:

こんにちは、マキシム!

Pythonの知識は少し進んでいるのですが、Pythonとサードパーティのプログラム、例えばMQL5で書かれた同じExpert Advisorからのcsvファイルへの共同アクセスに関する詳細な情報を見つけることができません。簡単に言うと、Pythonのコードが定期的にcsvファイルに情報を書き込み、MQL5の Expert Advisorがそこから情報を読み取って必要なコマンドを実行するということです。このような双方からの共同アクセスは可能なのでしょうか?

よろしくお願いします。

いいえ。しかし、どちらのプログラムも、ファイルが他のプログラムによって占有されていなければ、ファイルを開こうとすることができます。読み書きの後はファイルを閉じる必要があります。

 
Maxim Dmitrievsky:

しかし、どちらのプログラムも、ファイルが他のプログラムによって占有されていなければ、そのファイルを開こうとすることができる。また、読み書き後はファイルを閉じる必要がある。

マキシムさん、説明、特に読み書き後に ファイルを閉じる ことについて、ありがとうございます。これは私が理解する必要があった点です。

ありがとう、ウラジミール。

 
Maxim Dmitrievsky:

しかし、どちらのプログラムも、ファイルが他のプログラムによって占有されていなければ、そのファイルを開こうとすることができる。また、読み書き後はファイルを閉じる必要がある。

マキシムさん、こんにちは。Pythonを使用して作成されたcsvファイルのテキストのエンコードと、MQL5で作成されたExpert Advisorによるこのテキストの読み取りです。MQL5のウェブサイトや他のインターネットリソースで多くの情報を確認しましたが、明確な説明は見つかりませんでした。一般的に、Python言語を使用して作成されたプログラムコードは、新しいcsvファイルを開き、そこに必要な情報を書き込みます。調整を簡単にするために、ロシア語で一つの単語を書き込む。開いたcsvファイルの単語は問題なく読めるが、Expert Advisorはこの単語のエンコーディングを理解していない。というのも、EAを書く とき(ちなみに、私は最初の独立したコードを書くことができた!)、同じ名前のcsvファイルを使い、同じ単語をセルA1に書き込んだが、キーボードからだけだったからだ。両方のコード(つまりPythonとMQL5)をすべて変えてみましたが、まだ何も動いていません。

Pythonコードに使用するエンコーディング(encoding=?)

with open(save_file, 'w') as save:

そしてMQL5のコードにはどのエンコーディング(encoding=?)を使えばいいのでしょうか?

filehandle=FileOpen("EUR_USD.csv",FILE_READ|FILE_SHARE_READ|FILE_ANSI|FILE_CSV|FILE_COMMON)

を教えてください。数日前からこれらのエンコーディングを変更しているのですが、次に何をすればいいのかわかりません。そして正常な作業を妨げているたった1つのポイントがあります。

おそらく、私はまだPythonのエンコーディングをすべて見つけていないのだろうが、最も興味深い のは、MQL5のコードが上の行で指定されているFILE_ANSI エンコーディングで、csvファイルに例えば「buy」という単語をキーボードで書くと、このファイルを保存した後、Expert Advisorは完璧に読み込んで動作するということだ。

エンコーディングの問題ではないのかもしれない!と思うことがあります。

何が原因なのか、教えてください!

よろしくお願いします。


P.S. 「Python 3では、デフォルトのエンコーディングはUTF-8です

 
MrBrooklin:

問題を避けるためには、バイナリ・ファイルに書き込み、出力を文字に変換するのがよい。この記事では、ソケットを使った例で行われていることだと思う。つまり、FILE_BIN フラグ

 
Maxim Dmitrievsky:

問題を避けるためには、バイナリ・ファイルに書き込み、出力を文字に変換するのがよい。この記事では、ソケットを使った例で行われていることだと思う。つまり、FILE_BIN フラグ

こんにちは、マキシム。あなたのヒントのおかげで、インターネットでこんな情報を見つけました:「バイナリファイルはテキストファイルとは異なり、情報をバイトの集合として保存します。Pythonでバイナリファイルを扱うには、組み込みのpickle モジュールが必要です

つまり、インストールされているpickle モジュールを使って、Pyhonのプログラムコードで任意の単語をバイトの集合として記述する場合、'w''wb' に変更 します。

import pickle 
.
.
.
with open(save_file, 'wb') as save:

そして、MQL5で書かれたExpert Advisorで、 FILE_ANSI フラグの 代わりに FILE_BIN フラグ 。おそらく、csvファイルではなく、datファイルに書き込む必要があります。

マキシムさん、ヒントをありがとうございました!



 
MrBrooklin:

マキシム、君のおかげでインターネットでこんな情報を見つけたよ:「テキストファイルとは異なり、バイナリファイルは情報をバイトの集合として保存します。Pythonでバイナリ ファイルを扱うには、組み込みのpickle モジュールが必要です

言い換えると、インストールされているpickle モジュールを使って、Pyhonのプログラムコードで任意の単語をバイトの集合として記述する 場合'w''wb' に変更 します。

そして、MQL5で書かれたExpert Advisorで、 FILE_ANSI フラグの 代わりに FILE_BIN フラグ 。おそらく、csvファイルではなく、datファイルに書き込む必要があります。

マキシムさん、ヒントをありがとうございました!


.


必ずしもそうとは限りません。

st = b 'ハローワールド'

または

'helloworld'.encode('ascii')

を選択し、ファイルに書き出す。それをmt5で読んでみる。

 
Maxim Dmitrievsky:

エンコーディングを選択する必要はありません。

st = b 'ハローワールド

または

'helloworld'.encode('ascii')

を選択し、ファイルに書き出す。それをmt5で読んでみる。

マキシム、本当に ありがとう、そして神のご加護を!

私にとって最も重要なことは、問題の本質を教えてくれたことです。Expert Advisorでは、セルA1の単語をコンピュータのキーボードから入力したcsvファイルをテストしたときのままにしておきました。しかし、Pythonで書かれたプログラムコードについては、インターネットでこんなヒントを見つけた:

with open(save_file, 'w',  encoding='cp1251',  errors='replace', newline='') as save:

不足している部分を赤で強調しました!この行がPythonでコードを書くときに誰かの役に立つことを願っています!

ありがとう、ウラジミール。

 

こんにちは。

pythonのmatplotlib/plotlyで解決したい問題があります:

1.メインウィンドウにレンダリング用の OHLC があります。

2.サブウィンドウに描画するデータが ある。

簡単な描画を行うにはどのようなコードを書けばよいですか? 簡単なpythonコードを教えてください。

例

 

このコードで困っています:

from MetaTrader5 import *
from datetime import date
import pandas as pd 
import matplotlib.pyplot as plt 

# Initializing MT5 connection 
MT5Initialize()
MT5WaitForTerminal()

print(MT5TerminalInfo())
print(MT5Version())

次のように書かれています。

Traceback (most recent call last):
  File "C:/Programs/PycharmProjects/nc/main.py", line 8, in <module>
    MT5Initialize()
NameError: name 'MT5Initialize' is not defined

Process finished with exit code 1

私はまだpythonの初心者です。

 
Сергей Таболин:

そして、このコードには問題がある:

曰く

私はまだpythonの初心者です。

前回の記事の例を見てください。ここでは古いバージョンのパッケージが使われています。もちろん、pip install で最初にインストールする必要があります。