1. updated to include optional early buy/sell signal crosses
2. updated to automatically vary sensitivity based on cycle lengths.
3. updated to be more accurate and signal earlier.
4. updated to allow input price to be smoothed before algorithmic manipulation, (or after)