MetaTrader 5 Python Kullanıcı Grubu - Metatrader'da Python nasıl kullanılır - sayfa 74

 

Herkese iyi günler!

Doğru başlığa mı yazıyorum bilmiyorum ama umarım beni düzeltirsiniz. Ve bir açıklama daha - Programlamada tam bir sıfırım!

Böylece, iyi bilinen bir siteden EUR/USD çiftinin fiyatını alan ve EUR_USD_QUOTE.csv dosyasının A1 hücresine yazan PYTHON dilinde yazılmış küçük bir programın kodunu buldum.

Birisi için zor değilse, teklifin EUR_USD_QUOTE.csv dosyasının aynı A1 hücresinde her saat otomatik olarak güncellenmesi için lütfen kodu değiştirin.

Saygılarımla, 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 :

Herkese iyi günler!

Doğru başlığa mı yazıyorum bilmiyorum ama umarım beni düzeltirsiniz. Ve bir açıklama daha - Programlamada tam bir sıfırım!

Böylece, iyi bilinen bir siteden EUR/USD çiftinin fiyatını alan ve EUR_USD_QUOTE.csv dosyasının A1 hücresine yazan PYTHON dilinde yazılmış küçük bir programın kodunu buldum.

Birisi için zor değilse, teklifin EUR_USD_QUOTE.csv dosyasının aynı A1 hücresinde her saat otomatik olarak güncellenmesi için lütfen kodu değiştirin.

Saygılarımla, 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 :

Teşekkürler Maksim!

Değiştirilen kodu PyCharm geliştirme ortamında çalıştırdım, ancak şu ana kadar hiçbir şey olmuyor, yalnızca "Yeniden Çalıştır" düğmesi (yeniden başlat) etkinleştirildi. Kodun çalışıp çalışmadığını hala çözemedim?

"Sorunlar" sekmesinde görüntülenen daha fazla ek bilgi vardır:

  1. PEP 8: E402 modül düzeyinde içe aktarma dosyanın üstünde değil: 28
  2. PEP 8: E402 modül düzeyinde içe aktarma dosyanın en üstünde değil: 29 - bu, içe aktarma zaman çizelgesiyle ilgili
  3. Gereksiz parantezleri kaldırın (Ekstra parantezleri kaldırın) - bu parantezler koddan kaldırıldığında, bu mesaj kayboldu.

Maxim, kodun çalışıp çalışmadığını anlamak için dosyadaki alıntının en az 1 dakika sonra güncellendiğinden geçici olarak emin olabilir misin, yoksa oturup bir saat bekle...?

Ve ilerisi. Daha önce yayınladığım kaynak kodu çalıştırdıktan sonra hemen güncel alıntı ile EUR_USD_QUOTE.csv dosyası açıldı fakat bu dosya değiştirilen kod ile açılmıyor.

Belki yanlış bir şey yapıyorum ya da bir şey anlamıyorum? Lütfen bana söyle.

Saygılarımla, Vladimir.
 
MrBrooklin :
Teşekkürler Maksim!

Değiştirilen kodu PyCharm geliştirme ortamında çalıştırdım, ancak şu ana kadar hiçbir şey olmuyor, yalnızca "Yeniden Çalıştır" düğmesi (yeniden başlat) etkinleştirildi. Kodun çalışıp çalışmadığını hala çözemedim?

"Sorunlar" sekmesinde görüntülenen daha fazla ek bilgi vardır:

  1. PEP 8: E402 modül düzeyinde içe aktarma dosyanın üstünde değil: 28
  2. PEP 8: E402 modül düzeyinde içe aktarma dosyanın en üstünde değil: 29 - bu, içe aktarma zaman çizelgesiyle ilgili
  3. Gereksiz parantezleri kaldırın (Ekstra parantezleri kaldırın) - bu parantezler koddan kaldırıldığında, bu mesaj kayboldu.

Maxim, kodun çalışıp çalışmadığını anlamak için dosyadaki alıntının en az 1 dakika sonra güncellendiğinden geçici olarak emin olabilir misin, yoksa oturup bir saat bekle...?

Ve ilerisi. Daha önce yayınladığım kaynak kodu çalıştırdıktan sonra hemen güncel alıntı ile EUR_USD_QUOTE.csv dosyası açıldı fakat bu dosya değiştirilen kod ile açılmıyor.

Belki yanlış bir şey yapıyorum ya da bir şey anlamıyorum? Lütfen bana söyle.

Saygılarımla, Vladimir.

1. 2 hata - bunu dosyanın en üstüne taşıyın

from datetime import datetime
import time

Bu sadece bir programlama stili uyarısıdır, bir hata değil.

hızlı kontrol için her iki alanı da değiştirin

hour

üzerinde

ikinci

dosya her 10 saniyede bir yazılmalıdır, çünkü kontrol zamanlayıcısı 10 saniyeye mal olur

ZY sadece kendinizi kaptırmayın, aksi takdirde çok sık istekler için sizi yasaklayabilirler

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 )

Parantez içinde herhangi bir hatam yok.

Bu kod bir sonraki saati bekler ve sonra yalnızca kaydeder

 

Bu modüller yüklü değil

import requests
from bs4 import BeautifulSoup

bu yüzden kontrol etmedim

 
Maxim Dmitrievsky :

Maxim, genel olarak, "bilimsel dürtme" yöntemini kullanarak kodunuzu biraz değiştirdim (önceden özür dilerim) ve lansmandan 1 dakika sonra EUR_USD_QUOTE.csv dosyasını mevcut alıntı ile açtığı ortaya çıktı.

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 .

Ancak! EUR_USD_QUOTE.csv dosyasını bir dakika içinde kapatmazsam aşağıdaki mesajı alıyorum:

Geri izleme (en son arama son):
Dosya "C:/Users/Vladimir/PycharmProjects/My_Python_Project/8.py", satır 36, <module> içinde
get_data(save_file='EUR_USD_QUOTE.csv')
"C:/Users/Vladimir/PycharmProjects/My_Python_Project/8.py" dosyası, 21. satır, get_data'da
open(save_file, 'w') ile save olarak:
PermissionError: [Errno 13] İzin reddedildi: 'EUR_USD_QUOTE.csv'

Çıkış kodu 1 ile işlem tamamlandı

Program kodunun başlatılmasından sonra insan müdahalesi olmadan süreç nasıl devam ettirilir?

Saygılarımla, Vladimir.

 
MrBrooklin :

Maxim, genel olarak, "bilimsel dürtme" yöntemini kullanarak kodunuzu biraz değiştirdim (önceden özür dilerim) ve lansmandan 1 dakika sonra EUR_USD_QUOTE.csv dosyasını mevcut alıntı ile açtığı ortaya çıktı.


Ancak! EUR_USD_QUOTE.csv dosyasını bir dakika içinde kapatmazsam aşağıdaki mesajı alıyorum:

Geri izleme (en son arama son):
Dosya "C:/Users/Vladimir/PycharmProjects/My_Python_Project/8.py", satır 36, <module> içinde
get_data(save_file='EUR_USD_QUOTE.csv')
"C:/Users/Vladimir/PycharmProjects/My_Python_Project/8.py" dosyası, 21. satır, get_data'da
open(save_file, 'w') ile save olarak:
PermissionError: [Errno 13] İzin reddedildi: 'EUR_USD_QUOTE.csv'

Çıkış kodu 1 ile işlem tamamlandı

Program kodunun başlatılmasından sonra insan müdahalesi olmadan süreç nasıl devam ettirilir?

Saygılarımla, Vladimir.

evet, işlem nedense os.startfile() ile meşgul olduğundan, bu satırı kaldırın

os.startfile(save_file)

ve

import os

silinebilir

Çalıştığını kontrol ettim

 
Maxim Dmitrievsky :

evet, işlem nedense os.startfile() ile meşgul olduğundan, bu satırı kaldırın

ve

silinebilir

Çalıştığını kontrol ettim

Maxim, tavsiye ettiğin her şeyi yaptım. Başka sorun mesajı yok. Program başladı ve şimdi EUR_USD_QUOTE.csv dosyası kapalıysa teklifi nasıl görebilirim ve açıp açık bıraktığımda aynı mesaj PermissionError: [Errno 13] Permission reddedildi: 'EUR_USD_QUOTE. csv' ve açık dosyadaki alıntı artık güncellenmiyor mu?

Sizden bir kez daha beni bağışlamanızı rica ediyorum, lütfen ama bunu asla saklamam, programlamada tam bir sıfır vardır.

Saygılarımla, Vladimir.

 
MrBrooklin :

Maxim, tavsiye ettiğin her şeyi yaptım. Başka sorun mesajı yok. Program başladı ve şimdi EUR_USD_QUOTE.csv dosyası kapalıysa teklifi nasıl görebilirim ve açıp açık bıraktığımda aynı mesaj PermissionError: [Errno 13] Permission reddedildi: 'EUR_USD_QUOTE. csv' ve açık dosyadaki alıntı artık güncellenmiyor mu?

Sizden bir kez daha beni bağışlamanızı rica ediyorum, lütfen ama bunu asla saklamam, programlamada tam bir sıfır vardır.

Saygılarımla, Vladimir.

exceli açarmısın bu yüzden dosyayı özel olarak açar. Diğer uygulamalar / kullanıcılar tarafından dosyalarda değişiklik yapılmasına izin vermek için ayarların bir yerinde gereklidir.

http://blog.depit.ru/odnovremennaya-rabota-v-excel/ yardımcı olabilir

ve genel olarak başka bir programda açılan dosyayı değiştirmek imkansızdır.

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

exceli açarmısın bu yüzden dosyayı özel olarak açar. Diğer uygulamalar / kullanıcılar tarafından dosyalarda değişiklik yapılmasına izin vermek için ayarların bir yerinde gereklidir.

http://blog.depit.ru/odnovremennaya-rabota-v-excel/ yardımcı olabilir

ve genel olarak başka bir programda açılan dosyayı değiştirmek imkansızdır.

Evet, Excel'de açıyorum. EUR_USD_QUOTE.csv açık dosyasındaki teklifi gerçek zamanlı olarak güncellemek henüz mümkün değil.

Ve bu, masaya bakma ve alıntının nasıl değiştiğini görme fikriydi.

Saygılarımla, Vladimir.