I can't speak for the trading world, but as far as interpreted languages go, it's been referred to as having a lower barrier to entry than those with heavier/stricter syntax (i.e. Perl which has plenty of ways to piss me off sometimes). The rest is about the snowball effect of the community's size: there's already a good library of code out there, and plenty of competent developers to maintain it, so it's easier to start a project in Python than in some lesser-known (perhaps new) language, even if it would be a bit more tailored to the task. Of course Python was once new (back when Perl was still the go-to interpreted open-source language of choice), but for a financial application you want something with a long enough track record. So in a nutshell, a decent learning curve combined with a large supporting community and educational material. Sounds like a smart choice to me. (And to Google, for that matter, who embraced it early on for things I thought they were nuts for not compiling, but these days processing power is cheap and Python has just-in-time VMs...)
Python is the most complex way to code strategies. People say those services have advantages because they offer data. If one cannot afford to have data access for proprietary development then better not trade at all. Anyone here who claims python is for trading system development please submit your code for a n-day channel breakout with trailing stop exit. It should be fun.
Not sure what data services and python have to do with each other. This is my breakout / channel signal literally cut and paste (I've only taken out some diagnostics). It might not be exactly what you want (it doesn't give a binary exit) but I'm sure you can work out how to modify it . It doesn't have a trailing stop as its a continous signal but that would be easy to do with rolling min and max. Code: import pandas as pd def blackadder(idx, x, max_x, min_x): r_px=x[idx] r_min=min_x[idx] r_max=max_x[idx] return 4*(r_px - mean([r_min, r_max]))/(r_max - r_min) def baldrick(x, ws): max_x=pd.rolling_max(x, ws, min_periods=min(len(x),int(ws/2))) min_x=pd.rolling_min(x, ws, min_periods=min(len(x), int(ws/2))) ## Probably an easier way to do this by overloading the rolling function in pandas, but I haven't got time to check sig=[blackadder(idx, x, max_x, min_x) for idx in range(len(x.index))] sig=pd.TimeSeries(sig, index=x.index) ## smooth is optional to reduce non alpha noise sig=pd.ewma(sig, span=int(ws/4.0), min_periods=int(ws/8.0)) return sig Not sure exactly what you are trying to prove??
I think you're viewing the problem from the wrong angle: I want interested college students and other people without funds to have an opportunity to experiment on their own, at least as a learning exercise. Affordable high-quality data helps a great deal to level the playing field, just like other sources of affordable education do in general. So what if a bunch of subscribers give up and move on to other things? At least they didn't waste a fortune in the process.
The only troll I see here is you, you keep on posting obscure code (your coding skills still are mediocre at best) and dive into unrelated topics. "Stirring the pot" was a good expression by VPhantom to describe your attitude here. I have kind of lost touch with your actual point you try to make. So, I still wait for a satisfactory answer in the same way "syswizard" does: Why would you want to use Python for this? Python and R in finance space are perfect to perform research and time series analysis, not to implement a trading architecture. But oh, I almost forgot, you put all those on ignore that disagree or challenge you.
"But oh, I almost forgot, you put all those on ignore that disagree or challenge you." is that not the kettle calling the pan black. oh i forgot you only do it to posters who definitively prove you wrong. how are your phantom hk traders doing, the ones who are pulling out of the market 1/2 per cent daily on their capital in spite of a stamp tax of .005