market_book_add retorna sempre False

 

Pessoal , tudo bem?


apliquei exatamente o código descrito na documentação (substituindo o  EURUSD por um ativo brasileiro), mas a função  market_book_add() sempre retorna "False".

Alguém tem experimentado o mesmo problema?

documentação: https://www.mql5.com/en/docs/integration/python_metatrader5/mt5marketbookget_py


print("MetaTrader5 package version: ",mt5.__version__)
print("")

ticker = 'WINJ21'
 

if mt5.market_book_add(ticker):

    for i in range(10):
        hora_atual = datetime.datetime.now()
        items = mt5.market_book_get(ticker)
        print(items)
        if items:
            for it in items:
                print(it._asdict())
        time.sleep(0.5)

    mt5.market_book_release(ticker)
else:
    print("mt5.market_book_add('EURUSD') failed, error code =",mt5.last_error())
mt5.shutdown()
Documentation on MQL5: Integration / MetaTrader for Python / market_book_get
Documentation on MQL5: Integration / MetaTrader for Python / market_book_get
  • www.mql5.com
market_book_get - MetaTrader for Python - Integration - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
 
pegzzi:

Pessoal , tudo bem?


apliquei exatamente o código descrito na documentação (substituindo o  EURUSD por um ativo brasileiro), mas a função  market_book_add() sempre retorna "False".

Alguém tem experimentado o mesmo problema?

documentação: https://www.mql5.com/en/docs/integration/python_metatrader5/mt5marketbookget_py


Olá, bom dia, tudo bem?


Você esta testando o código neste feriado de carnaval? O erro provavelmente é que o mercado está fechado, logo, retorna falso.

Para não ficar parado e continuar testando seu código, você pode baixar o Metatrader5, que já vem com uma conta demo ativa para mercado Forex, que funciona de segunda a sexta, 24h. É possível ter o Metatrader para sua corretora e para o mercado Forex ao mesmo tempo. Só não deixa os dois abertos ao mesmo tempo quando rodar seu código que pode dar erro.


Você pode checar também a biblioteca que eu fiz, caso te ajude.


Esse é o link da classe book.


https://github.com/Joaopeuko/Mql5-Python-Integration

Download the MetaTrader 5 trading platform for free
Download the MetaTrader 5 trading platform for free
  • www.metatrader5.com
Download MetaTrader 5 and start trading Forex, Stocks and Futures! Rich trading functionality, technical and fundamental market analysis, copy trading and automated trading are all exciting features that you can access for free right now! MetaTrader 5 offers a wide variety of functions for the modern forex and exchange market trader: Full set...
 

Ola Joao, tudo bem?


Muito obrigado pela resposta e pela biblioteca


Utilizando o código q vc disponibilizou continuo recebendo "False" quando tento rodar a marget_book_add tanto na conta da corretora BR quanto no mercado Forex.

Pode ser alguma configuração do próprio Mt5? 

 
pegzzi:

Ola Joao, tudo bem?


Muito obrigado pela resposta e pela biblioteca


Utilizando o código q vc disponibilizou continuo recebendo "False" quando tento rodar a marget_book_add tanto na conta da corretora BR quanto no mercado Forex.

Pode ser alguma configuração do próprio Mt5? 


Usando o código abaixo, sem mudar nada, com o Metatrader da sua corretora fechado e o do Forex aberto, ainda assim retorna falso?


Usando a biblioteca para importar algumas classes.

from include.trade import Trade
from include.book import Book

trade = Trade('Example',  # Expert name
              0.1,  # Expert Version
              'EURUSD',  # symbol
              567,  # Magic number
              0.01,  # lot, it is a floating point.
              25,  # stop loss
              300,  # emergency stop loss
              25,  # take profit
              300,  # emergency take profit
              '00:10',  # It is allowed to trade after that hour. Do not use zeros, like: 09
              '23:50',  # It is not allowed to trade after that hour but let open all the position already opened.
              '23:50',  # It closes all the position opened. Do not use zeros, like: 09
              0.0,  # average fee
              )

book = Book(trade.symbol)

while True:

    print(book.get())


Esse mesmo código para mim retorna:

Initializing the basics.
You are running the Example expert advisor, version 0.1, on symbol EURUSD.
Initialization successfully completed.

Summary:
ExpertAdvisor name:              Example
ExpertAdvisor version:           0.1
Running on symbol:               EURUSD
MagicNumber:                     567
Number of lot(s):                0.01
StopLoss:                        25
TakeProfit:                      25
Emergency StopLoss:              300
Emergency TakeProfit:            300
Start trading time:              00:10
Finishing trading time:          23:50
Closing position after:          23:50
Average fee per trading:         0.0
StopLoss & TakeProfit Steps:     1.0

Running

The symbol EURUSD was successfully added to market book.
(BookInfo(type=1, price=1.20663, volume=250, volume_dbl=250.0), BookInfo(type=1, price=1.20658, volume=100, volume_dbl=100.0), BookInfo(type=1, price=1.20656, volume=50, volume_dbl=50.0), BookInfo(type=1, price=1.20655, volume=36, volume_dbl=36.0), BookInfo(type=2, price=1.20652, volume=36, volume_dbl=36.0), BookInfo(type=2, price=1.2065, volume=50, volume_dbl=50.0), BookInfo(type=2, price=1.20649, volume=100, volume_dbl=100.0), BookInfo(type=2, price=1.20641, volume=250, volume_dbl=250.0))
(BookInfo(type=1, price=1.20663, volume=250, volume_dbl=250.0), BookInfo(type=1, price=1.20658, volume=100, volume_dbl=100.0), BookInfo(type=1, price=1.20656, volume=50, volume_dbl=50.0), BookInfo(type=1, price=1.20655, volume=36, volume_dbl=36.0), BookInfo(type=2, price=1.20652, volume=36, volume_dbl=36.0), BookInfo(type=2, price=1.2065, volume=50, volume_dbl=50.0), BookInfo(type=2, price=1.20649, volume=100, volume_dbl=100.0), BookInfo(type=2, price=1.20641, volume=250, volume_dbl=250.0))
 

Rodei exatamente esse código, mesmo erro

(imagem em anexo)

Arquivos anexados:
erro_mt5.PNG  18 kb
 
Precisa atualizar a  plataforma para a beta mais recente, essa função saiu para uma beta de duas semanas, eu já estou usando sem problemas
 
Jonathan Pereira:
Precisa atualizar a  plataforma para a beta mais recente, essa função saiu para uma beta de duas semanas, eu já estou usando sem problemas

Muito obrigado pela resposta,

realmente funciona!

Razão: