@netarchitech The SMI DSS EUO works great...Perhaps an updated code would be needed to the original thread about this indicator.
I do have some new requests now that this indicator that is perfected and finished.
1st request: I was thinking about a slim ribbon type indicator but with the smoothing lines that are found in the PercentR_MAC...I think that would be really cool IF there was an indicator that could smooth out especially the Simple or Exponential moving averages. I would say no more than 3 lengths allowing the user to chose what periods and colors or types of moving averages they want as well as having the smoothing option ON or OFF. That would also save some space in the upper study by combining 3 moving averages into one study. You have the codes already so perhaps this will not be a hard one to do.
2nd request might require some team work...but should also be doable...I hope. I would like to enhance the True Momentum Oscillator code below with the following criteria: As per Mobius suggestions...TMO works best IF it is combined with a secondary TMO indicator with an aggregation of 5-10 times the trading chart timeframe either overlaying it on top of each other OR simply a second instance of the indicator.
In order to save space and to make TMO look like it has more finesse is there a way to do something like the CSA study that we did where the second instance of TMO indicator is represented as dots UNDER the 1st TMO indicator...please refer to the pic #1.
Pic #1
As compared to this...
IF this request will be too much of a PITA in combining two TMO indicators into one...then what could be done is just convert TMO into the dots and make it a stand alone indicator that could go under the first TMO instance...I don't think the zero line will be necessary or the 10 OB or -10 OS lines...just two colored dots...BUT please allow the user to change colors just in case they want to on the dots...
TMO code with Fisher Transform and time aggregation:
#TMO True Momentum Oscillator with Higher Aggregation _Mobius
#Tuesday, May 15, 2018 12:36 PM
## OneNote Archive Name: TMO True Momentum Oscillator with Higher Aggregation _Mobius
## Archive Section: Momentum
## Suggested Tos Name: TrueMomentumOscillator_w_HigherAggregation_Mobius
## Archive Date: 5.15.2018
## Archive Notes:
## 08:43 Mobius: Well give it a few days to get altered, munched, distorted and twisted. Then when it get back to being used as intended someone will start making money with it.
## 08:45 Mobius: Oh and in my view - It's highest and best use is as designed with a secondary aggregation plotted either on it or with it around 5 to 10 time higher.
## "##" indicates an addition or adjustment by the OneNote Archivist
## Original Code Follows
# TMO ((T)rue (M)omentum (O)scillator) With Higher Aggregation
# Mobius
# V01.05.2018
#hint: TMO calculates momentum using the delta of price. Giving a much better picture of trend, tend reversals and divergence than momentum oscillators using price.
declare Lower;
input length = 14;
input calcLength = 5;
input smoothLength = 3;
input agg = AggregationPeriod.weeK;
input displayFisherLabels = no;
def o = open(period = agg);
def c = close(period = agg);
def data = fold i = 0 to length
with s
do s + (if c > getValue(o, i)
then 1
else if c < getValue(o, i)
then - 1
else 0);
def EMA5 = ExpAverage(data, calcLength);
plot Main = ExpAverage(EMA5, smoothLength);
plot Signal = ExpAverage(Main, smoothLength);
Main.AssignValueColor(if Main > Signal
then color.green
else color.Red);
Signal.AssignValueColor(if Main > Signal
then color.green
else color.red);
Signal.HideBubble();
Signal.HideTitle();
addCloud(Main, Signal, Color.LIGHT_GREEN, color.red);
plot zero = if isNaN(c) then double.nan else 0;
zero.SetDefaultColor(Color.gray);
zero.hideBubble();
zero.hideTitle();
plot ob = if isNaN(c) then double.nan else round(length * .8);
ob.SetDefaultColor(Color.gray);
ob.HideBubble();
ob.HideTitle();
plot os = if isNaN(c) then double.nan else -round(length * .8);
os.SetDefaultColor(Color.gray);
os.HideBubble();
os.HideTitle();
addCloud(ob, length, Color.LIGHT_RED, Color.LIGHT_RED, Yes);
addCloud(-length, os, Color.GREEN, Color.GREEN, showBorder = Yes);
# End Code TMO with Higher Aggregation
# JQ_FisherTransform_wLabels v02
# assistance provided by AlphaInvestor, amalia, randyr and nube
# v02 9.23.2018 JQ added arrows
input Fisherprice = hl2;
input FisherLength = 10;
input TriggerLineOffset = 1; # Ehler's value of choice is 1
input TriggerLine_Color_Choice = {"magenta", "cyan", "pink", default "gray", "Mustard", "red", "green", "dark_gray", "Pale Yellow", "white"};
input deBug = no;
input BuyLabelText = " FisherTransform Buy ";
input SellLebelText = " FisherTransform Sell ";
def maxHigh = Highest(Fisherprice, FisherLength);
def minLow = Lowest(Fisherprice, FisherLength);
def range = maxHigh - minLow;
def value = if IsNaN(Fisherprice)
then Double.NaN
else if IsNaN(range)
then value[1]
else if range == 0
then 0
else 0.66 * ((Fisherprice - minLow) / range - 0.5) + 0.67 * value[1];
def truncValue = if value > 0.99 then 0.999 else if value < -0.99 then -0.999 else value;
def fish = 0.5 * (Log((1 + truncValue) / (1 - truncValue)) + fish[1]);
def FTOneBarBack = fish[TriggerLineOffset];
def FT = fish;
plot FisherBullCross = if FT crosses above FTOneBarBack then lowestall(Main) else Double.NaN;
FisherBullCross.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
FisherBullCross.SetDefaultColor(Color.UPTICK);
plot FisherBearCross = if FT crosses below FTOneBarBack then highestall(Main) else Double.NaN;
FisherBearCross.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
FisherBearCross.SetDefaultColor(Color.DOWNTICK);
AddLabel (displayFisherLabels, "" + if FT >= FTOneBarBack then BuyLabelText else SellLebelText + " ",
(if FT > FTOneBarBack
then Color.LIGHT_GREEN
else if FT < FTOneBarBack
then Color.LIGHT_RED
else Color.GRAY));
# End Fisher Transform Code