Я вижу symbol_info_tick, но как насчет symbol_info на таймфрейм, чтобы получить последнюю цену.
Есть ли какой-нибудь пример скрипта, который получает последние цены в датафрейм и затем открывает покупку или продажу на основе параметра? для python с MT5
Constants, Enumerations and Structures / Chart Constants / Positioning Constants - Reference on algorithmic/automated trading language for MetaTrader 5
Хм... У меня не возникло никаких трудностей с установкой.
Постоянно появляется сообщение об обновлении pip, но это никак не связано с установкой.
Пожалуйста, покажите журналы ошибок. Не видя ошибки сложно что-то сказать.
(venv) C:\Users\nicholi\PycharmProjects\mt5_doesnt_work_with_pip_inside_virualenv>pip --version
pip 19.0.3from C:\Users\nicholi\PycharmProjects\mt5_doesnt_work_with_pip_inside_virualenv\venv\lib\site-packages\pip-19.0.3-py3.8.egg\pip (python
3.8)
(venv) C:\Users\nicholi\PycharmProjects\mt5_doesnt_work_with_pip_inside_virualenv>pip install MetaTrader5
Collecting MetaTrader5
Could not find a version that satisfies the requirement MetaTrader5 (from versions: )
No matching distribution found for MetaTrader5
Return info in the form of a named tuple structure (namedtuple). Return None in case of an error. The info on the error can be obtained using last_error().
пример скрипта для закрытия всех открытых позиций, уменьшающего экспозицию самым быстрым способом на нетто- или хеджированных счетах.
import MetaTrader5 as mt5
def raw_order(**kwargs):
return mt5.order_send(kwargs)
def open_position_symbols():
symbols = sorted(
set(p.symbol for p in mt5.positions_get()),
key=lambda s: abs(net_position(mt5.positions_get(symbol=s))),
reverse=True
)
return symbols
def net_position(positions):
return sum(-p.volume if p.type else p.volume for p in positions)
def flatten(symbol):
positions = mt5.positions_get(symbol=symbol)
net_pos = net_position(positions)
if net_pos == 0:
return mt5.TRADE_RETCODE_DONE
info = mt5.symbol_info_tick(symbol)
order_type, price, comment = (
(mt5.ORDER_TYPE_SELL, info.bid, "flatten long"),
(mt5.ORDER_TYPE_BUY, info.ask, "flatten short")
)[net_pos < 0]
result = raw_order(
action=mt5.TRADE_ACTION_DEAL,
type=order_type,
symbol=symbol,
volume=abs(net_pos),
price=price,
comment=comment,
)
return result.retcode
def reconcile(symbol):
positions = mt5.positions_get(symbol=symbol)
if not positions:
return mt5.TRADE_RETCODE_DONE
try:
long = next(p for p in positions if not p.type)
short = next(p for p in positions if p.type)
except StopIteration:
return mt5.TRADE_RETCODE_ERROR
result = raw_order(
action=mt5.TRADE_ACTION_CLOSE_BY,
position=long.ticket,
position_by=short.ticket,
)
if result.retcode == mt5.TRADE_RETCODE_DONE:
return reconcile(symbol)
return mt5.TRADE_RETCODE_ERROR
def close_all():
symbols = open_position_symbols()
for symbol in symbols:
if (retcode := flatten(symbol)) != mt5.TRADE_RETCODE_DONE:
print(f"CloseAllError: did not flatten {symbol}, error code={retcode}")
for symbol in symbols:
if (retcode := reconcile(symbol)) != mt5.TRADE_RETCODE_DONE:
print(f"CloseAllError: could not reconcile {symbol}, error code={retcode}")
if __name__ == "__main__":
try:
if mt5.initialize():
close_all()
finally:
mt5.shutdown()
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Привет,
Я вижу symbol_info_tick, но как насчет symbol_info на таймфрейм, чтобы получить последнюю цену.
Есть ли какой-нибудь пример скрипта, который получает последние цены в датафрейм и затем открывает покупку или продажу на основе параметра? для python с MT5
СпасибоХм... У меня не возникло никаких трудностей с установкой.
Постоянно появляется сообщение об обновлении pip, но это никак не связано с установкой.
Пожалуйста, покажите журналы ошибок. Не видя ошибки сложно что-то сказать.
Пожалуйста, покажите вывод команды python -V в virtualenv и без virtualenv.
И, пожалуйста, попробуйте установитьMetaTrader5 командой python3-mpip install , и покажите pls вывод команды.
Пожалуйста, покажите вывод python -V, в virtualenv и без virtualenv
И, пожалуйста, попробуйте установитьMetaTrader5 командой python3 -mpip install , и покажите pls вывод команды.
Все то же самое. Ничего не меняется. Единственный способ исправить ситуацию - обновить pip внутри venv с помощью easy_install -U pip
Все остается неизменным. Ничего не меняется. Единственный способ исправить ситуацию - обновить pip внутри venv с помощью easy_install -U pip
Не понимаю... Нужно следить за локальной установкой python, переменной PATH и т.д., это не правильно ...
Форум о трейдинге, автоматизированных торговых системах и тестировании торговых стратегий
MetaTrader 5 Python User Group - как использовать Python в Metatrader
Рашид Умаров, 2020.03.13 09:42
Обновитесь до версии 5.0.27
Запустить скрипт
результаты
MetaTrader5 package author: MetaQuotes Software Corp. MetaTrader5 package version: 5.0.27 {'login': 25115284, 'trade_mode': 0, 'leverage': 100, 'limit_orders': 200, 'margin_so_mode': 0, 'trade_allowed': True, 'trade_expert': True, 'margin_mode': 2, 'currency_digits': 2, 'fifo_close': False, 'balance': 97639.46, 'credit': 0.0, 'profit': -178.77, 'equity': 97460.69, 'margin': 704.8, 'margin_free': 96755.89, 'margin_level': 13828.134222474464, 'margin_so_call': 50.0, 'margin_so_so': 30.0, 'margin_initial': 0.0, 'margin_maintenance': 0.0, 'assets': 0.0, 'liabilities': 0.0, 'commission_blocked': 0.0, 'name': 'MetaQuotes Dev Demo', 'server': 'MetaQuotes-Demo', 'currency': 'USD', 'company': 'MetaQuotes Software Corp.'} Вывод каждого свойства отдельно: login = 25115284 trade_mode = 0 leverage = 100 limit_orders = 200 margin_so_mode = 0 trade_allowed = True trade_expert = True margin_mode = 2 currency_digits = 2 fifo_close = False balance = 97639.46 credit = 0.0 profit = -178.77 equity = 97460.69 margin = 704.8 margin_free = 96755.89 margin_level = 13828.134222474464 margin_so_call = 50.0 margin_so_so = 30.0 margin_initial = 0.0 margin_maintenance = 0.0 assets = 0.0 liabilities = 0.0 commission_blocked = 0.0 name = MetaQuotes Dev Demo server = MetaQuotes-Demo currency = USD company = MetaQuotes Software Corp.Можно ли получить символ графика, на который падает скрипт python, подобно Symbol() в MQL-программе?
Можно ли получить символ графика, на который падает скрипт python, подобно Symbol() в MQL-программе?
Возможно, нужно использовать функцию symbol_select или symbol_info:
https://www.mql5.com/en/docs/integration/python_metatrader5/mt5symbolinfo_py
пример скрипта для закрытия всех открытых позиций, уменьшающего экспозицию самым быстрым способом на нетто- или хеджированных счетах.
пример скрипта для закрытия всех открытых позиций, уменьшающего экспозицию самым быстрым способом на нетто- или хеджированных счетах.
Это последствия вчерашнего рыночного шторма? ;)