MetaTrader 5 Python User Group - как использовать Python в Метатрейдере - страница 68

 
Roman:

Thank you Diamond.
There are no errors.
The paths are spelled out correctly.
I deleted the exact path in mt5.initialize (), restarted the terminal and the figure began to be displayed. 

You have to use a raw-string or escape all of the backslashes. 

option1 = r'C:\Program Files\MetaTrader 5\terminal64.exe'
option2 = 'C:\\Program Files\\MetaTrader 5\\terminal64.exe'
 
nicholi shen:

You have to use a raw-string or escape all of the backslashes. 

I also thought about shielding when Almaz wrote for the exact path. Yes it worked too. thank

 
Almaz :

У вас срабатывает ограничение на кол-во баров в чартах, нужно снять это ограничение в Терминале (Tools->Options->Max bars in chart).
В следующих билдах Терминала мы будем возвращать ошибку (None) при попытке такого запроса.

Благодарю за совет.

Теперь MT5 доставляет все данные правильно.

 

Python 3.8

Сборка 2470

Пакет 5.0.33


Сбой функции Orders_get

Возврат не "НЕТ", если нет заказов.

import MetaTrader5 as mt5

if not mt5.initialize():
    print( "initialize() failed, error code =" , mt5.last_error())
    quit()

orders = mt5.orders_get(symbol= "GBPUSD" )
if orders is None:
    print( "No orders on GBPUSD, error code={}" .format(mt5.last_error()))
elif len(orders) > 0 :
    print( "Total orders on GBPUSD:" , len(orders))
     for order in orders:
        print(order)

mt5.shutdown()


 
Christian:

Python 3.8

Сборка 2470

Пакет 5.0.33


Сбой функции Orders_get

Возврат не "НЕТ", если нет заказов.


Все правильно, вернулось пустое множество - признак отсутствия ордеров, это не ошибка, запрос отработался успешно, None возвращается при явной ошибке. А вот то что он также возвращает пустое множество на символах которых нет на сервере брокера, это ошибка, поправлено, будет доступно со следующим обновлением терминала.
 
Almaz :
Все правильно, вернулось пустое множество - признак отсутствия ордеров, это не ошибка, запрос отработался успешно, None возвращается при явной ошибке. А вот то что он также возвращает пустое множество на символах которых нет на сервере брокера, это ошибка, поправлено, будет доступно со следующим обновлением терминала .

Хорошо, я действительно понимаю это?


Есть только 2 типа ответов:

1. НЕТ

2. Кортеж с длиной больше 0


В следующей сборке> 2470

 
Christian:

Хорошо, я действительно понимаю это?


Есть только 2 типа ответов:

1. НЕТ

2. Кортеж с длиной больше 0


В следующей сборке> 2470

No.

1. None if some error raised

2. Tuple with length >=0

 
Rashid Umarov:

No.

1. None if some error raised

2. Tuple with length >=0

Ok, now i get it.

Thx

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

Обратите внимание, что mt5.terminal_info() показываем:

значение path='C:\\Works\\MT5 - terminals\\MetaTrader 5', data_path='C:\\Works\\MT5 - terminals\\MetaTrader 5', commondata_path='C:\\Users\\rip\\AppData\\Roaming\\MetaQuotes\\Terminal\\Common'

идентичны. Так и должно быть?

Код ниже:

 
Almaz:

@Almaz
При первом запуске функций copy_xxx_xxx, когда терминал не запускался какое то время,
функции сразу возвращают имеющийся результат с пропуском истории, не дожидаясь синхронизации подкачки истории.
То есть первый вызов функций возвращает результат с пропущенной историей.
Только на последующих вызовах будет возвращён корректный результат, когда история подкачается.
Возможно ли подправить этот момент? И функции copy_xxx_xxx дожидались подкачки истории при первом вызове.

Причина обращения: