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

 
Дмитрий Прокопьев :

Test, hepsi üzerinde çalıştığı ütüye bağlıdır.

Bir örnek yaklaşık 45-50 MB RAM + %2,5-4 CPU tüketir. (Evet, % CPU, benim durumumda CPU türüne bağlıdır - Intel Xeon L5640 @ 2.27GHz)

Aynı sayı, bir python örneği.

Python geçmişle çalışıyorsa, + 200-300Mb RAM. CPU neredeyse boşa harcanmaz.

Peki, neden, TK'ye veya fikre bağlı.

Açık. Bilgi için teşekkürler.

 
Geliştiriciler, lütfen bir copy_buffer() API işlevi yapın. Analoji ile gösterge verilerinin elde edilmesi.
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
  • www.mql5.com
Отсчет элементов копируемых данных (индикаторный буфер с индексом buffer_num) от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар (значение индикатора для текущего бара). При копировании заранее неизвестного количества данных в качестве массива-приемника buffer[] желательно...
 
Denis Kirichenko :
Geliştiriciler, lütfen bir copy_buffer() API işlevi yapın. Analoji ile gösterge verilerinin elde edilmesi.

Python'da göstergeleri olan bir paket yok mu? Yoksa bir tür özel gösterge mi? Bu çalışıyor gibi görünüyor https://github.com/twopirllc/pandas-ta

twopirllc/pandas-ta
twopirllc/pandas-ta
  • twopirllc
  • github.com
Technical Analysis (TA) is an easy to use library that is built upon Python's Pandas library with more than 80 Indicators. These indicators are comminly used for financial time series datasets with columns or labels similar to: datetime, open, high, low, close, volume, et al. Many commonly used indicators are included, such as: Moving Average...
 
Vladimir Perervenko :

Python'da göstergeleri olan bir paket yok mu? Yoksa bir tür özel gösterge mi? Bu çalışıyor gibi görünüyor https://github.com/twopirllc/pandas-ta

copy_buffer() , hesaplamaları için bir dizi veri almak anlamına gelir.
Hangisinde copy_buffer() her iki yönde de çalışmalıdır.
Çift yönlü dizi aktarımı fena halde eksik.

 
Roman :

Symbol_total ve symbol_name işlevlerinin eksikliği
Bunun gibi karakterlerin bir listesini almak için:

5.0.29 symbol_total() , symbol_get([group="EURUSD, "USDGBP", *RU*"] eklendi), çalışması için Terminal'in en son beta sürümünü yüklemeniz gerekir.

Ayrıca tüm fonksiyonlarda order_get(), position_get(), history_orders_get(), history_deals_get(), gruba göre filtreleme yeteneği eklendi - group="EURUSD, "USDGBP", *RU*".
Yanıttaki order_check(), order_send() yöntemleri, istek alanındaki orijinal yürütme isteğini döndürür.

 
Roman :

copy_buffer() , hesaplamaları için bir dizi veri almak anlamına gelir.
Hangisinde copy_buffer() her iki yönde de çalışmalıdır.
Bir dizinin çift yönlü aktarımı fena halde eksik.

Evet, github'da birçoğu var, hem ücretsiz hem de ücretli paketler var...

MQL5 ile çalışma modelini python'a aktarmayınız. Farklılar ve farklı amaçları var.

 
Almaz :

Symbols_total(), symbol_get([group="EURUSD, "USDGBP", *RU*"]) 5.0.29'da eklendi), çalışması için Terminal'in en son beta sürümünü yüklemeniz gerekir.

Ayrıca tüm fonksiyonlarda order_get(), position_get(), history_orders_get(), history_deals_get(), gruba göre filtreleme yeteneği eklendi - group="EURUSD, "USDGBP", *RU*".
Yanıttaki order_check(), order_send() yöntemleri, istek alanındaki orijinal yürütme isteğini döndürür.

Ve _todict() listesi hala geri dönemez mi?

 
Дмитрий Прокопьев :

Ve _todict() listesi hala geri dönemez mi?

Belki bir örnek görmek

import MetaTrader5 as mt5
# выведем данные о пакете MetaTrader5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version : ",mt5.__version__)

# установим подключение к терминалу MetaTrader 5
if not mt5.initialize():
    print("initialize() failed")
    mt5.shutdown()

# подключимся к торговому счету с указанием пароля и сервера
authorized=mt5.login( 25115284 , password="gqsdfgtdm",server="MetaQuotes-Demo")
if (authorized):
    # выведем данные о торговом счете
    print(mt5.account_info())
else :
    print("failed to connect to trade account 25115284 with password=gqz0lbdm")

account_info_dict=mt5.account_info(). _asdict()
for prop in account_info_dict:
    print("{}={}".format(prop,account_info_dict[prop]))

mt5.shutdown()

Sonuç

AccountInfo(login=25115284, trade_mode=0, leverage=100, limit_orders=200, margin_so_mode=0, trade_allowed=True, trade_expert=True, margin_mode=2, currency_digits=2, fifo_close=False, balance=99511.4, credit=0.0, profit=9.04, equity=99520.44, margin=98.18, margin_free=99422.26, margin_level=101365.28824607862, margin_so_call=50.0, margin_so_so=30.0, margin_initial=0.0, margin_maintenance=0.0, assets=0.0, liabilities=0.0, commission_blocked=0.0, name='MetaQuotes Dev Demo', server='MetaQuotes-Demo', currency='USD', company='MetaQuotes Software Corp.')
login=25115284
trade_mode=0
leverage=100
limit_orders=200
margin_so_mode=0
trade_allowed=True
trade_expert=True
margin_mode=2
currency_digits=2
fifo_close=False
balance=99511.4
credit=0.0
profit=9.04
equity=99520.44
margin=98.18
margin_free=99422.26
margin_level=101365.28824607862
margin_so_call=50.0
margin_so_so=30.0
margin_initial=0.0
margin_maintenance=0.0
assets=0.0
liabilities=0.0
commission_blocked=0.0
name=MetaQuotes Dev Demo
server=MetaQuotes-Demo
currency=USD
company=MetaQuotes Software Corp.
 
Rashid Umarov :

Belki bir örnek görmek

Sonuç

Teşekkürler, bu örneği gördüm, işe yarıyor.

Ben başka bir şeyden bahsediyorum.

     if mt5.initialize( 'c:\\Works\\MT5 - terminals\\RoboForex - MT5\\terminal64.exe' ,
                            login= 500036189 , server= 'RoboForex-MetaTrader 5' , password= '' ,  portable=True):
        positions = mt5.positions_get()
        print(positions)
        pList = []
        for elem in positions:
            pList.append(elem._asdict())

position_get - TradePosition'ın bir listesini döndürür. Normlar ilkesinde, onu pandalara atabilir ve iyi çalışabilirsiniz.

(TradePosition(ticket=164661016, time=1585075408, time_msc=1585075408163, time_update=1585075408, time_update_msc=1585075408163, type=1, magic=0, identifier=164661016, reason=0, volume=0.01, price_open=120.306, sl=0.0, tp=0.0, price_current=120.279, swap=0.0, profit=0.24, symbol='EURJPY', comment='', external_id=''), 
 TradePosition(ticket=164661051, time=1585075426, time_msc=1585075426062, time_update=1585075426, time_update_msc=1585075426062, type=0, magic=0, identifier=164661051, reason=0, volume=0.01, price_open=1.07798, sl=0.0, tp=0.0, price_current=1.07806, swap=0.0, profit=0.08, symbol='EURUSD', comment='', external_id=''))

Ancak her şey bir panda ile sınırlı değildir ve aşağıdaki gibi bir şeye ihtiyacınız varsa:

[{'ticket': 164661016, 'time': 1585075408, 'time_msc': 1585075408163, 'time_update': 1585075408, 'time_update_msc': 1585075408163, 'type': 1, 'magic': 0, 'identifier': 164661016, 'reason': 0, 'volume': 0.01, 'price_open': 120.306, 'sl': 0.0, 'tp': 0.0, 'price_current': 120.328, 'swap': 0.0, 'profit': -0.2, 'symbol': 'EURJPY', 'comment': '', 'external_id': ''}, 
{'ticket': 164661051, 'time': 1585075426, 'time_msc': 1585075426062, 'time_update': 1585075426, 'time_update_msc': 1585075426062, 'type': 0, 'magic': 0, 'identifier': 164661051, 'reason': 0, 'volume': 0.01, 'price_open': 1.07798, 'sl': 0.0, 'tp': 0.0, 'price_current': 1.07881, 'swap': 0.0, 'profit': 0.83, 'symbol': 'EURUSD', 'comment': '', 'external_id': ''}]

bir şekilde pandalar ya da ... bir şekilde birçok gereksiz hareket için dönüştürmeniz gerekiyor.

_asdict() ile çok daha uygun hale geldi, eğer yazan kişi bir MQL5 proger değil, diyelim ki bir pitonist ... veya bir veri cynetist ise, o zaman list/dict

python'un ana unsurları, birçoğu liste / dict üzerinde bir veri aktarımı oluşturur.

Tuple'lar da sıklıkla ve çok kullanılır, ancak yalnızca içinde hareket eden veri türlerini sıkı bir şekilde kontrol etmeniz gerekiyorsa.

ve ayrıca doğru kullanılmamış veya atanmamışsa bir hata işleyicisini de asın. Eh, bir yerde ... :) Yanılıyor olabilirim.

 
Дмитрий Прокопьев :

Evet, github'da birçoğu var, hem ücretsiz hem de ücretli paketler var...

MQL5 ile çalışma modelini python'a aktarmayınız. Farklılar ve farklı amaçları var.

Ne demek istiyorsun? Diziyi mql5'ten py'ye ve geriye kopyalıyor musunuz?
En azından ne hakkında olduğunu dikkatlice okudun.
Ve gerekli olan ya da olmayan, sadece kendiniz için düşünmenize gerek yok. Senin ihtiyacın yoksa, başkalarının ihtiyacı var.