MetaTrader 5 Python User Group - メタトレーダーでPythonを使用する方法 - ページ 75

 
MrBrooklin:

はい、エクセルで開いています。今のところ、開いているEUR_USD_QUOTE.csvファイルの気配値をリアルタイムで更新することはできません。

表を見て、見積もりがどう変わるかを見るというものでした。

敬具 ウラジミール

だから、PythonやExelとは関係ないんです。ファイルを開き、Exelにデータを取り込みました。その中に、内蔵のVBAを使って、プログラムを書いていただきます。

Pythonのプログラムは必要ない、VBAを使う方が簡単だ。あまり扱ったことはありませんが、GETができるのは間違いないでしょう。

Самоучитель по Excel VBA
Самоучитель по Excel VBA
  • 2020.05.11
  • Антон Андронов
  • office-guru.ru
Данный учебник является введением в язык программирования Excel VBA (Visual Basic for Applications). Изучив VBA, Вы сможете создавать макросы и выполнять в Excel практически любые задачи. Вы очень...
 
Alexey Volchanskiy:

だから、PythonやExelとは関係ないんです。ファイルを開いて、データがエクセルに読み込まれて、それでおしまい。そして、その中に組み込みVBAを使って プログラムを書く必要があります

Pythonのプログラムは必要ない、VBAを使う方が簡単だ。あまり扱ったことはありませんが、GETができるのは間違いないでしょう。

アレクセイさん、こんにちは。

EUR_USD_QUOTE.csvファイルを閉じて、すぐに新しい気配値で開き直すようなプログラムコードをPYTHONで書くことはできないのでしょうか?

VBAのことはまだ何も知らないのですが、教えてくれてありがとうございます。

ウラジミールさん、ありがとうございます。

 
Maxim Dmitrievsky:

Excelでファイルを開くのですか? 独占的にファイルを開くのですね。設定のどこかで、他のアプリケーション/ユーザーがファイルを変更することを許可する必要があります。

もしかしたら、http://blog.depit.ru/odnovremennaya-rabota-v-excel/ が役に立つかもしれません。

一般に、他のアプリケーションで開いたファイルを修正することはできません。

マキシム、ソースコードに実装されているように、EUR_USD_QUOTE.csvファイルを最初に開き、ある間隔の後、確定したプログラムコードの影響で一瞬閉じ、すぐにまた開く、ただし新しい気配値で、というのは難しいでしょうか?そして、無限に続く...

ウラジミールさん、ありがとうございます。

 
MrBrooklin:

マキシムさん、EUR_USD_QUOTE.csvファイルをまずソースコードに実装されている通りに開き、一定時間経過後、確定したプログラムコードの影響で一瞬閉じてから、新しい気配値で再び開くようにするのは難しいでしょうか?そして、無限に続く...

ウラジミールさん、ありがとうございます。

お試しください

import csv
import requests
from bs4 import BeautifulSoup
import os


def get_data(url_to_scrap='https://ru.investing.com/currencies/streaming-forex-rates-majors',
             file=None, save_file="Name.csv"):
    if url_to_scrap is not None:
        header = {'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
                  'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0'}
        r = requests.get(url_to_scrap, headers=header)
        data = BeautifulSoup(r.content, 'html.parser')
    else:
        data = BeautifulSoup(open(file), 'html.parser')
    table = data.find('tr', id='pair_1')
    table = table.find_all(class_='pid-1-bid')
    row_data = []
    for row in table:
        row_data.append([row.get_text()])
    with open(save_file, 'w') as save:
        for row in row_data:
            writer = csv.writer(save, delimiter=';')
            writer.writerow(row)
    os.startfile(save_file)


from datetime import datetime
import time


t = datetime.now().hour
t2 = t

while True:
    t = datetime.now().hour
    if(t2 != t):
        os.system("TASKKILL /F /IM excel.exe")
        get_data(save_file='EUR_USD_QUOTE.csv')
        t2 = t
    time.sleep(10)


 
Alexey Volchanskiy:

だから、パイソンもエクセルも関係ないんです。ファイルを開いて、エクセル内のデータがカウントされ、それで終わり。そして、その中に内蔵のVBAで プログラムを書く必要があります。

そして、もしそうなら、Python上のプログラムは必要なく、VBAですべてを一度に行う方が簡単です。あまり一緒に仕事をしたことはないが、GETはできるはずだ。

VBAも必要ありません。最初はエクセルを使うだけでいいんです。英語で説明書を書こうと思うのですが...。新しいワークブックを作成します。データタブ>データ取得>他のソースから>ウェブからをクリックし、url欄にウェブアドレスを貼り付ける。次に、[すべてのオプションを更新] > [接続のプロパティ]をクリックし、n分ごとに自動的に更新するように設定します。

 
MrBrooklin:

マキシム、それがソースコードに実装されていたとして、EUR_USD_QUOTE.csvファイルが最初に開いて、第二に変更されたコードの影響下に時間のいくつかの間隔で閉じ、すぐに再オープンすることがいかに難しいですが、新しい引用符で、?そして、無限大に...。

ウラジミールさん、謹んで申し上げます。

エクセルウィンドウを開いたままにしておくと、エクセルによる書き込みがロックされます。ロックされたファイルを考慮したロジックを追加する必要があります。また、なぜウェブをかき集めて引用しているのですか?なぜMetaTraderを使って相場を集めないのですか?意味がないんです。

import itertools
import os
import pathlib

import bs4
import requests


def main():
    url = 'https://ru.investing.com/currencies/streaming-forex-rates-majors'
    r = requests.get(url, headers={'user-agent': 'Python Agent'})
    soup = bs4.BeautifulSoup(r.content, 'lxml')
    eurusd_bid = soup.find('td', 'pid-1-bid').text.replace(',', '.')
    for i in itertools.count():
        file = pathlib.Path() / f'eurusd_bid_{i}.csv'
        try:
            file.write_text(eurusd_bid)
            os.startfile(file)
            break
        except PermissionError:
            continue


if __name__ == '__main__':
    main()
 
Maxim Dmitrievsky:

を試してみてください。


マキシムさん、ありがとうございました。

すでに試しています。ループが開始されましたが、ファイルはまだ開かれていません。ループを作動させたまま、待つことにします。

ウラジミールさん、ありがとうございます。


P.S. Pardon!1時間 分の価値があるなんて、一度も気にしたことがない。EUR_USD_QUOTE.csvファイルを開いた瞬間に 変更しましたが、Pycharmの 実行タブにこの メッセージが表示されました。

その後、さらに1分ほどでファイルを閉じて開き直したが、Exelではスプレッドシートの左側に、前に開いたテキストを保存するかどうかを尋ねるタブが表示された。この先どうなるのかと少し待っていると、サイクルが止まり、こんなメッセージが表示されました。

������������������������������������������������������������������������ 16 ������������������������ 16 �������������������� 17
������������������������������������������������������������������� 164.5% ※1BE5:Excel.exe, 3168, ※1
Traceback (most recent call last):
File "C:/Users/Vladimir/PycharmProjects/My_Python_Project/9.py", line 37, in <module>
get_data(save_file='EUR_USD_QUOTE.Python'), line 37, in <module> get_data(save_file='EUR_USD_QUOTE.csv')
File "C:/Users/Vladimir/PycharmProjects/My_Python_Project/9.py", line 23, in get_data
with open(save_file, 'w') as save:
PermissionError: [Errno 13] 権限拒否: 'EUR_USD_QUOTE.csv'.

今のところこのような結果ですが、すでに進歩はしています

ウラジミールさん、ありがとうございます。

 
nicholish en:

エクセルウィンドウを開いたままにしておくと、エクセルによる書き込みがロックされます。ロックされたファイルを考慮したロジックを追加する必要があります。また、なぜウェブをかき集めて引用しているのですか?なぜMetaTraderを使って相場を集めないのですか?意味がないんです。

Excelのウィンドウを開いたままにしておくと、Excelへの書き込みがロックされます。ロックされたファイルを考慮したロジックを追加する必要があります。また、なぜインターネットで見積もりを探しているのですか?MetaTraderで気配値を収集してはいかがでしょうか。それじゃ意味がない。(私個人から: ニコニコ 動画さん、すみません 英語ができないのでGoogle翻訳を使いました)

Python言語 を使ってインターネットから引用を取得する方法を学びたいのですが、 ターミナルではなく、例えばcsvのようなファイルに引用を見る ことができるようになります。初歩的な作業だと思っていたのですが、そうではないことがわかりました。私は道を間違えているのかもしれないが、何も探さない者は何も見つけられないのだ。

では、ご提案いただいたコードに移りましょう。 Pycharmで コードを起動したところ、以下のようなメッセージが表示されました。

Traceback (most recent call last):
File "C:/Users/Vladimir/PycharmProjects/My_Python_Project/10.py", line 25, in <module>
main()
File "C:/Users/Vladimir/PycharmProjects/My_Python_Project/10.Python_Project10.py", line 13, in main
eurusd_bid = soup.find('td', 'pid-1-bid').text.replace(',', '.')
AttributeError: 'NoneType' object has no attribute 'text'

Process finished with exit code 1

コードの動きを見るには、何を変えればいいのでしょうか?

尊敬します、ウラジミールさん。

 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

MetaTrader 5 Python User Group - メタトレーダーでPythonを使用する方法

MrBrooklin, 2020.08.19 22:05

マキシムさん、ありがとうございました。

すでに試しています。ループは実行されていますが、ファイルはまだ開かれていません。ループを作動させたまま、待つことにします。

ウラジミールさん、ありがとうございます。


P.S. Pardon!1時間 分の価値があるなんて、一度も気にしたことがない。EUR_USD_QUOTE.csvファイルを開いた瞬間に 変更しましたが、Pycharmの 実行タブにこの メッセージが表示されました。

その後、さらに1分ほどでファイルを閉じて開き直したが、Exelではスプレッドシートの左側に、前に開いたテキストを保存するかどうかを尋ねるタブが表示された。この先どうなるのかと少し待っていると、サイクルが止まり、こんなメッセージが表示されました。

������������������������������������������������������������������������ 16 ������������������������ 16 �������������������� 17
������������������������������������������������������������������� 164.5% ※1BE5:Excel.exe, 3168, ※1
Traceback (most recent call last):
File "C:/Users/Vladimir/PycharmProjects/My_Python_Project/9.py", line 37, in <module>
get_data(save_file='EUR_USD_QUOTE.Python'), line 37, in <module> get_data(save_file='EUR_USD_QUOTE.csv')
File "C:/Users/Vladimir/PycharmProjects/My_Python_Project/9.py", line 23, in get_data
with open(save_file, 'w') as save:
PermissionError: [Errno 13] 権限拒否: 'EUR_USD_QUOTE.csv'.

今のところこのような結果ですが、すでに進歩はしています

敬具 ウラジミール

マキシム、何が起こったかわからないけど、もう一度あなたのコードを試したら、あら不思議!ループ再生が始まりましたが、ひとつだけ注意点があります。前回同様、左側のExcelに保存を求めるタブが表示されましたが、たいしたことではありません。スクリーンショットを添付します。6サイクルの経過を待って、プログラムを終了しました。あとは、コードの一行一行を勉強して、自分が何を書いたのか、何のために書いたのかを理解するようにします。ありがとうございました。

敬具 ウラジミール



追記:左側に保存を示唆するタブが表示されるのはなぜか、というアイデアが浮かびました。ただ、プログラミングコードが保存せずにファイルを閉じてしまうので、エクセルがファイル保存を提案し、今後も提案し続けるのでしょう。

 

中国のポケベルを読むいろいろ考えて...。

それが、Pythonと MQLの融合についての 私の主張です。どちらも近い言語ですが、MQLはシンプルで、PythonはBASICのような原始的な言語です。MQLでプログラミングする人は、誰でも簡単にPythonで何かを作ることができますし、その逆もしかりです。このテーマに対する興味は?まず、非常に怠惰な人向けです。まあ、よく似た言葉で何か書いて...。Pythonに多く存在するライブラリと、MQLで有名なインターフェースの2つの要素に興味があるのかもしれません。そこで、PythonからMQLのインターフェースへのアクセス、MQLからPythonのライブラリへのアクセスを実現してはどうでしょうか。それだけです。