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

 
MrBrooklin :

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 masaya bakıp alıntının nasıl değiştiğini görme fikri buydu.

Saygılarımla, Vladimir.

Yani ne Python ne de Excel'in bununla hiçbir ilgisi yok. Dosyayı açtınız, veriler Excel'de değerlendirildi ve bu kadar. O zaman yerleşik VBA'da bir program yazmanız gerekir.

Ve eğer öyleyse, bir Python programına ihtiyacınız yok, her şeyi hemen VBA'da yapmak daha kolay. Onunla biraz çalıştım ama eminim GET yapmayı biliyor.

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

Yani ne Python ne de Excel'in bununla hiçbir ilgisi yok. Dosyayı açtınız, veriler Excel'de değerlendirildi ve bu kadar. O zaman yerleşik VBA'da bir program yazmanız gerekir.

Ve eğer öyleyse, bir Python programına ihtiyacınız yok, her şeyi hemen VBA'da yapmak daha kolay. Onunla biraz çalıştım ama eminim GET yapmayı biliyor.

Merhaba Alexey!

Süre dolduktan sonra EUR_USD_QUOTE.csv dosyasının kapanıp hemen yeni bir alıntı ile tekrar açılması için PYTHON'da program kodu yazmak mümkün değil mi?

Henüz VBA hakkında hiçbir şey bilmiyorum, ancak ipucu için teşekkürler.

Saygılarımla, Vladimir.

 
Maxim Dmitrievsky :

excel'i açar mı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.

Maxim, EUR_USD_QUOTE.csv dosyasını kaynak kodda uygulandığı gibi ilk kez açmak ve belirli bir zaman aralığından sonra değiştirilmiş program kodunun etkisiyle bir saniye kapatıp hemen tekrar açmak ne kadar zor, ama yeni bir alıntıyla? Ve böylece sonsuza kadar...

Saygılarımla, Vladimir.

 
MrBrooklin :

Maxim, EUR_USD_QUOTE.csv dosyasını kaynak kodda uygulandığı gibi ilk kez açmak ve belirli bir zaman aralığından sonra değiştirilmiş program kodunun etkisiyle bir saniye kapatıp hemen tekrar açmak ne kadar zor, ama yeni bir alıntıyla? Ve böylece sonsuza kadar...

Saygılarımla, Vladimir.

böyle dene

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 :

Yani ne Python ne de Excel'in bununla hiçbir ilgisi yoktu. Dosyayı açtınız, Excel'deki veriler sayıldı ve bu kadar. Daha sonra yerleşik VBA'da bir program yazmak gerekir.

Ve eğer öyleyse, Python'daki program gerekli değildir, VBA'da her şeyi bir kerede yapmak daha kolaydır. Onunla pek çalışmadım ama eminim GET yapabilir.

VBA'ya bile ihtiyacınız yok. Tek yapmanız gereken, excel'i yerel olarak kullanmak. İngilizce bir talimat yazacağım ... Yeni bir çalışma kitabı oluşturun. Veri Sekmesi > Veri Al > Diğer Kaynaklardan > Web'den öğesini tıklayın, ardından web adresini url alanına yapıştırın. Ardından, tüm diğer seçenekleri yenile > Bağlantı özellikleri'ni tıklayın ve her n dakikada bir otomatik olarak güncellenecek şekilde yapılandırın.

 
MrBrooklin :

Maxim, EUR_USD_QUOTE.csv dosyasını ilk önce kaynak kodda uygulandığı gibi ve belirli bir zaman aralığında değiştirilmiş kodun etkisi altında ikinci bir kez kapatılıp hemen yeniden açıldı, ancak yeni bir alıntı ile açmak ne kadar zor ? Ve böylece sonsuzluğa...

Saygılarımla, Vladimir.

Excel penceresini açık bırakırsanız, dosya excel tarafından yazılmak üzere kilitlenecektir. Kilitli bir dosya için hesaba mantık eklemeniz gerekecek. Ayrıca, neden alıntılar için web'i kazıyorsun? Neden teklif toplamak için MetaTrader kullanmıyorsunuz? Mantıklı değil.

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 :

böyle dene


Teşekkürler Maksim!

Ben zaten deniyorum. Döngü başladı, ancak dosya henüz açılmıyor. Döngüyü çalışır durumda bırakıp bekleyeceğim.

Saygılarımla, Vladimir.


PS Üzgünüm! Hemen saate mal olduğu gerçeğine dikkat etmedi. EUR_USD_QUOTE.csv dosyasını dakika olarak değiştirdim, ancak Pycharm geliştirme ortamında Çalıştır sekmesinde aşağıdaki mesaj belirdi:

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

Ardından, yaklaşık bir dakika sonra dosya kapandı ve yeniden açıldı, ancak zaten Exsel'de, tablonun sol tarafında önceden açılmış metnin kaydedilmesinin önerildiği bir sekme belirdi. Sonra ne olacağını görmek için biraz daha bekledim ve sonra döngü durdu ve şu mesaj çıktı:

�ᯥ譮: ����� "EXCEL.EXE", � �����䨪��஬ 4208, �� �����襭.
�ᯥ譮: ����� "EXCEL.EXE", � �����䨪��஬ 3168, �� �����襭.
Geri izleme (en son arama son):
Dosya "C:/Users/Vladimir/PycharmProjects/My_Python_Project/9.py", satır 37, <module>
get_data(save_file='EUR_USD_QUOTE.csv')
"C:/Users/Vladimir/PycharmProjects/My_Python_Project/9.py" dosyası, 23. satır, get_data'da
open(save_file, 'w') ile save olarak:
PermissionError: [Errno 13] İzin reddedildi: 'EUR_USD_QUOTE.csv'

Şimdiye kadar böyle bir sonuç, ama zaten ilerleme var!

Saygılarımla, Vladimir.

 
nicholish en :

Excel penceresini açık bırakırsanız, dosya excel tarafından yazılmak üzere kilitlenecektir. Kilitli bir dosya için hesaba mantık eklemeniz gerekecek. Ayrıca, neden alıntılar için web'i kazıyorsun? Neden teklif toplamak için MetaTrader kullanmıyorsunuz? Mantıklı değil.

Excel penceresini açık bırakırsanız, dosya Excel'e yazmak için kilitlenir. Kilitli dosya için hesaba mantık eklemeniz gerekecek. Ayrıca, neden alıntılar için internette arama yapıyorsunuz? Neden teklif toplamak için MetaTrader'ı kullanmıyorsunuz? Mantıklı değil. (Kendimden: Üzgünüm, nicholish en , İngilizce bilmiyorum, bu yüzden Google Çeviri hizmetini kullandım)

Python dilini kullanarak İnternette alıntı yapmayı öğrenmek istiyorum, böylece onları terminalde değil, bazı dosyalarda, örneğin csv'de görebilirim. Bunun en temel görev olduğunu düşündüm, ama öyle olmadığı ortaya çıktı. Belki yanlış yoldayım ama hiçbir şey aramayan hiçbir şey bulamaz.

Şimdi önerdiğiniz koda geçelim. Kodu Pycharm geliştirme ortamında çalıştırdıktan sonra aşağıdaki mesaj çıktı:

Geri izleme (en son arama son):
Dosya "C:/Users/Vladimir/PycharmProjects/My_Python_Project/10.py", satır 25, <module> içinde
ana()
Dosya "C:/Users/Vladimir/PycharmProjects/My_Python_Project/10.py", satır 13, ana
eurusd_bid = çorba.find('td', 'pid-1-bid').text.replace(',', '.')
AttributeError: 'NoneType' nesnesinin 'metin' özelliği yok

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

Kodun nasıl çalıştığını görmek için nelerin değiştirilmesi gerekiyor?

Saygılarımla, Vladimir.

 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

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

MrBrooklin , 2020.08.19 22:05

Teşekkürler Maksim!

Ben zaten deniyorum. Döngü başladı, ancak dosya henüz açılmıyor. Döngüyü çalışır durumda bırakıp bekleyeceğim.

Saygılarımla, Vladimir.


PS Üzgünüm! Hemen saate mal olduğu gerçeğine dikkat etmedi. EUR_USD_QUOTE.csv dosyasını dakika olarak değiştirdim, ancak Pycharm geliştirme ortamında Çalıştır sekmesinde aşağıdaki mesaj belirdi:

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

Ardından, yaklaşık bir dakika sonra dosya kapandı ve yeniden açıldı, ancak zaten Exsel'de, tablonun sol tarafında önceden açılmış metnin kaydedilmesinin önerildiği bir sekme belirdi. Sonra ne olacağını görmek için biraz daha bekledim ve sonra döngü durdu ve şu mesaj çıktı:

�ᯥ譮: ����� "EXCEL.EXE", � �����䨪��஬ 4208, �� �����襭.
�ᯥ譮: ����� "EXCEL.EXE", � �����䨪��஬ 3168, �� �����襭.
Geri izleme (en son arama son):
Dosya "C:/Users/Vladimir/PycharmProjects/My_Python_Project/9.py", satır 37, <module>
get_data(save_file='EUR_USD_QUOTE.csv')
"C:/Users/Vladimir/PycharmProjects/My_Python_Project/9.py" dosyası, 23. satır, get_data'da
open(save_file, 'w') ile save olarak:
PermissionError: [Errno 13] İzin reddedildi: 'EUR_USD_QUOTE.csv'

Şimdiye kadar böyle bir sonuç, ama zaten ilerleme var!

Saygılarımla, Vladimir.

Maxim, ne olduğunu bilmiyorum ama kodunu tekrar çalıştırmayı denedim ve ah, mucize! Döngünün süreci, bir uyarıyla da olsa başlamıştır. Daha önce olduğu gibi, Excel'in sol tarafında dosyayı kaydetme önerisi olan bir sekme var, ancak bu artık önemli bir önemsememek değil. Ekranı ekliyorum. Altı döngü geçene kadar bekledim, ardından programı tamamladım. Şimdi her kod satırını inceleyeceğim ve neyin neden yazıldığını anlamaya çalışacağım. Çok teşekkürler!!!

Saygılarımla, Vladimir.



Not: Dosyayı kaydetmek için bir öneriyle sol tarafta neden bir sekme göründüğü fikrini buldum. Sadece program kodu dosyayı kaydetmeden kapatır, bu nedenle Excel muhtemelen dosyayı kaydetmeyi teklif ediyor ve sunmaya devam edecek.

 

Çince çağrı cihazını okuyun. çok düşündüm...

Bu benim Python ve MQL'yi entegre etme sorunum. Her iki dil de birbirine yakındır, ancak MQL basittir, Python ise temel gibi ilkeldir. MQL'de programlama yapan herkes Python'da dizlerinin üzerinde bir şeyler yaratabilir ve bunun tersi de geçerlidir. Bu konuya ilgi nedir? İlk olarak, çok tembel insanlar içindir. Pekala, çok benzer bir dilde bir şeyler yazın... İlgi iki bileşende olabilir: Python'da çok sayıda olan kütüphaneler ve MQL'nin ünlü olduğu arayüzler. Öyleyse neden Python'un MQL arabirimlerine ve MQL'nin Python kitaplıklarına erişmesini sağlamıyorsunuz? Ve bu kadar.