MetaTrader 5 Python User Group - wie man Python in Metatrader verwendet - Seite 74

 

Guten Tag zusammen!

Ich weiß nicht, ob ich im richtigen Thread schreibe, aber ich hoffe, Sie können mich korrigieren. Und noch etwas zur Klarstellung - ich bin eine totale Null im Programmieren!

Ich habe einen Code für ein kleines, in PYTHON geschriebenes Programm gefunden, das eine Notierung des Paares EUR/USD von einer bekannten Website übernimmt und sie in die Zelle A1 der Datei EUR_USD_QUOTE.csv schreibt.

Wenn jemand nichts dagegen hat, verbessern Sie bitte diesen Code, so dass ein Kurs automatisch in der gleichen Zelle A1 der Datei EUR_USD_QUOTE.csv jede Stunde aktualisiert wird.

Mit freundlichen Grüßen, Vladimir.

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:

Guten Tag zusammen!

Ich weiß nicht, ob ich im richtigen Thread schreibe, aber ich hoffe, Sie können mich korrigieren. Und noch etwas zur Klarstellung - ich bin eine totale Null im Programmieren!

Ich habe einen Code für ein kleines, in PYTHON geschriebenes Programm gefunden, das eine Notierung des Paares EUR/USD von einer bekannten Website übernimmt und sie in die Zelle A1 der Datei EUR_USD_QUOTE.csv schreibt.

Wenn jemand nichts dagegen hat, verbessern Sie bitte diesen Code, so dass ein Kurs automatisch in der gleichen Zelle A1 der Datei EUR_USD_QUOTE.csv jede Stunde aktualisiert wird.

Mit freundlichen Grüßen, Vladimir.

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:

Danke, Maxim!

Ich habe den fertigen Code in der PyCharm-Entwicklungsumgebung gestartet, aber es passiert noch nichts, nur die Schaltfläche "Rerun" ist aktiviert. Ich kann es noch nicht verstehen - funktioniert der Code oder nicht?

Außerdem werden auf der Registerkarte "Probleme" zusätzliche Informationen angezeigt:

  1. PEP 8: E402 module level import not at top of file: 28 - dies betrifft die Zeile mit dem Code from datetime import datetime
  2. PEP 8: E402 Modul-Level-Import nicht am Anfang der Datei: 29 - dies betrifft die Zeile Importzeit
  3. Entfernen Sie überflüssige Klammern- als ich diese Klammern aus dem Code entfernte, verschwand die Meldung.

Maxim, können Sie vorübergehend machen das Zitat in der Datei zu aktualisieren jetzt mindestens in 1 Minute zu verstehen, ob der Code funktioniert oder nicht, sonst muss ich eine ganze Stunde warten...?

Noch eine Sache. Nachdem ich den ursprünglichen Code, den ich zuvor veröffentlicht hatte, gestartet hatte, wurde die Datei EUR_USD_QUOTE.csv sofort mit dem aktuellen Kurs geöffnet, während der modifizierte Code diese Datei nicht öffnen kann.

Vielleicht mache ich etwas falsch oder ich verstehe etwas nicht? Bitte, beraten Sie mich.

Mit freundlichen Grüßen, Vladimir.
 
MrBrooklin:
Danke, Maxim!

Ich habe den fertigen Code in der PyCharm-Entwicklungsumgebung ausgeführt, aber es passiert noch nichts, nur die Schaltfläche "Rerun" ist aktiviert. Ich kann es noch nicht verstehen - funktioniert der Code oder nicht?

Auf der Registerkarte "Probleme" werden einige zusätzliche Informationen angezeigt:

  1. PEP 8: E402 module level import not at top of file: 28 - dies betrifft die Zeile mit dem Code from datetime import datetime
  2. PEP 8: E402 Modul-Level-Import nicht am Anfang der Datei: 29 - dies bezieht sich auf die Zeit des Zeilenimports
  3. Entfernen Sie überflüssige Klammern- als ich diese Klammern aus dem Code entfernte, verschwand die Meldung.

Maxim, können Sie vorübergehend machen das Zitat in der Datei zu aktualisieren jetzt mindestens in 1 Minute zu verstehen, ob der Code funktioniert oder nicht, sonst muss ich eine ganze Stunde warten...?

Noch eine Sache. Nachdem ich den ursprünglichen Code, den ich zuvor veröffentlicht hatte, gestartet hatte, wurde die Datei EUR_USD_QUOTE.csv sofort mit dem aktuellen Kurs geöffnet, während der modifizierte Code diese Datei nicht öffnen kann.

Vielleicht mache ich etwas falsch oder ich verstehe etwas nicht? Bitte, beraten Sie mich.

Mit freundlichen Grüßen, Vladimir.

1. 2 Fehler - verschieben Sie dies einfach an den Anfang der Datei

from datetime import datetime
import time

Dies ist nur eine Warnung im Programmierstil, kein Fehler

Für eine schnelle Überprüfung ersetzen Sie beide Felder

hour

zu

zweite

die Datei sollte alle 10 Sekunden geschrieben werden, da der Prüf-Timer auf 10 Sekunden eingestellt ist.

P.S. Übertreiben Sie es nur nicht, sonst werden Sie wegen zu häufiger Anfragen gesperrt.

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)

bei Klammern habe ich keine Fehler

Dieser Code wartet bis zur nächsten Stunde und speichert dann nur

 

Ich habe diese Module nicht installiert

import requests
from bs4 import BeautifulSoup

habe also nicht nachgesehen

 
Maxim Dmitrievsky:

Maxim, ich habe Ihren Code ein wenig nach der Methode des "wissenschaftlichen Experiments" geändert (bitte entschuldigen Sie mich im Voraus) und es war möglich , die Datei EUR_USD_QUOTE.csv mit dem aktuellen Kurs innerhalb von 1 Minute nach dem Start zu öffnen.

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.

Aber wenn ich die Datei EUR_USD_QUOTE.csv nicht innerhalb der nächsten Minute schließe, erhalte ich diese Meldung:

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.csv')
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

Wie kann ich dafür sorgen, dass der Prozess nach der Ausführung des Programmcodes ohne menschliches Zutun weiterläuft?

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin:

Maxim, ich habe Ihren Code ein wenig nach der Methode des "wissenschaftlichen Experiments" geändert (bitte entschuldigen Sie mich im Voraus) und es war möglich , die Datei EUR_USD_QUOTE.csv mit dem aktuellen Kurs innerhalb von 1 Minute nach dem Start zu öffnen.


Aber wenn ich die Datei EUR_USD_QUOTE.csv nicht innerhalb der nächsten Minute schließe, erhalte ich diese Meldung:

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.csv')
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

Wie kann ich dafür sorgen, dass der Prozess nach der Ausführung des Programmcodes ohne menschliches Zutun weiterläuft?

Mit freundlichen Grüßen, Vladimir.

ah ja, weil der Prozess aus irgendeinem Grund mit os.startfile() beschäftigt ist, löschen Sie diese Zeile

os.startfile(save_file)

и

import os

kann entfernt werden

Ich habe es überprüft, es funktioniert.

 
Maxim Dmitrievsky:

und ja, da der Prozess aus irgendeinem Grund mit os.startfile() beschäftigt ist, löschen Sie diese Zeile

и

entfernt werden können.

Ich habe es überprüft, es funktioniert.

Maxim, ich habe alles getan, was Sie mir geraten haben. Es wurden keine weiteren Probleme gemeldet. Das Programm wurde gestartet, aber wie kann ich nun den Kurs anzeigen, wenn die Datei EUR_USD_QUOTE.csv geschlossen ist und wenn ich sie öffne und offen lasse, erscheint die gleiche Meldung, dass PermissionError: [Errno 13] Permission denied: 'EUR_USD_QUOTE.csv' und der Kurs in der geöffneten Datei nicht mehr aktualisiert wird?

Noch einmal: Bitte entschuldigen Sie mich, aber ich habe nie einen Hehl daraus gemacht, dass ich eine totale Null in Sachen Programmierung bin.

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin:

Maxim, ich habe alles getan, was Sie mir geraten haben. Es gibt keine Meldungen mehr über Probleme. Wie kann ich nun den Kurs anzeigen, wenn die Datei EUR_USD_QUOTE.csv geschlossen ist und wenn ich sie öffne und geöffnet lasse, erhalte ich die gleiche Meldung, dass PermissionError: [Errno 13] Permission denied: 'EUR_USD_QUOTE.csv' und der Kurs in der geöffneten Datei nicht mehr aktualisiert wird?

Bitte entschuldigen Sie mich noch einmal, ich habe nie einen Hehl daraus gemacht, dass ich in Sachen Programmierung eine absolute Null bin.

Mit freundlichen Grüßen, Vladimir.

Wenn Sie die Datei mit Excel öffnen, bedeutet dies, dass die Datei monopolistisch geöffnet wird. Sie müssen anderen Anwendungen/Benutzern erlauben, die Datei zu ändern.

Vielleicht hilft http://blog.depit.ru/odnovremennaya-rabota-v-excel/.

Im Allgemeinen können Sie eine in einem anderen Programm geöffnete Datei nicht ändern.

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

Sie öffnen die Datei mit Excel, so dass die Datei monopolistisch geöffnet wird. Sie müssen anderen Anwendungen/Benutzern irgendwo in den Einstellungen erlauben, die Datei zu ändern.

Vielleicht hilft http://blog.depit.ru/odnovremennaya-rabota-v-excel/.

Sie können eine in einem anderen Programm geöffnete Datei nicht ändern.

Ja, ich öffne sie in Excel. Ich kann den Kurs in der geöffneten Datei EUR_USD_QUOTE.csv immer noch nicht in Echtzeit aktualisieren.

Die Idee war, sich die Tabelle anzuschauen und die Änderungen im Angebot zu sehen.

Mit freundlichen Grüßen, Vladimir.

Grund der Beschwerde: