The strategy is based on idea that any indicator can be turned into a signal-producing trade system through smoothing and other filtering processes.
In fact, I'm using his ( ) as a baseline indicator as well as some code snippets he has made public (1). God bless open source!
Next, I've provided the option to use an Instantaneous Frequency Measurement (IFM) method, which will adaptively choose the best period for the (2)
I've written other studies that use the differential calculus approximations for IFM, so it was only natural to include them in this strategy.
The primary two are Cosine IFM (3) and In-phase Quadrature IFM (4). You can also find an indicator with both plotted and the ability to average them together, as one IFM prefers long periods and the other short. (5)
BEFORE WE BEGIN
1. This strategy only runs on "normal" FX pairs ( EURUSD , GBPJPY , AUDUSD ...) and will fail on Metals or .
Cryptos are largely untested.
2. Please run it on these time frames: M15 to D.
Anything outside this range will likely fail.
HOW TO USE AND SUCCEED
1. If the Default settings don't produce good results right off the bat, then lower gain limit to 1 or 2 and threshold to 0. 01 .
2. Test each setting under adaptive method. If you want to leave it Off, then I'd recommend using some kind of IFM (see my links below) to
discover the most efficient period to use.
3. Once you have the best adaptive method chosen, begin incrementing gain limit until you find a nice balance between profit factor ( PF ) and drawdown.
4. Now, begin incrementing threshold. The goal is to have PF above 2 and a drawdown as low as possible.
5. Finally, change the source! Typically, close is the best option, but I have run into cases where high
yielded the highest returns and win rate.
6. Sit back, relax, and tweak the risk until you're happy with the return and drawdown amounts.
You may need to adjust take profit (TP) points and stop loss (SL) points to create the best entry possible. Don't be greedy! You'll likely have poor
results if the TP is set to 300 and SL is 50.
If you are trading a pair that has a long Dominant Cycle Period, then you may increase Max Period to allow the IFM
to accept longer periods. Any period above the Max Period will be rejected. This may increase lag time!
Cheers and good luck trading!
PS - This code doesn't repaint or have future-leak, which was present in Pinescript v2.
PPS - Believe me! These returns are typical! Sometimes you must push aside the "if it's too good to be true..." mindset that society has ingrained in you.
Do you really believe the most successful pass up opportunities before investigating them? ;)
(1)Ehlers & Ric
(2)Measuring Cycles by
(4)Inphase Quadrature IFM
-> You're able to set a custom # of contracts to trade if required.
-> Simply set the Security Type to Custom!
Better Default settings!
Please note, if SL Points is less than your slippage, trades will exit immediately.
I encourage you to make testing conditions realistic & make sure SL points is greater than slippage!
Many brokers set a hard limit at 100 Standard lots per trade for currency pairs and 30 standard lots for cryptocurrency pairs.
I don't want to sound like a lazy, ungrateful s***, but do you think you could throw up a study version of this script?
Again, amazing work man.
Second - An added alert using this strategy generates several alerts for each order. I can imagine why since the order is set on cossover and the intra-bar calculations could make a crossover more than once per bar. But how to make use of this in a correct way? Should you always place the order if you just recieve one alert? And since this script is using risk (great job on that aswell), how do I make sure not to make several "fake" orders within one bar? I have a setup to automate it but it behaves according to alerts. So it places an order of each alert - which could end up being very dangerous.
Also, my code is 100% farm-fresh, certified organic open source. This means you're free to run, modify, and test it yourself. If you have evidence of future-leak - please let me know and I'll fix the bug.