Python Development Environment / Jack's Technology Stack

jack

Administrator
Staff member
Hi Jack,

No worries, I can understand. I was planning on doing something similar as I had to keep with multiple API's for different brokers.
Do you think you can share have you abstracted the incoming feed? (If you have any reference for incoming abstract.py it would be useful, it can avoid me potential rewrite of API multiple times)
I standardized on one format.. so strategies I've written can all use the same code and, if needed, dig into the data structure I've stored in memory in the same way regardless of the source vendor. This means when I write a new 'connection agent' that handles a quote feed, I parse the quote data and rebroadcast it in my own format.

An example flow:
  1. The vendor might use a websocket to broadcast a JSON object.
  2. That JSON object will be read by my agent and converted into a string that is formatted for my platform to use internally.
  3. The newly reformatted data gets broadcast to any strategy or code that's subscribed to it.
  4. If a strategy class had subscribed to it, up on reading the incoming broadcast, it stores a copy locally for ad-hoc reference, and then triggers an event.
  5. Should the event have user defined code set to run upon being triggered, that code runs (strategy logic, etc..)

I hope that helps.
 

jack

Administrator
Staff member
Jack

What Python 3.x IDE do you use or recommend?
Still using Visual Studio Code and IDLE for 99.9% of my coding and workflow.

VS Code for the heavy lifting, and IDLE for quick testing of concepts / shell use.

While not exactly an IDE, but still related to coding and workflow:

There's been a huge shift toward Jupyter Notebooks on the data analysis side of the industry, and I've read up on many people having worked this into their algo development workflow. . . perhaps I'm missing out, but I still would rather play with objects in a shell and output to Excel for further analysis. At least, I haven't found a use case where the visual side of Jupyter has increased my efficiency...

All that said, the one project that might change my mind on Jupyter Notebooks is D-Tale:

I've been playing around a bit with D-Tale and it's pretty nifty. More related to idea generation and analysis than coding up functional / production trading algos, but figured I'd point it out.
 

rod178

Well-Known Member
Jack

I've decided to use Spyder3 IDE. Also will look at using Anaconda for data analysis etc. It includes Spyder, as well as Jupyter Notebooks and a lot more, so an all in one. Maybe overkill although so far I like what I see https://docs.anaconda.com/_downloads/9ee215ff15fde24bf01791d719084950/Anaconda-Starter-Guide.pdf

Simple code text editor of choice is Notepadqq, a clone of Notepad++, which I previously used before permanently escaping to Linux.

I have still yet to look at https://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/what_is_jupyter.html
 
Last edited:

MurderPony

New Member
Thank you for interesting reading, OP. BTW, can you give me advice? I want to switch my current profession. I'm a webmaster, but TBH, I don't like this job. Not so long ago one of my friends told me that I should become Cisco certified network engineer. He gave me some reading. He also told me, that when I will end it, I should try to obtain a certification from this [url removed by admin] site. I have two questions:

1) What do you think about Cisco certification?
2) Should I really do it?

The question number 2 is important, because I've heard that this stuff is damn hard. I'm good with maths and I nailed to become a good webmaster, but now I want to change something. Did I choose a right path?
 
Last edited by a moderator:

jack

Administrator
Staff member
@MurderPony Yes, my background before business / finance / trading was IT and I did have a bunch of Cisco certs. Though I moved away from IT, so perhaps any response I give will be biased since it wasn't my passion and I moved on to trading.

If you want my general advice: You don't do things because they are easy or hard; You do them because you're interested and passionate. If that's not "you" when it comes to networking / IT, then consider taking some time to figure out what you're curious about first before committing to a course or certification. How difficult things are to achieve can relate to this. You will simply struggle more on "hard" certifications when you don't find the subject matter interesting and don't care that much about the industry.
 

jack

Administrator
Staff member
UPDATE:

My past method of connecting my algo stack to MetaTrader 5 was via ZeroMQ libraries and writing my own custom agents to translate between the two.

However, as of May 2020, MetaQuotes has released an official Python library that connects directly to MT5. I am in the process of integrating this new library into my stack to replace the ZeroMQ method.

Anyone doing work with MetaTrader 5 and Python should check out the new library:
Docs:

I rarely compliment MetaQuotes as a company (I rather detest their business practices,) but this was a good move.

(This does not apply for MT4, just MT5.. which is fine, because Darwinex still provides a complete implementation of connecting Python to MT4 via ZeroMQ. )
 

SecuritySurfer

New Member
Interesting blog and it may provide a path for this gnu/linux user. (Slackware, yes, I use vi)
I find that python isn't slow it's just that I'm a real quick thinker... just ask my wife, she's holding my beer...

Moved some investments to a Fidelity managed acct and watched it drop 100k in March.
Moved that investment back to a index fund when it got within 10% of the intiial value.
I figure I can screw up my investments with the best of them.
Probably move it back to cash for the forseeable future and do some paper trading.
Really hate MS stuff, but it's my view.
Only used when I was working because that's what they had.
 

jack

Administrator
Staff member
Really hate MS stuff, but it's my view.
Only used when I was working because that's what they had.
Everything I've written can (and is) also running on Linux. The stack is Python + Qt5 + ZeroMQ .. etc.. all libraries are cross platform.

The only dependence on Windows comes from apps that various brokers put out. That said, Interactive Broker's TWS platform (or API Gateway,) runs on Linux and provides API access, and they are a decent choice for self-directed active traders, so the Windows-phobic out there aren't that bad off. :p
 
Top