Обсуждение статьи "Соединение MetaTrader 5 и Python: получение и отправка данных" - страница 9
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте, Максим!
Немного продвинулся в своих познаниях языка Python, однако не могу найти подробную информацию о совместном доступе к файлу csv со стороны Python и сторонней программы, например, того же советника написанного на MQL5. Проше говоря, программный код на языке Python периодически записывает информацию в файл csv, а советник на языке MQL5 считывает с него информацию и выполняет нужные мне команды. Такой совместный доступ с двух сторон вообще возможен?
С уважением, Владимир.
совместный нет, но обе программы могут пытаться открыть файл, если он не занят другой программой. И должны закрывать его после чтения\записи.
совместный нет, но обе программы могут пытаться открыть файл, если он не занят другой программой. И должны закрывать его после чтения\записи.
Спасибо, Максим, за пояснение, особенно про закрытие файла после чтения\записи. Вот этот момент как раз мне и нужен был для понимания.
С уважением, Владимир.
совместный нет, но обе программы могут пытаться открыть файл, если он не занят другой программой. И должны закрывать его после чтения\записи.
Здравствуйте, Максим! Этот момент учёл. Помогите разобраться с ещё одним моментом, а именно, с кодировкой текста в csv файле, созданного при помощи языка Python и последующим чтением этого текста советником, созданным на языке MQL5. Пересмотрел много информации на сайте MQL5 и других интернет-ресурсах, но толкового объяснения не нашел. В общем, программный код, созданный при помощи языка Python, открывает новый файл csv и записывает в него нужную мне информацию. Для простоты наладки записывается пока одно слово на русском языке, которое было реально спарсено с сайта. Слово в открытом файле csv читаю без проблем, однако советник не понимает кодировки этого слова. Это точно, т.к. при написании советника (кстати, у меня получилось написать первый самостоятельный код!) использовал файл csv с таким же названием и в ячеку А1 писал это же слово, но только уже с клавиатуры. Что только не пробовал менять в обоих кодах (в смысле на Python и MQL5), но пока ничего не получается.
Можете подсказать какую кодировку (encoding=?) прописать у кода Python:
и какую прописать у кода MQL5:
чтобы они "подружились"? Который день меняю эти кодировки, уже голова не соображает, что дальше делать. А остался всего лишь один единственный момент, который мешает нормальной работе.
Возможно, что ещё не все кодировки для Python нашел, но самое интересное, что когда у кода MQL5 стоит кодировка FILE_ANSI, которая приведена в строке выше и когда на клавиатуре в csv файл пишу слово, например, "покупать", то после сохранения этого файла советник всё отлично читает и чётко работает.
Иногда подумываю: а может быть тут дело, вообще, не в кодировках?! А в чём тогда?
Помогите, пожалуйста, разобраться и понять - в чем причина!
С уважением, Владимир.
P.S. Нашел наконец-то хоть одно вразумительное объяснение: "В Python 3 кодировка по умолчанию — UTF-8".
Добрый, чтобы не было проблем лучше писать в бинарный файл, а на выходе преобразвывать обратно в символы. В этой статье, по моему, так и сделано в примере с сокетами. То есть флаг FILE_BIN
Добрый, чтобы не было проблем лучше писать в бинарный файл, а на выходе преобразвывать обратно в символы. В этой статье, по моему, так и сделано в примере с сокетами. То есть флаг FILE_BIN
Здравствуйте, Максим! Благодаря Вашей подсказки нашел в интернете вот такую информацию: "Бинарные файлы в отличие от текстовых хранят информацию в виде набора байт. Для работы с ними в Python необходим встроенный модуль pickle".
Иными словами, если в программном коде Pyhon при помощи установленного модуля pickle записываем любое слово в виде набора байт, изменив 'w' на 'wb'
а затем в советнике, написанном на языке MQL5, устанавливаем вместо флага FILE_ANSI устанавливаем флаг FILE_BIN, то должно всё заработать? Наверное запись нужно делать уже не в csv файл, а в файл dat.
Спасибо Вам огромное, Максим, за подсказку, сегодня вечером обязательно попробую!
С уважением, Владимир.Здравствуйте, Максим! Благодаря Вашей подсказки нашел в интернете вот такую информацию: "Бинарные файлы в отличие от текстовых хранят информацию в виде набора байт. Для работы с ними в Python необходим встроенный модуль pickle".
Иными словами, если в программном коде Pyhon при помощи установленного модуля pickle записываем любое слово в виде набора байт, изменив 'w' на 'wb'
а затем в советнике, написанном на языке MQL5, устанавливаем вместо флага FILE_ANSI устанавливаем флаг FILE_BIN, то должно всё заработать? Наверное запись нужно делать уже не в csv файл, а в файл dat.
Спасибо Вам огромное, Максим, за подсказку, сегодня вечером обязательно попробую!
С уважением, Владимир.не обязательно, можно просто выбрать кодировку
st = b'hello world'
или
'hello world '.encode('ascii')
и записать в файл. Потом попробуйте прочитать в мт5
не обязательно, можно просто выбрать кодировку
st = b'hello world'
или
'hello world '.encode('ascii')
и записать в файл. Потом попробуйте прочитать в мт5
В очередной раз говорю и не устану говорить ОГРОМНОЕ СПАСИБО, Максим, и дай Вам бог долгих лет жизни!
Самое главное для меня, что Вы подсказали в чём суть проблемы, а само решение нашёл ещё проще. В советнике оставил всё так, как и было при тестировании файла csv со словом в ячейке А1, занесенным с клавиатуры компьютера. А для программного кода, написанного на языке Python, все-таки нашёл в интернете вот такую подсказку:
with open(save_file, 'w', encoding='cp1251', errors='replace', newline='') as save:Красным цветом выделил, то чего не хватало! Надеюсь, что эта строчка тоже кому-нибудь пригодится при написании кода на языке Python!
С уважением, Владимир.
Добрый день.
У меня задача для решения на python в matplotlib/plotly:
1. Есть OHLC для отрисовки в основном окне
2. Есть данные для отрисовки в подокне
Как закодить, чтобы был простенький рисунок? дайте простой код на python
А у меня проблема с этим кодом:
пишет
Я с питоном ещё на Вы. Подскажите что не так?
А у меня проблема с этим кодом:
пишет
Я с питоном ещё на Вы. Подскажите что не так?