MetaTrader5 libarary in Python 3.7 - python

I am trying to analyze currency data using MT5 in Python but it is not working. I didn't understand where is the problem? even importing is not work
from MetaTrader5 import *
from datetime import date
# Initializing MT5 connection
MT5Initialize()
MT5WaitForTerminal()
print(MT5TerminalInfo())
print(MT5Version())
This is the error: MT5WaitForTerminal()RuntimeError: No IPC connection

I had the same issue and I found the following solution:
My terminal was downloaded from the broker site and probably had some modifications that block ipc connections.
I downloaded original software from https://www.metatrader5.com/en/download
and copied "Config" folder from broker's version.
Now python script works.

I have a computer with a Windows 10 64-bit installation where everything would work without a hitch. I also have another machine with a Windows 10 32-bit installation, which would always complain about an invalid IPC connection. Not the official MetaTrader 5 version, nor my broker's customized version would work out of the box.
I eventually fixed it by specifying the path to my broker's exe in the initialize function like below (check for your own path, and mind the use of / instead of \):
mt5.initialize("C:/Program Files (x86)/GT247/terminal.exe")

Related

Not able to run a python exe (not python installed, not odbc driver installed...)

Problem:
I would like to automatize one daily task avoiding the excel usage and this have as final objective centralizing the data in SQL Server. For that I have created a TKinter GUI with Python.
Once I have validated the python script in my PC, I have created an exe with pyinstaller.
After testing the exe in one quality technician PC (not python installed), I have detected an error message in the cmd related to the absence of installation of the pyodbc driver.
Question / Help request:
Do we have any way to run this exe, without the necessity of installing python in all the PCs? I would like to avoid this scenario.
If we have any library or package available for this... I am not being able to identify which is!
Error Message:
Code:

VSCode Python Extension: Extension host terminated unexpectedly

Running the latest version of VSCode: 1.61.2 in Windows 10. Everything was working fine until Yesterday when my Python extension gave me this error "Extension host terminated unexpectedly" and I'm unable to run or debug Python files in VSCode.
I did a complete removal of VSCode (including the App, the code folder in AppData, and the .vscode folder). But when I reboot, reinstall and run VSCode and install the Python extension by Microsoft v2021.10.1365161279, I get the exact same error.
It seems like this should just work like it has for me for many years. Is there any way to find out what is breaking it?
I can successfully open and run Python files in remote WSL instances using VSCode, just not in Windows.
[Edit: The problem turns out to be Mozilla VPN. If I exclude VSCode from it, then the Python extension works.]
Lots of people reporting issues with the Python extension on Windows right now. There's an alleged fix for the fatal performance issues here, for example, but this hasn't made it into the regular update cycle yet afaik.
I'd suggest using VS Code Insiders or disable the Python extension for the time being or find a way to revert to an earlier Python extension version.
[Update] It looks like the changelog for 2021.10.2 (20 October 2021), to version v2021.10.1365161279, includes the following fixes:
Ensure we filter out unsupported features in web scenario using
shellExecutionSupported context key. (#17811)
Fix unresponsive
extension issues caused by discovery component. (#11924)
Update debugpy to 1.5.1 to ensure user-unhandled exception setting is false by default. (#17789)
So, I'd test uninstalling and reinstalling the Microsoft Python extension. It works for me with this new update.
It turns out the problem is my Mozilla VPN. If I turn it off, then my Python extension works, and it also works if I exclude VSCode from the VPN.

Import Winreg in a Python Script

I am currently working on a Jenkins freestyle job and one of the build steps is to run a Python script. I have been working on this job for a couple of days now and this is one of the last build steps needed to finish it off. I have reached a point where I get an error letting me know that the import winreg module does not exist.
I have installed Jenkins on CentOS and have read some documentation stating that I am unable to import this module on this distribution.
Is there no other way to solve this than to switch over to a Windows machine?
Thanks
It makes sense, the _winreg docs says:
These functions expose the Windows registry API to Python.
You could try to make it run on a windows virtual machine in your centos host or just following the official Installing+Jenkins+on+Red+Hat+distributions guide

Is it possible to write a windows service using Python?

Python has a win32service package that seems to allow windows service creation. I have carefully checked available google examples, for example this one:
Is it possible to run a Python script as a service in Windows? If possible, how?
I have placed code into ~/Documents/test.py and executed following under elevated command prompt:
> python test.py install
> python test.py debug
Unfortunately, every example i tried fails with error:
Debugging service TestService - press Ctrl+C to stop.
Error 0xC0000005 - Python could find the service class in the module
AttributeError: 'module' object has no attribute 'AppServerSvc'
(null): (null)
I have tested it with latest version of ActivePython (2.7.2.5 32-bit) on Windows 7 64-bit and Windows 8 64-bit. Of course, if service is started maually via service manager, it will not start either.
Am i doing something wrong or Python is not intended to be used for service creation on modern operating systems? Maybe i need a specific version of windows/python/pywin32? Of course, i can manually test all combinations starting from windows XP but it will take lots of time :(. Maybe someone already has experience with Python and windows services and can hint me what i'm doing wrong?
update
Tested on Windows XP 32-bit virtual macine (same code, same activepython distribution) - same error.
It appears that there is a bug in the ActiveState build for PyWin32. Installing ActiveState python 2.7.2.5 and running the linked sample code above, I get the same error that you are reporting.
But if I download Python 2.7.3 (2.7.2.5 does not seem to be available for download) and add PyWin32 build 214 (ActiveState seems to be using the 214 version of PyWin32). Then everything seems to work just fine. I also tried the latest build of PyWin32 (218) and it also worked correctly.
So I guess you can try reporting the problem to ActiveState (I don't have a support contract with them) and unless you have a requirement for using ActiveState, you can just switch to the standard Python builds.
I have been using services with the standard Python builds for years running on everything from Windows 2000 up to Server 2008 and Windows 7 with no problems. So I have good reason to believe that it will work for you also.
If you want to work with ActiveState to get the problem fixed, then the bug appears to be in their build of PythonService.cpp in the LoadPythonServiceInstance function. I looked at the registry entries that were created and they look fine, it is the PythonService.exe that is failing at loading your class. Based on the error message it appears to have loaded the module correctly and is just having trouble finding the class.

Installing python with python win32 extensions on a network drive

I need to keep a large number of Windows XP machines running the same version of python, with an assortment of modules, one of which is python-win32. I thought about installing python on a network drive that is mounted by all the client machines, and just adjust the path on the clients. Python starts up fine from the network, but when importing win32com I get a pop-up error saying:
The procedure entry point ?PyWinObject_AsHANDLE##YAHPAU_object##PAPAXH#Z could not be located in the dynamic link library pywintypes24.dll
after dismissing the message dialog I get in the console:
ImportError: DLL load failed: The specified procedure could not be found.
I searched the python directory for the pywintypes24.dll and it is present in "Lib\site-packages\pywin32_system32" .
What am I missing and is there another way in which I can install Python + Python-Win32 + additional module once and have them running on many machines? I don't have access to the Microsoft systems management tools, so I need to be a bit more low-tech than that.
On every machine you have to basically run following pywin32_postinstall.py -install once. Assuming your python installation on the network is N:\Python26, run following command on every client:
N:\Python26\python.exe N:\Python26\Scripts\pywin32_postinstall.py -install
Another important thing is Good Luck!. The reason is that you might need to do this as admin. In my case such setup worked for all but one computer. I still did not figure out why.
Python (or precisely, the OS) searches the DLLs using os.environ["PATH"] and not by searching sys.path.
So you could start Python using a simple .cmd file instead which adds \server\share\python26 to the path (given the installer (or you) copied the DLLs from \server\share\python26\lib\site-packages\pywin32-system32 to \server\share\python26).
Or, you can add the following code to your scripts before they try to import win32api etc:
# Add Python installation directory to the path,
# because on Windows 7 the pywin32 installer fails to copy
# the required DLLs to the %WINDIR%\System32 directory and
# copies them to the Python installation directory instead.
# Fortunately, in Python it is possible to modify the PATH
# before loading the DLLs.
os.environ["PATH"] = sys.prefix + ";" + os.environ.get("PATH")
import win32gui
import win32con
You could use batch files running at boot to
Mount the network share (net use \\server\share)
Copy the Python and packages installers from the network share to a local folder
Check version of the msi installer against the installed version
If different, uninstall Python and all version dependent packages
Reinstall all packages
This would be pretty much a roll your own central management system for that software.

Categories

Resources