MetaTrader 5 Python User Group - como usar o Python no Metatrader - página 61

 
Vladimir Perervenko :

Falha na instalação

Win10, Py3.6.10 e WinPy3.7.7.

Tente novamente. Tive de o refactor para trabalhar com Python < 3.8

 
nicholi shen:

Tente novamente. Tive de o refactor para trabalhar com Python < 3.8

Ok

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

O que há de novo no lançamento?

Boa sorte

 
Vladimir Perervenko:

Ok

O que há de novo no lançamento?

Boa sorte

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
 

Boa tarde! Como trabalho com TRADE_ACTION_CLOSE_BY ??? ou quem e como fecha todas as posições em aberto?

 
9805244:

Boa tarde! Como trabalhar com TRADE_ACTION_CLOSE_BY ??? ou quem e como fecha todas as posições em aberto?

Usando Python?

 

Esta linha é o que a VS2019(WinPy3.7.7) está a decidir (sublinhado):

"função" simbólica inesperada"

ficha inesperada ':".

símbolo inesperado '='

sintaxe 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 linha é o que a VS2019(WinPy3.7.7) está a ruminando (sublinhado):

"função" simbólica inesperada"

ficha inesperada ':".

símbolo inesperado '='

sintaxe inválida

Esta é a nova expressão de atribuição para píton >=3,8, e são espectaculares. Tive de remover todos aqueles da biblioteca para que funcionasse com a vossa versão, mas penso que podem refactorizar esse guião de exemplo para que funcione. Deverá considerar a actualização do seu intérprete python para a versão mais recente :)

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 é a nova expressão de atribuição para píton >=3,8, e são espectaculares. Tive de remover todos aqueles da biblioteca para que funcionasse com a vossa versão, mas penso que podem refactorizar esse guião de exemplo para que funcione. Deverá considerar a actualização do seu intérprete python para a versão mais recente :)

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

Não pode. Demasiados pacotes estão ligados em 3.7.7 e 3.6.10.

Basta sugerir o que ou como o substituir, se possível. Caso contrário, não há problema.

Não sou um perito em Python. A minha língua é R/.

Boa sorte.

 
Vladimir Perervenko:

Não posso. Demasiados pacotes estão ligados a 3.7.7 e 3.6.10.

Basta dizer-me o que ou como substituir, se possível. Caso contrário, não há problema.

Não sou um perito em Python. A minha língua é R /

Boa sorte.

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:

Usando Python?

sim