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

 

皆さん、こんにちは。

スレッドに書いていることが正しいかどうかわかりませんが、訂正していただけると幸いです。そして、もうひとつはっきりさせておきたいのは、私はプログラミングは全くのゼロだということです

そこで、有名なサイトからEUR/USDペアの 気配値を取得し、EUR_USD_QUOTE.csvファイルのA1セルに書き込むPYTHONで書かれた小さなプログラムのコードを発見しました。

もし、どなたか差し支えなければ、EUR_USD_QUOTE.csv ファイルの同じセル A1 に1時間ごとに気配値が自動的に更新されるように、このコードを改良してください。

敬具 ウラジミール

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)


get_data(save_file='EUR_USD_QUOTE.csv')
Пара EUR/USD: технический анализ, новости Forex, фундаментальный анализ - Блоги трейдеров и аналитика финансовых рынков
Пара EUR/USD: технический анализ, новости Forex, фундаментальный анализ - Блоги трейдеров и аналитика финансовых рынков
  • www.mql5.com
Валютная пара EUR/USD — самая ликвидная, поскольку в ней участвуют первая и вторая по значимости мировые резервные валюты. Это подтверждается и статистически: доллар и евро самые крупные по объему
 
MrBrooklin:

皆さん、こんにちは。

スレッドに書いていることが正しいかどうかわかりませんが、訂正していただけると幸いです。そして、もうひとつはっきりさせておきたいのは、私はプログラミングは全くのゼロだということです

そこで、有名なサイトからEUR/USDペアの 気配値を取得し、EUR_USD_QUOTE.csvファイルのA1セルに書き込むPYTHONで書かれた小さなプログラムのコードを発見しました。

もし、どなたか差し支えなければ、EUR_USD_QUOTE.csv ファイルの同じセル A1 に1時間ごとに気配値が自動的に更新されるように、このコードを改良してください。

敬具 ウラジミール

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):
        get_data(save_file='EUR_USD_QUOTE.csv')
        t2 = t
    time.sleep(10)

 
Maxim Dmitrievsky:

Maximさん、ありがとうございます!

完成したコードをPyCharm開発環境で起動しましたが、まだ何も起きず、「Rerun」ボタンだけが作動しています。私はまだ理解できません - コードが動作するのかしないのか?

問題」タブに表示される追加情報があります:

  1. PEP 8: E402 モジュールレベルのインポートがファイルの先頭にない: 28 - これは、from datetimeimport datetimeのコードを持つ行に関係します。
  2. PEP 8: E402 モジュールレベルのインポートがファイルの先頭にない: 29 - これは行のインポート 時間を指しています。
  3. 冗長な括弧を 取り除く - コードからこれらの括弧を取り除くと、メッセージが消えました。

Maximさん、コードが動いているかどうかを理解するために、少なくとも1分で今ファイルの引用を一時的に更新させることができますか、そうでなければ私は丸1時間待たなければなりませんか...?

もうひとつ。先に公開した最初のコードを起動した後、EUR_USD_QUOTE.csv ファイルが現在の気配値ですぐに開かれましたが、変更したコードではこのファイルを開くことができません。

もしかして、私のやり方が悪いのか、何か理解できていないのか?どうか、アドバイスをお願いします。

ウラジミールさん、ありがとうございます。
 
MrBrooklin:
Maximさん、ありがとうございます! 完成したコードをPyCharm開発環境で実行しましたが、まだ何も起きず、「再実行」ボタンだけが作動しています。私はまだ理解できません - コードが動作するのかしないのか?問題」タブに表示される追加情報があります:





  1. PEP 8: E402 モジュールレベルのインポートがファイルの先頭にない: 28 - これは、from datetimeimport datetimeのコードを持つ行に関係します。
  2. PEP 8: E402 モジュールレベルのインポートがファイルの先頭にない: 29 - これは行のインポート 時間を指しています。
  3. 冗長な括弧を 取り除く - コードからこれらの括弧を取り除くと、メッセージが消えました。

マキシム、あなたは一時的にコードが動作しているかどうかを理解するために、少なくとも1分で今、ファイルの更新で引用を行うことができ、私は丸1時間待たなければならない...?

もうひとつ。先に公開した最初のコードを起動した後、EUR_USD_QUOTE.csv ファイルが現在の気配値ですぐに開かれましたが、変更したコードではこのファイルを開くことができません。

もしかして、私のやり方が悪いのか、何か理解できていないのか?どうか、アドバイスをお願いします。

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

最初の2つのエラー - これをファイルの一番上に移動してください。

from datetime import datetime
import time

これは単なるプログラミングスタイルの警告であり、エラーではありません。

簡単なチェックのために、両方のフィールドを置き換えます

hour

まで

第二

の場合、チェックタイマーが10秒に設定されているため、10秒ごとにファイルが書き込まれるはずです。

追伸:ただ、あまり調子に乗ってリクエストしすぎると、出入り禁止になりますよ。

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

while True:
    t = datetime.now().hour
    if(t2 != t):
        get_data(save_file='EUR_USD_QUOTE.csv')
        t2 = t
    time.sleep(10)

括弧の上で私はエラーを持っていない

このコードでは、次の時間まで待機し、その後、保存するのは

 

これらのモジュールがインストールされていない

import requests
from bs4 import BeautifulSoup

ので、確認はしていません。

 
Maxim Dmitrievsky:

Maximさん、"科学的実験 "方式でコードを少し変えてみたところ、起動後1分でEUR_USD_QUOTE.csvファイルを 現在の気配値で開くことができました(あらかじめご容赦ください)。

from datetime import datetime
import time
t = datetime.now().minute  # здесь поставил минуту
t2 = t

while True:
    t = datetime.now().minute  # здесь поставил минуту
    if t2 != t:
        get_data(save_file='EUR_USD_QUOTE.csv')
        t2 = t
    # Code executed here
    time.sleep(1)  # и здесь 10 изменил на 1.

しかし、EUR_USD_QUOTE.csv ファイルを次の1分間で閉じないと、次のメッセージが表示されます。

Traceback (most recent call last):
File "C:/Users/Vladimir/PycharmProjects/My_Python_Project/8.py", line 36, in <module>
get_data(save_file='EUR_USD_QUOTE.Python'), file 36, in <module> get_data(save_file='EUR_USD_QUOTE.
File "C:/Users/Vladimir/PycharmProjects/My_Python_Project/8.py", line 21, in get_data
with open(save_file, 'w') as save:
PermissionError: [Errno 13] Permission denied: 'EUR_USD_QUOTE.csv'

Process finished with exit code 1

プログラムコードが実行された後、人手を介さずに処理を継続させるにはどうしたらよいですか?

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

 
MrBrooklin:

Maximさん、"科学的実験 "方式でコードを少し変えてみたところ、起動後1分でEUR_USD_QUOTE.csvファイルを 現在の気配値で開くことができました(あらかじめご容赦ください)。


しかし、EUR_USD_QUOTE.csv ファイルを次の1分間で閉じないと、次のメッセージが表示されます。

Traceback (most recent call last):
File "C:/Users/Vladimir/PycharmProjects/My_Python_Project/8.py", line 36, in <module>
get_data(save_file='EUR_USD_QUOTE.Python'), file 36, in <module> get_data(save_file='EUR_USD_QUOTE.
File "C:/Users/Vladimir/PycharmProjects/My_Python_Project/8.py", line 21, in get_data
with open(save_file, 'w') as save:
PermissionError: [Errno 13] Permission denied: 'EUR_USD_QUOTE.csv'

Process finished with exit code 1

プログラムコードが実行された後、人手を介さずに処理を継続させるにはどうしたらよいですか?

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

あ、そうだ、なぜかプロセスがビジー状態なので、os.startfile()のこの行を削除してください。

os.startfile(save_file)

и

import os

取り外しが可能

確認したところ、動作しています。

 
Maxim Dmitrievsky:

で、はい、プロセスが何らかの理由でビジー状態なので、os.startfile()のその行を削除してください。

и

を削除することができます。

確認したところ、動作しています。

マキシム、アドバイス通り全てやりました。それ以上の問題は報告されていません。プログラムは起動しましたが、EUR_USD_QUOTE.csvファイルが閉じられ、それを開いて放置すると、PermissionError: [Errno 13] Permission denied: 'EUR_USD_QUOTE.csv' という同じメッセージが表示され、開いた ファイルの相場はもう更新されない場合、どのようにして相場表を見ることができますか。

改めて失礼します。私はプログラミングが全くのゼロであることを隠していたわけではありません。

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

 
MrBrooklin:

マキシムさん、アドバイスいただいたことはすべて実行しました。不具合に関するメッセージはなくなりました。さて、EUR_USD_QUOTE.csvファイルを閉じて、開いたままにしておくと、PermissionError: [Errno 13] Permission denied: 'EUR_USD_QUOTE.csv' と同じメッセージが出て、開いた ファイルの相場は更新されなくなりますが、どうすればいいのでしょうか?

改めて失礼します。私はプログラミングが全くのゼロであることを隠していたわけではありません。

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

Excelでファイルを開いていませんか? ファイルを独占的に開いてしまうということです。他のアプリケーション/ユーザーがファイルを変更することを許可する必要があります。

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

一般に、他のプログラムで開いたファイルを修正することはできません。

Одновременная работа нескольких пользователей с таблицами Excel
Одновременная работа нескольких пользователей с таблицами Excel
  • blog.depit.ru
Возможности системы Microsoft Excel позволяют работать по наполнению одного файла электронных таблиц одновременно нескольким пользователям. Для того, чтобы начать совместную работу с документом, достаточно в документе Microsoft Excel перейти в меню « Рецензирование » — « Доступ к книге » и выбрать « Разрешить изменять файл нескольким...
 
Maxim Dmitrievsky:

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

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

他のプログラムで開いているファイルを修正することはできません。

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

表を見て、見積もりの変化を確認しようというものでした。

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