MetaTrader 5 Python User Group - Come usare Python in Metatrader - pagina 61

 
Vladimir Perervenko :

Impossibile installare

Win10, Py3.6.10 e WinPy3.7.7.

Prova di nuovo. Ho dovuto rifattorizzarlo per funzionare con Python < 3.8

 
nicholi shen:

Prova di nuovo. Ho dovuto rifattorizzarlo per funzionare con Python < 3.8

Ok

Successfully built pymt5adapter
Installing collected packages: pymt5adapter
Successfully installed pymt5adapter-0.2.1
----- Установка "pymt5adapter" выполнена. -

Cosa c'è di nuovo nella release?

Buona fortuna

 
Vladimir Perervenko:

Ok

Cosa c'è di nuovo nella release?

Buona fortuna

calendar_eventshttps://github.com/nicholishen/pymt5adapter/blob/master/pymt5adapter/calendar.py

from datetime import datetime
from datetime import timedelta

import pymt5adapter as mt5
from pymt5adapter.calendar import calendar_events
from pymt5adapter.calendar import Currency
from pymt5adapter.calendar import Importance


def forex_symbol(s):
    modes = [mt5.SYMBOL_CALC_MODE_FOREX, mt5.SYMBOL_CALC_MODE_FOREX_NO_LEVERAGE]
    return s.trade_calc_mode in modes


def main():
    symbol = mt5.symbols_get(function=forex_symbol)[0]
    one_week = timedelta(weeks=1)
    now = datetime.now()
    default_one_week_ahead_all_events = calendar_events()
    filtered_by_callback = calendar_events(function=lambda e: 'fed' in e['event_name'].lower())
    filtered_by_flags = calendar_events(importance=Importance.MEDIUM | Importance.HIGH,
                                        currencies=Currency.USD | Currency.JPY)
    filtered_by_strings = calendar_events(importance='medium high',
                                          currencies='usdjpy')
    filtered_by_iterables = calendar_events(importance=('medium', ' high'),
                                            currencies=('usd', 'jpy'))
    filtered_by_specific_times = calendar_events(time_from=now, time_to=now + one_week)
    filtered_by_timedeltas = calendar_events(time_from=(-one_week), time_to=one_week)
    filtered_by_timedelta_lookback = calendar_events(-one_week)
    calendar_events_in_russian = calendar_events(language='ru')

    employment_events_next_month = calendar_events(
        currencies=Currency.USD,
        importance=Importance.HIGH
        function=lambda e: 'employment' in (name:=e['event_name'].lower()) or 'payroll' in name
    )

    next_event = employment_events_next_month[0]

    for k, v in next_event.items():
        print(k, v)


if __name__ == '__main__':
    with mt5.connected():
        main()
nicholishen/pymt5adapter
nicholishen/pymt5adapter
  • nicholishen
  • github.com
A drop-in pythonic adapter for the MetaTrader5 package to enhance usability. - nicholishen/pymt5adapter
 

Come posso lavorare con TRADE_ACTION_CLOSE_BY o chi e come chiude tutte le posizioni aperte?

 
9805244:

Come lavorare con TRADE_ACTION_CLOSE_BY o chi e come chiude tutte le posizioni aperte?

Usare Python?

 

Questa linea è ciò che VS2019 (WinPy3.7.7) sta governando (sottolineato):

"token 'function' inaspettato"

token inaspettato ':"

token '=' inaspettato

sintassi non valida

employment_events_next_month = calendar_events(
        currencies=Currency.USD,
        importance=Importance.HIGH
        
function=lambda e: 'employment' in (name
:=e['event_name'].lower()) 
or 'payroll' in name
    )
 
Vladimir Perervenko:

Questa linea è ciò che VS2019 (WinPy3.7.7) sta ruminando (sottolineato):

"token 'function' inaspettato"

token inaspettato ':"

token '=' inaspettato

sintassi non valida

Questa è la nuova espressione di assegnazione per python >=3.8, ed è fantastica. Ho dovuto rimuovere tutti quelli dalla libreria per farlo funzionare con la tua versione, ma penso che tu possa rifattorizzare quello script di esempio per farlo funzionare. Dovresti considerare di aggiornare il tuo interprete python all'ultima versione :)

https://www.python.org/dev/peps/pep-0572/

PEP 572 -- Assignment Expressions
PEP 572 -- Assignment Expressions
  • www.python.org
PEP: Title: Author: Status: Type: Created: Python-Version: Post-History: Resolution:
 
nicholi shen:

Questa è la nuova espressione di assegnazione per python >=3.8, ed è fantastica. Ho dovuto rimuovere tutti quelli dalla libreria per farlo funzionare con la tua versione, ma penso che tu possa rifattorizzare quello script di esempio per farlo funzionare. Dovresti considerare di aggiornare il tuo interprete python all'ultima versione :)

https://www.python.org/dev/peps/pep-0572/

Non si può. Troppi pacchetti sono legati alla 3.7.7 e alla 3.6.10.

Basta suggerire cosa o come sostituirlo, se possibile. Se no, nessun problema.

Non sono un esperto di Python. La mia lingua è R/.

Buona fortuna.

 
Vladimir Perervenko:

Non posso. Troppi pacchetti sono legati alla 3.7.7 e alla 3.6.10.

Dimmi solo cosa o come sostituire, se possibile. Se no, nessun problema.

Non sono un esperto di Python. La mia lingua è R /

Buona fortuna.

def employment_event(e):
    event_name = e['event_name'].lower()
    return 'payroll' in event_name or 'employment' in event_name


employment_events_next_month = calendar_events(
    currencies=Currency.USD,
    importance=Importance.HIGH,
    function=employment_event
)
 
Vladimir Perervenko:

Usare Python?