This is a work in progress. I'm using a complex ninjascript strategy to manage the trades. The basic premise of phase 1 of this project was to focus on trade management (stops, targets, emergency exits). Phase 2 is to pay more attention to risk management (read: don't take certain trades).
The work has proven that the indicator entry signal is not the most important part of making money by a long shot. My strategy uses three custom indicators and that's it. They are spread out across three time frames. A fourth time frame is used for trade management (with a 1 range size for granularity).
Some basic features of the trade management system (so far):
Up to 9 managed stops per trade
Up to 9 distinct targets per trade
Ability to specify number of contracts per target uniquely
In more detail I'll discuss:
The system can be optimized and decide based on historical data if it should use anywhere from 0 to 9 trailing stops. Let's decide it wants to use all 9 stops. It then has custom weights for each of those stops. They are cumulative, so if stop 1 has a weight of 4 ticks and stop 2 has a weight of 2 ticks and stop 3 has a weight of 4 ticks, it would look like this:
-> Once price moves 4 ticks (stop 1 weight), move stop to (entry) minus (stop 1 weight) 4 ticks
-> Once price moves another 2 ticks (stop 2 weight), move stop to (entry) minus (stop 1 weight + stop 2 weight) 6 ticks
-> Once price moves another 4 ticks (stop 3 weight), move stop to (entry) minus (stop 1 weight + stop 2 weight + stop 3 weight) 10 ticks.
Obviously it accounts for once the stop is no longer negative in relation to entry but is in fact positive and has locked in profits.
It places up to 9 individual entry orders, each with a unique name property so they can be managed independently of each other. I normally only use 3 targets but it can handle 9. The targets (in ticks) can be controlled individually, so lets say it determines that target 1 should be 6 ticks, target 2 is 12 ticks, and target 3 is 30 ticks. It will set them up that way at the beginning of the trade, and then as the trade progresses it will move the stops for all three per the stop management.
If something bad triggers, then it will first determine how many ticks of profit have already been locked in. If few ticks have been locked in (ie: not even to first target) then it will bail on the entire trade, all targets. But if some profits are locked in (past first target) then it will smartly only bail on contracts other than the runner. The last contract is left on as a runner and not bailed on in this case, so it has that extra room to breathe and perform.
On the reversals, if a stop is taken (any loss, not necessarily a full stop) then it will determine if a reversal should be taken (if it was long and got stopped, it would consider going short immediately). It doesn't follow the same rules as normal entry setups but it does filter a few obvious things. I currently have it setup to only trade 1 target on the reversal, although I am still playing with this. Many reversals are powerful moves and can run.
I hope this helps give you a lot of ideas. Understand I won't be posting the code because it represents years of learning, exercise and blood sweat and tears, and lots of money.
As I continue working on phase 2, I'll come back to this post later and update some of the risk management stuff.
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
The following 5 users say Thank You to caprica for this post:
they are not available so there is no "name" or something for the indicators. they just look to identify trending and non-trending zones and identify strength of individual pushes of the market.
entry is straight forward: is market trending? is there a pullback with strength? take entry once comes out of pullback.
Target is to be right 60% + of the time and for the average win loss ratio to be 1.5 or better. stop is usually 8 ticks with targets from 6 to 30 ticks (scale out).
sorry forgot to answer second part. exiting trade is using same indicators. since i use mtf i have wide variety of tools because what will move a small volume chart quickly wont move a large range chart so i can avoid fakeouts and whipsaws.
The following user says Thank You to caprica for this post:
Thanks for the post and ideas. It's been a long day and I think I re-read your OP at least 3 times but I'm still a bit confused with regards to the trailing stops. Using your example, if you see 4 ticks profit - you move the stop to entry minus 4 ticks. And if you see another 2 ticks, you move the stop to entry minus 6 ticks (4 + 2). So the trailing stops are actually getting wider as the trade moves in your direction?
Hi, sorry that was poor wording probably. What I mean to say is each stop weight is cumulative, there is no going backwards. Each time the stop is moved it is always tighter inward. For purpose of optimizer a weighted stop where each level adds the prior levels is much preferred, that was the point I was trying to make so people writing MM strategies can benefit from my experience in this area.
Snippet below.
The stops are set using CalculationMode.Price to get around some NT bugs. That is why the * TickSize is in there.
Have traded everything more or less. Focused mainly on ES, FESX, FDAX, CL and ZN.
I've provided as much info as I can stand to type (so far) about my system. The system is all about money management. No fancy indicator screen shot is going to tell you anything.
The following 2 users say Thank You to caprica for this post:
I have tried excluding certain time periods, like the open, or news, etc and found results were not improved. It takes fewer trades and makes less money, that is expected. But what I mean is the win percentage or draw down were not any lower. There was not any perceived reduced risk which was surprising but nonetheless I run them from early morning (5am or so) to middle of afternoon. I have some that stop at lunch but there was no major reason backtesting wise, it was a personal preference of not wanting to trade the whole day.
The following user says Thank You to caprica for this post:
Thank you for your question. It is not complicated anymore after I wrote the initial function. The purpose was to produce something similar to a trailing stop, but SetTrailStop() has many problems in Ninja like many things do and I wanted greater control of when to adjust the stops a fixed stop increment is too restrictive.
I'll give chasing targets some more thought but I prefer setting targets based on factual historical data. There is a good thread about something similar here:
I am still fairly new to the CL, but like what I see as compared with the ES and ZN, and thus have been focusing much of my attention on this instrument for the last couple of weeks.
Something I started doing (which was long overdue) …
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
The following user says Thank You to caprica for this post:
You might want to check out the sample on NT forums of how to manually do a trailing stop rather than use SetTrailStop(). You can modify it slightly to use TrailThreshold, TrailStep and TrailFrequency like the NT ATM system.
The benefit is that you only have 3 parameters to optimize instead of 9, and you can also implement techniques like chasing target which is where price can move through the target and the target chases it upwards until there is a downtick (or vice versa).
I make quite a lot of pips chasing volatile thrusts, compensates for the slippage incurred when you are on the wrong side of the thrust
I don't visit that forum I can't stand it. You can post the content here if you wish or nevermind about it as my method works fine and is very simple and I would imagine much more powerful.
No real savings in optimization job using a GO. The one piersh posted I can optimize billions of combinations in about 10 minutes to the first 5 or 6 generations which is usually plenty.
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
Actually reducing parameter count is hugely beneficial for GO because of their tendency to get stuck in a local minimum. In other words, GO algorithms often trade accuracy for speed and in general more parameters means less accuracy, less chance of finding the optimal solution.
That said, it sounds like your current solution is working well for you so no sense in fixing what isn't broken
something to consider. I have been playing with some of my own weighted optimizer types to encourage certain behavior out of the GO and it is working well for me.
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
Intrigued by the weighted stops idea - never thought of that before. Will have to investigate further. My "problem" with scaling out is the huge drop off in expectancy at the 'cost' of an improved win percentage. I have never quite come to terms with the mix on this - would be interested in your views.
It depends on your strategy, it has to be designed for high win%. Generally that means you need to be more selective about your entries and you need to use loose initial stops with tight breakeven conditions and trailing stops.
If you take a normal strategy and just tighten the stops you are going to lose a lot of money. If you pick bad entries with the conditions I described above (loose stops, tight breakeven and trail) you will lose alot of money even though you may have very high win%.
It is a delicate balance.. but if you can achieve consistent high win% in real trading with such a strategy, then you can have much greater than linear profit curve due to effects of position sizing.
I gave an overview of my MM system which works in this way on the 'More contracts == less risk' thread
The following user says Thank You to sefstrat for this post:
Thanks and I took a look at your more contracts == less risk. The concept is appealing
I see that you are looking for high probability entries for a mfe of 8 ticks (or points?)
Edit - apologies I mixed up your post and Hondo69.
I'm with you on this one. I'm not a mathematician, but I do believe Dr. Tharp says (Trade Your Way To Financial Freedom) its a no-no, and the Turtles would scale in, but they would close "all positions" on an exit signal. Just my 2 cents...
The following user says Thank You to Jugador for this post:
No, sorry I mentioned this in the thread but I probably should have emphasized it more:
my MM system consists of 3 order classes (cost covering, scalp, swing), the screenshot I posted was taken while running tests/optimization on just the cost covering and scalp orders without the swing orders (or runners) which account for the bulk of the profit.
I only posted the screenshot like that to show that it is possible to get very high 90's win% scalping if you are careful about how you take entries and use good MM. That said, it is a viable strategy and it does work in live trading with just the cost/scalp orders but it would not very efficient in terms of commission.
If you look at the shot of the entries you can see it would not be a very good strategy if it closed all the positions after selling near the peaks.. The reason for having the scalp and cost covering orders is because the swing order has much looser stops and is allowed to dip into the red somewhat even after it has been in profit.. whereas the other orders have very tight breakeven and trail stop with small targets to assure they get hit.. they are essentially a safety net that collects some amount of ticks asap to mitigate the risk of the swing orders getting stopped out.
Of course, as caprica pointed out.. the initial risk is higher since you have to consider the chance of cost covering and scalp orders getting stopped out too should they not hit their target/breakeven. That is why I put emphasis on only taking high probability entries and using loose initial stops that are unlikely to be hit. That way once you have made some profit on them, you have a 'no-risk' buffer for the remaining orders and you can just let them run with a loose trail stop or a breakeven and target or whatever.
In this way you can capture big market moves with large position sizes and minimal risk, assuming you have good entry conditions that you know will generate enough ticks for the cost/scalp orders every time (ie ones that you have extensively tested). Once you have made a small profit on them, you move the breakeven point on the other orders and then you essentially have a 'risk free' shot to let them run for a much bigger target. If things go against you and it hits the breakeven point, you may lose a bit do to slippage or you may break even or make a few ticks.. but either way you will not have lost much if anything so you can just wait and try again until you catch a big move.
This is the essence of what Joe Ross calls the 'Traders Trick entry'. I enhanced his system by adding the scalping orders which allow me to make money in most cases even if all the other orders hit breakeven with minimal slippage, Ross only uses cost covering orders.
The following 3 users say Thank You to sefstrat for this post:
Isn't this a contradiction - a high probability entry wouldn't need a loose stop?? Or are you saying you have different stops from the outset for the scalp/cost cover trades vs the swing trades.
The key question is if you cover costs - eg 3 ticks - what is the initial risk you take with that size. If you took say 9 ticks then you require a 67% win rate just to break even? And then lets talk slippage and commission. Evens lets say 75%. Now if you have 90% win then that is a good thing and it allows you to take the lower % win rate on the swing trades which is where you will make your money.
I ask not to criticise but to make sure you have covered everything before you trade live - as you indicate you have no trading experience.
Not necessarily, you can have an entry with low probability of extended movement in one direction and very high probability of extended movement in the other direction, yet there may be some final divergence thrust or stop hunt which is unpredictable. That I would consider a high probability entry situation, it has to do with knowing where the true bias in expectation lies, irrespective of any 'noise' which may occur in the mean time. By having initial stops that are wider than most other traders I do not fall victim to the psychological traps of the operators, who prey on noise traders.
I am going to make another post on the 'more contracts == less risk' thread explaining this in a bit more detail
Also BTW I have been trading this system live for about 6 months now, win% is not as high as what you see in backtesting but it is above 90% on most instruments. (I trade the same strategy on multiple currencies simultaneously, which is another reason I am so concerned about controlling risk and limiting market exposure.)
The following user says Thank You to sefstrat for this post:
Thanks, really appreciate the spread sheet, it was actually the second thread that popped up and so far is looks like is will be more worth then hours spent on other sites.
Still have alot of issues before i can apply it but my goal is to get some numbers in there ASAP