Mindblown: a blog about philosophy.
-
Introducing jQuery
This lesson covers “There are only two kinds of languages: the ones people complain about and the ones nobody uses.” How well this sentence from Bjarne Stroustrup, who designed and implemented C++, summarizes the sentiments about JavaScript. It, as well as several other languages (most notably PHP), was bemoaned as a “bad” language for several…
-
Conclusion
Congratulations on getting so far in our studies! I know that this lesson was very long, but hopefully not boring. We covered virtually all aspects of developing live trading applications and backtesters, so now, you are well equipped with powerful tools that should help you develop great trading strategies. Let’s quickly summarize what we learned in…
-
Backtesting – speeding up the research
The process of developing a trading strategy (I mean the trading logic, not the application) is an infinite loop: The question is: what kind of application shall we use for testing in step 3? Of course, we could use our existing trading app, draft some strategy logic, and then run it in test mode, as we’ve just done, collecting…
-
Trading application with live data feed
As always, we start by doing some imports: Next, we create a class that contains the strategy metadata (see the Trading logic component section): Now, we prepare three (!) tick data queues: Why three? This is one of the solutions to the thread synching problem explained in the Multithreading – convenient but full of surprises section. The first queue (tick_feed_0) connects the market data receiver…
-
Multithreading – convenient but full of surprises
We already worked with multithreading (see Lesson 5, Retrieving and Handling Market Data with Python, the Universal data connector section), and we found that using multiple threads makes life way easier when we develop modular scalable applications. However, we never explored how multithreading is implemented in Python. Two concepts are frequently confused: multiprocessing and multithreading. The difference between them is that the former uses the…
-
Market data component
This component should be able to receive ticks from virtually any source, clean it up, translate them into the single format used throughout our app, and put them into the data queue: Figure 11.1 – Tick data receiving component The beauty of this approach is that as soon as the tick is sent to the tick queue, we can forget…
-
Trading app architecture – revised and improved
In Lesson 1, Developing Trading Strategies – Why They Are Different, we proposed a generalized architecture of a trading application. In brief, it consists of the following components: Anyway, this simplified architecture lists the essential components but does not say anything about how they communicate with each other. Of course, it is possible to use a linear architecture where…
-
Backtesting and Theoretical Performance
It’s been a long and, hopefully, interesting – although difficult at times – journey. It took us ten lessons to get familiar with all the essentials of market structure and the key concepts that create the foundation of systematic and algo trading. Now, we have approached the conclusion of this entire app. It’s time to…
-
Conclusion
Now, we are familiar with orders of the three main types, and we know in which cases we prefer to use market, stop and limit orders, and in which cases we’d rather avoid using them. Besides that, from previous lessons, we remember how to receive and handle market data, and how to use technical analysis,…
-
Compound orders
Compound orders are those that assume a certain logical chain in their execution. That’s why they are also referred to as conditional orders. Strictly speaking, such an order is not a single order: it’s a sequence of orders that are triggered one by another. As the most common example, let’s consider a stop-limit order. Unlike stop or limit orders, it requires two…
Got any book recommendations?