Grupo de usuarios de MetaTrader 5 Python - cómo utilizar Python en Metatrader - página 61

 
Vladimir Perervenko :

Fallo en la instalación

Win10, Py3.6.10 y WinPy3.7.7.

Inténtalo de nuevo. He tenido que refactorizarlo para que funcione con Python < 3.8

 
nicholi shen:

Inténtalo de nuevo. He tenido que refactorizarlo para que funcione con Python < 3.8

Ok

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

¿Qué hay de nuevo en la versión?

Buena suerte

 
Vladimir Perervenko:

Ok

¿Qué hay de nuevo en la versión?

Buena suerte

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
 

Buenas tardes! ¿Cómo puedo trabajar con TRADE_ACTION_CLOSE_BY ??? o quién y cómo cierra todas las posiciones abiertas?

 
9805244:

Buenas tardes! ¿Cómo se trabaja con TRADE_ACTION_CLOSE_BY ??? o quién y cómo cierra todas las posiciones abiertas?

¿Utilizando Python?

 

Esta línea es la que falla VS2019(WinPy3.7.7) (subrayada):

"token inesperado 'función'"

token inesperado ':"

token inesperado '='

sintaxis inválida

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:

Esta línea es lo que VS2019(WinPy3.7.7) está rumiando (subrayado):

"token inesperado 'función'"

token inesperado ':"

token inesperado '='

sintaxis inválida

Esta es la nueva expresión de asignación para python >=3.8, y son increíbles. Tuve que eliminar todo eso de la biblioteca para que funcionara con tu versión, pero creo que puedes refactorizar ese script de ejemplo para que funcione. Deberías considerar actualizar tu intérprete de python a la última versión. :)

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:

Esta es la nueva expresión de asignación para python >=3.8, y son increíbles. Tuve que eliminar todo eso de la biblioteca para que funcionara con tu versión, pero creo que puedes refactorizar ese script de ejemplo para que funcione. Deberías considerar actualizar tu intérprete de python a la última versión. :)

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

No puedo. Demasiados paquetes están atados a 3.7.7 y 3.6.10.

Sólo sugerir qué o cómo reemplazarlo, si es posible. Si no, no hay problema.

No soy un experto en Python. Mi idioma es R/.

Buena suerte.

 
Vladimir Perervenko:

No puedo. Demasiados paquetes están ligados a 3.7.7 y 3.6.10.

Sólo dime qué o cómo reemplazar, si es posible. Si no, no hay problema.

No soy un experto en Python. Mi lenguaje es R /

Buena suerte.

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:

¿Utilizando Python?