This post details a strategy along the lines of what I was asking in previous post titled “Direction agnostic strategies”. Because I am a new user and I can only post one image in the post, all the screenshots ahve been combined in one image at the end of the post.
The strategy aims to capitalize any small-ish price movement, without concerning itself with the direction of the price. It has some similarities with scalping, but it is not truly a HFT strategy and operates with small volumes relative to the size of the account. It trades mechanically, through a bot, in the following manner:
- When the bot starts, it opens one BUY and one SELL, with a TP of 30 pips.
- When a position hits the TP, it opens a new position in the same direction, with a TP of 30 pips, and so on.
- If the price moves in the opposite direction, it will open a new position in the “losing” direction after 100 pips.
Example (let’s ignore spread):
- The bot starts and the current price is 1.2350. It opens one BUY with TP at 1.2380 and one sell with TP at 1.2320.
- Price reaches 1.2380 and the BUY position hits TP. A new BUY is opened with TP at 1.2410.
- If the price keeps going up, a new BUY is opened every time a BUY position hits TP. When the price reaches 1.2450, a new SELL is opened with TP at 1.2420 (and so on, every 100 pips, if the price keeps going up).
When the price ranges up, there will be a trail of SELL positions that accrue running losses. But the price will eventually turn, the SELL positions will close and instead we’ll have a trail of losing BUY positions.
In time, the running P/L will stabilise, once the price defines a range (which could be in the order of thousands of pips). However, the strategy makes enough money to increase equity above starting point after the running P/L stabilizes.
The weakness of the strategy is the trail of losing trades it lays in both directions. There are some ways I deal with this, but I do not have something very efficient at this point. However, this is not really essential in the grand scheme of things.
Moving from theory to practice, here is the real life performance of the strategy:
The bot was started on an account with 4.500EUR, leverage 1:500, trading USDCAD. The size of the trade was 0.01 lots. After about two and a half months, another 1.500EUR were added to the account and the trade size was increased to 0.03 lots.
In order to manage the losing trades, some of the positions were left without a TP and coupled with a distant losing trade in the same direction and they were closed together when the net profit of one position covered the net loss of the other - let’s call this coupling. Coupling works, but does not really solove the issue. It merely decreases it’s magnitude. But, again, it does not matter so much.
Here is how the account looks now:
- It has 58 open trades and a running P/L of about 1.000EUR. The running P/L has been stable for the past 2-3 weeks, around 1.000EUR
- The most distant positions are some 4.000 pips away, but their size is small (0.01)
- The equity of the account is 7.400EUR. If I were to close down the account now, I would have a net profit of 1.400EUR. This translates to a return of 23% over five and a half months.
>> See Image A at the end.
Below is the evolution of the account. While the profit factor seems high, this has to do with the fact that losing trades are not closed.
>> See Image B at the end.
An “upgrade” of the bot that I recently finished testing, adopts some altered mechanics, in order to better profit from trending prices:
- We start at 1.2350 (the price when the bot starts running) and open a BUY and a SELL position, without TP
- When the price reaches 1.2380 (30 pips above entry price for the BUY), we place a SL at 1.2365 (15 pips above entry price). This has secured our position and if the prices moves back, we have covered the commission and we have a little profit.
- Because our previous BUY is now secured, we open a new BUY. When the price reaches 30 pips above the entry price of the second BUY, we place the SL at 15 pips and open a new BUY, and so on.
- For each open position, once the price reaches 50 pips above its SL, we activate a trailing SL.
- The price will eventually turn around and trigger our trailing SL and we will be left with only 1 open BUY position at the top, where the price has not reach 30 pips above entry price to place the SL.
- As the price goes down, we open new BUY positions once the price hits 100 pips below the existing open BUY.
- We do the same for SELL and let the process go on idefinetely
- To deal with the losing positions, we use coupling (as described above), but with several winning positions coupled with a losing one. It still isn’t very efficient, but it’s better than nothing,
This was backtested on USDCAD, starting equity 10.00EUR, leverage 1:500 and trade size of 0.03. Backtest was done on tick. This is how it perfomed for 1.01.2023 - 31.12.2023:
>> See Image C at the end
It has 124 open positions and a large running P/L, but equity is 76% above starting point. Not bad for one year.
If we look at the equity graph we notice that there are a few moments when, should we had closed the account, we would have made some nice profits (the blue scribbles):
- Some 2000EUR net profit (20% return) after about 3 months
- Some 5000EUR net profit (50% return) after around 6-7 months
- And a very good 9000EUR net profit (90% return) if we would have shut down the account some 3 weeks before the end of the year.
>> See Image D below
Here is the image with all four images combined: