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

 
MrBrooklin:

Ja, ich öffne sie in Excel. Bislang ist es nicht möglich, den Kurs in der geöffneten Datei EUR_USD_QUOTE.csv in Echtzeit zu aktualisieren.

Die Idee war, sich die Tabelle anzuschauen und zu sehen, wie sich die Quote verändert.

Mit freundlichen Grüßen, Vladimir.

Es hat also nichts mit Python oder Exel zu tun. Die Datei wurde geöffnet und die Daten wurden in Exel importiert. Das Programm müssen Sie mit dem eingebauten VBA schreiben.

Sie brauchen kein Python-Programm, es ist einfacher, VBA zu verwenden. Ich habe noch nicht viel damit gearbeitet, aber ich bin sicher, dass es GET kann.

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

Es hat also nichts mit Python oder Exel zu tun. Sie haben die Datei geöffnet, die Daten wurden in Exel eingelesen und das war's. Dann müssen Sie darin ein Programm mit eingebettetem VBA schreiben

Sie brauchen kein Python-Programm, es ist einfacher, VBA zu verwenden. Ich habe noch nicht viel damit gearbeitet, aber ich bin sicher, dass es GET kann.

Hallo Alexey!

Ist es unmöglich, einen Programmcode in PYTHON so zu schreiben, dass die Datei EUR_USD_QUOTE.csv geschlossen und sofort wieder mit einem neuen Kurs geöffnet wird?

Ich kenne mich mit VBA noch nicht aus, aber danke für den Tipp.

Mit freundlichen Grüßen, Vladimir.

 
Maxim Dmitrievsky:

Wenn Sie die Datei mit Excel öffnen, wird die Datei monopolistisch geöffnet. Irgendwo in den Einstellungen müssen Sie 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 einer anderen Anwendung geöffnete Datei nicht ändern.

Maxim, wie schwierig ist es, die Datei EUR_USD_QUOTE.csv zunächst so zu öffnen, wie sie im Quellcode implementiert wurde, und dann, nach einem bestimmten Intervall, unter dem Einfluss des endgültigen Programmcodes für eine Sekunde zu schließen und sofort wieder zu öffnen, aber mit einem neuen Kurs? Und so weiter bis ins Unendliche...

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin:

Maxim, wie schwierig ist es, die Datei EUR_USD_QUOTE.csv zunächst so zu öffnen, wie sie im Quellcode implementiert wurde, und nach einem bestimmten Zeitintervall unter dem Einfluss des endgültigen Programmcodes für eine Sekunde zu schließen und dann wieder zu öffnen, aber mit einem neuen Kurs? Und so weiter bis ins Unendliche...

Mit freundlichen Grüßen, Vladimir.

Versuchen Sie dies

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:

Also hatten weder Python noch Exel etwas damit zu tun. Sie öffnen die Datei, die Daten in Exel werden gezählt und das war's. Es ist dann notwendig, ein Programm darin auf dem eingebauten VBA zu schreiben

Und wenn ja, ist das Programm auf Python nicht erforderlich, es ist einfacher, alles auf einmal in der VBA zu tun. Ich habe nicht viel mit ihm gearbeitet, aber ich bin mir sicher, dass er GET machen kann.

Sie brauchen nicht einmal VBA. Zu Beginn müssen Sie lediglich Excel verwenden. Ich werde die Anweisungen auf Englisch schreiben... Erstellen Sie eine neue Arbeitsmappe. Klicken Sie auf die Registerkarte "Daten" > "Daten abrufen" > "Aus anderen Quellen" > "Aus dem Web", und fügen Sie die Webadresse in das Feld "URL" ein. Klicken Sie anschließend auf Alle weiteren Optionen aktualisieren > Verbindungseigenschaften und konfigurieren Sie die automatische Aktualisierung alle n Minuten.

 
MrBrooklin:

Maxim, wie schwierig ist es, die Datei EUR_USD_QUOTE.csv zuerst zu öffnen, wie es im Quellcode implementiert wurde, und in einem gewissen Zeitintervall unter dem Einfluss von geändertem Code für eine zweite geschlossen und sofort wieder geöffnet, aber mit einem neuen Kurs? Und so weiter bis ins Unendliche...

Hochachtungsvoll, Vladimir.

Wenn Sie das Excel-Fenster geöffnet lassen, wird die Datei für das Schreiben durch Excel gesperrt. Sie müssen eine Logik hinzufügen, um eine gesperrte Datei zu berücksichtigen. Und warum durchforsten Sie das Internet nach Zitaten? Warum verwenden Sie MetaTrader nicht zum Sammeln von Kursen? Das macht keinen Sinn.

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:

Versuchen Sie dies.


Vielen Dank, Maxim!

Ich bin schon dabei, es auszuprobieren. Der Zyklus hat begonnen, aber die Datei wird noch nicht geöffnet. Ich werde die Schleife in Betrieb lassen und abwarten.

Mit freundlichen Grüßen, Vladimir.


P.S. Verzeihung! Ich habe nicht sofort darauf geachtet, was eine Stunde wert ist. Ich änderte es auf Minute EUR_USD_QUOTE.csv Datei geöffnet wurde, aber ich bekam diese Meldung in Run Registerkarte von Pycharm:

�訡��: �� 㤠���� ���� ����� "excel.exe".

Nach einer weiteren Minute oder so wurde die Datei geschlossen und wieder geöffnet, aber in Exel erschien eine Registerkarte auf der linken Seite des Arbeitsblatts, die mich aufforderte, den zuvor geöffneten Text zu speichern. Ich wartete noch etwas länger, um zu sehen, was als Nächstes passieren würde, aber dann stoppte der Zyklus und eine Meldung wie diese erschien:

�ᯥ譮: ����� "EXCEL.EXE", � �����䨪��஬ 4208, � �����襭.
�ᯥ譮: ����� "EXCEL.EXE", � �����䨪��஬ 3168, �� �����襭.
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.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] Permission denied: 'EUR_USD_QUOTE.csv'

Das ist das bisherige Ergebnis, aber ich habe schon Fortschritte gemacht!

Mit freundlichen Grüßen, Vladimir.

 
nicholish en:

Wenn Sie das Excel-Fenster geöffnet lassen, wird die Datei für das Schreiben durch Excel gesperrt. Sie müssen eine Logik hinzufügen, um eine gesperrte Datei zu berücksichtigen. Und warum durchforsten Sie das Internet nach Zitaten? Warum verwenden Sie MetaTrader nicht zum Sammeln von Kursen? Das macht keinen Sinn.

Die Datei wird für das Schreiben in Excel gesperrt, wenn Sie das Excel-Fenster geöffnet lassen. Sie müssen eine Logik hinzufügen, um die gesperrte Datei zu berücksichtigen. Außerdem: Warum suchen Sie im Internet nach Zitaten? Warum verwenden Sie MetaTrader nicht zum Sammeln von Kursen? Das macht keinen Sinn. (Von mir persönlich: Sorry, nicholish en, ich spreche kein Englisch, also habe ich Google Translate benutzt)

Ich möchte lernen, wie man Zitate aus dem Internet mit Python Sprache zu nehmen, so dass ich sie nicht in Terminal, sondern in einer Datei, zum Beispiel csv aussehen kann . Ich dachte, das sei eine einfache Aufgabe, aber das ist sie nicht. Vielleicht bin ich auf der falschen Fährte, aber wer nichts sucht, findet nichts.

Gehen wir nun zu dem von Ihnen vorgeschlagenen Code über. Nachdem ich den Code in Pycharm gestartet habe, sah ich die folgende Meldung:

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.py", line 13, in main
eurusd_bid = soup.find('td', 'pid-1-bid').text.replace(',', '.')
AttributeError: 'NoneType'-Objekt hat kein Attribut 'text'

Prozess beendet mit Exit-Code 1

Was sollte ich ändern, um zu sehen, wie der Code funktioniert?

Mein Respekt, Vladimir.

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

MetaTrader 5 Python User Group - Wie man Python in Metatrader verwendet

MrBrooklin, 2020.08.19 22:05

Vielen Dank, Maxim!

Ich probiere es bereits aus. Die Schleife läuft, aber die Datei wird noch nicht geöffnet. Ich werde die Schleife in Betrieb lassen und abwarten.

Mit freundlichen Grüßen, Vladimir.


P.S. Verzeihung! Hat nicht sofort darauf geachtet, was Stunde steht. Ich änderte es auf Minute EUR_USD_QUOTE.csv Datei geöffnet wurde, aber ich bekam diese Meldung in Run Registerkarte von Pycharm:

�訡��: �� 㤠���� ���� ����� "excel.exe".

Nach einer weiteren Minute oder so wurde die Datei geschlossen und wieder geöffnet, aber in Exel erschien eine Registerkarte auf der linken Seite des Arbeitsblatts, die mich aufforderte, den zuvor geöffneten Text zu speichern. Ich wartete noch etwas länger, um zu sehen, was als Nächstes passieren würde, aber dann stoppte der Zyklus und eine Meldung wie diese erschien:

�ᯥ譮: ����� "EXCEL.EXE", � �����䨪��஬ 4208, � �����襭.
�ᯥ譮: ����� "EXCEL.EXE", � �����䨪��஬ 3168, �� �����襭.
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.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] Permission denied: 'EUR_USD_QUOTE.csv'

Das ist das bisherige Ergebnis, aber ich habe schon Fortschritte gemacht!

Mit freundlichen Grüßen, Vladimir.

Maxim, ich weiß nicht, was passiert ist, aber ich habe deinen Code noch einmal ausprobiert und oh mein Gott! Der Schleifenprozess hat begonnen, allerdings mit einer Einschränkung. Wie zuvor erschien in Excel auf der linken Seite eine Registerkarte, die mich aufforderte, die Datei zu speichern, aber das ist nicht weiter schlimm. Im Anhang finden Sie einen Screenshot. Ich wartete, bis die sechs Zyklen vorüber waren, und verließ das Programm. Jetzt werde ich jede einzelne Zeile des Codes studieren und versuchen zu verstehen, was ich geschrieben habe und wofür es gedacht ist. Herzlichen Dank!

Mit freundlichen Grüßen, Vladimir.



P.S. Es ist mir eine Idee gekommen, warum auf der linken Seite ein Reiter erscheint, der zum Speichern der Datei auffordert. Nur der Programmiercode schließt die Datei, ohne sie zu speichern, deshalb bietet Exel wahrscheinlich auch weiterhin an, die Datei zu speichern.

 

Lesen des chinesischen Pagers. Ich habe viel nachgedacht...

Das ist mein Punkt bei der Integration von Python und MQL. Beide Sprachen liegen nahe beieinander, aber MQL ist einfach und Python ist primitiv, wie BASIC. Jeder, der in MQL programmiert, kann leicht etwas in Python erstellen und andersherum. Wie groß ist das Interesse an diesem Thema? Erstens ist es etwas für sehr faule Menschen. Nun, schreiben Sie etwas in einer sehr ähnlichen Sprache... Das Interesse könnte in zwei Komponenten liegen: Bibliotheken, von denen es in Python viele gibt, und Schnittstellen, für die MQL bekannt ist. Warum also nicht den Zugriff von Python auf MQL-Schnittstellen und den Zugriff von MQL auf Python-Bibliotheken ermöglichen? Das war's.

Grund der Beschwerde: