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

 
Rashid Umarov:

Verifique se o seu tipo de conta é netting ou hedging. Para a compensação, o bilhete de uma posição já existente não mudará, e não vale a pena procurar uma posição após a acção por número de ordem.

Sim, tudo claro, visto que sim, em caso de abertura de uma posição num bilhete de rede, corresponde à posição a ser aberta. A questão é clara.

 
Almaz:
código de erro 1, isto é sucesso mt5.RES_S_OK, a próxima compilação irá escrever [1, 'Sucesso']. Códigos com valores negativos são erros mt5.RES_E_xxx.

Sim, obrigado - a questão é clara quanto à razão pela qual a linha em branco estava lá.

 
Olá, há alguma actualização no post #517 sobre como obter uma actualização do terminal sobre newbar?
 
fbrand:
Olá, há alguma actualização no post #517 sobre como obter uma actualização do terminal sobre newbar?

Até agora, tive de fazer o ciclo com a verificação do tempo:

if mt5.symbol_info_tick(symbol).time % (60 * timefr) == 0:
...

Não é muito conveniente. Mas como opção temporária é óptimo.

 
Vladimir Perervenko:

Até agora, tive de fazer o ciclo com a verificação do tempo:

Não é muito conveniente. Mas como opção temporária é óptimo.

Não planeado. Verificar se há novas barras num temporizador ou num loop.

 
Rashid Umarov :

Não planeado. Verificar se há novas barras num temporizador ou num loop.


Se utilizar de acordo com Vladimir, não obteremos então o volume exacto, mas apenas o volume daquele carrapato na sondagem?


E se depois usar as novas barras no EA para chamar o guião Python, e o guião apontar para mais do que um símbolo, são todas barras novas para todos os símbolos no terminal executadas ao mesmo tempo, ou devo criar um guião Python e um conselheiro para cada símbolo?


Obrigado

ps: desculpe ter de ir para o inglês, pois o tradutor estragou as palavras
Обработчик события "новый бар"
Обработчик события "новый бар"
  • www.mql5.com
Для создателей индикаторов и экспертов всегда был актуален вопрос написания экономичного кода с точки зрения времени выполнения. Можно подойти к решению этой задачи с разных сторон. Из этой обширной темы в данной статье будет затронут, казалось бы уже решенный вопрос: проверка появления нового бара. Это достаточно популярный способ ограничения...
 

Usando ohistory_orders_get().

Na documentação, copiar colar explicitamente :)(https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5historyordersget_py)

E há uma estranheza na utilização:

    from_date = datetime(2020,1,1)
    to_date = datetime.now()
    if mt5.initialize(acc['path'], login=login, server=acc['server'], password=acc['pass']):
        orders = mt5.history_orders_get(from_date, to_date)    
        if len(orders) > 0:
            orders_frame = pd.DataFrame(orders)
            print(orders_frame.head())

Resultado:

 python.exe .\history-deal-mt-1.py
         0           1              2           3              4  5  6  7  8  9      10       11  12  13    14   15       16      17      18       19   20      21             22 23
0  4308935  1583603265  1583603265527  1583603267  1583603267535  0  0  0  0  4  234000  4308935   0   3  0.01  0.0     0.00     0.0     0.0  9128.00  0.0  BTCUSD  python script
1  4308936  1583603511  1583603511561  1583603511  1583603511561  0  1  0  1  4  234000  4308935   0   5  0.01  0.0  9128.01     0.0     0.0  9128.01  0.0  BTCUSD  [tp 9128.010]
2  4308937  1583603550  1583603550455  1583603552  1583603552460  0  1  0  0  4       0  4308937   0   0  0.01  0.0     0.00     0.0     0.0  9127.50  0.0  BTCUSD
3  4308938  1583603969  1583603969250  1583603971  1583603971253  0  0  0  0  4  234000  4308938   0   3  0.01  0.0     0.00  9135.5  9142.5  9139.00  0.0  BTCUSD  python script
4  4308939  1583603974  1583603974183  1583603974  1583603974188  0  1  0  1  4  234000  4308938   0   4  0.01  0.0  9135.50     0.0     0.0  9135.50  0.0  BTCUSD  [sl 9135.500]

Total, os dados são exibidos, mas onde, o quê - só se pode adivinhar.

Pessoal, pls - adicionar algo como _campos ou as_dict() ou __dict__ ao TradeOrder (e similares).

    Point = collections.namedtuple('Point', ['x', 'y', 'val'])    
    print(Point._fields)
python.exe .\history-deal-mt-1.py
('x', 'y', 'val')

Realmente, não é conveniente agora.

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

Usando ohistory_orders_get().

Na documentação, copiar colar explicitamente :)(https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5historyordersget_py)

Actualizar a ajuda ou ir para o link

 
Rashid Umarov:

Não há planos. Verificar novas barras num temporizador ou num laço.

Pode ser mais específico sobre o temporizador?

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

Pessoal, pls - adicionar algo como _campos ou as_dict() ou __dict__ ao TradeOrder (e similares).

Realmente, não é conveniente agora.

Em 5.0.27 já está, toda a sequência de estrutura (análogo de tuple nomeado para C API) adicionou o método _asdict()

sym = mt5.symbol_info("EURUSD")._asdict()
for i in sym:
   print(i, '=', sym[i])