WaveTrend Oscillator with Signals Indicator for ThinkorSwim

germanburrito

Active member
barbaros i will when is finished and completed, i still working on it.
wow thank you for putting in all this work, i seen you actually took the time to code the cypher script, you should do this more often. cant wait to see the finish product.
 

germanburrito

Active member
It changes when I scroll the chart back and forth, prices that were below ,become above the indicator and vice versa
yeah possibly some versions of it might because i seen we are using the average but i dont believe this one does https://tos.mx/4ZOTEp6, check it out you might know better than me but i have been scrolling and i havent had that issue, im not sure.
 

BenTen

Administrative
Staff
VIP
@Piper2808t Here is the MTF version you requested:

Code:
# WT_LB Short Name TV
# Modidied into an MTF version by BenTen at UseThinkScript.com

declare lower;
input aggregationPeriod = AggregationPeriod.DAY;
def close = close (period = aggregationPeriod);
def high = high(period = aggregationPeriod);
def low = low(period = aggregationPeriod);
input Channel_Length = 10; #10
input Average_Length = 21; #10
input over_bought_1 = 60;
input over_bought_2 = 53;
input over_sold_1 = -60;
input over_sold_2 = -53;
input show_bubbles = yes;
input show_sec_bbls = no;
input show_alerts = yes;
def ap = (High + Low + Close) / 3;
def esa = ExpAverage(ap, Channel_Length);
def d = ExpAverage(AbsValue(ap - esa), Channel_Length);
def ci = (ap - esa) / (0.015 * d);
def tci = ExpAverage(ci, Average_Length);
def wt1 = tci;
def wt2 = SimpleMovingAvg(wt1, 4);
#def zero = 0;
plot zero = 0;
zero.SetDefaultColor( Color.GRAY );
plot obLevel1 = over_bought_1;
obLevel1.SetDefaultColor(Color.RED);
plot osLevel1 = over_sold_1;
osLevel1.SetDefaultColor(Color.GREEN);
plot  obLevel2 = over_bought_2;
obLevel2.SetDefaultColor(Color.RED);
obLevel2.SetStyle(Curve.SHORT_DASH);
plot  osLevel2 = over_sold_2;
osLevel2.SetDefaultColor(Color.GREEN);
osLevel2.SetStyle(Curve.SHORT_DASH);

plot wt1_1 = wt1;
wt1_1.SetDefaultColor(Color.GREEN);
plot wt2_1 = wt2;
wt2_1.SetDefaultColor(Color.RED);
wt2_1.SetStyle(Curve.POINTS);
plot wt3 = (wt1 - wt2);
wt3.SetDefaultColor(Color.BLUE);
wt3.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
def signal1 = wt1 crosses above wt2 and wt1 < over_sold_2;
plot Signal = if signal1  then (signal1 * over_sold_2) else Double.NaN;
Signal.SetDefaultColor(Color.GREEN);
Signal.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
Signal.SetLineWeight(3);
Signal.HideTitle();
def signal2 = wt1 crosses below wt2 and wt1 > over_bought_2;
plot Signal2_ = if signal2  then (signal2 * over_bought_2) else Double.NaN;
Signal2_.SetDefaultColor(Color.RED);
Signal2_.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
Signal2_.SetLineWeight(3);
Signal2_.HideTitle();
 

ala

New member
Here my MTF version with the blue wave+deviation lines...

Code:
# WT_LB Short Name TV
#deviation_blue_wave
#MTF

declare lower;
input aggregationPeriod = AggregationPeriod.DAY;
def close = close (period = aggregationPeriod);
def high = high(period = aggregationPeriod);
def low = low(period = aggregationPeriod);

input Channel_Length = 10; #10
input Average_Length = 21; #10
input over_bought_1 = 60;
input over_bought_2 = 53;
input over_sold_1 = -60;
input over_sold_2 = -53;
input show_bubbles = yes;
input show_sec_bbls = no;
input show_alerts = yes;
def ap = (High + Low + Close) / 3;
def esa = ExpAverage(ap, Channel_Length);
def d = ExpAverage(AbsValue(ap - esa), Channel_Length);
def ci = (ap - esa) / (0.015 * d);
def tci = ExpAverage(ci, Average_Length);
def wt1 = tci;
def wt2 = SimpleMovingAvg(wt1, 3);
#def zero = 0;

def wt1_1 = wt1;
#wt1_1.SetDefaultColor(Color.GREEN);
def wt2_1 = wt2;
#wt2_1.SetDefaultColor(Color.RED);
#wt2_1.SetStyle(Curve.POINTS);
#plot wt3 = (wt1 - wt2);
#wt3.SetDefaultColor(Color.YELLOW);
#wt3.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
#addcloud(wt3, 0, color.yellow);

#........................................


plot mean = inertiaAll((wt1+wt2)/2);
mean.setDefaultColor(color.cyan);

def dev1 = (stdevAll(wt1)+stdevAll(wt2))/2;

plot up = wt1_1+ dev1*2;
plot down = wt1_1- dev1*2;

plot avg2 =(up-down/up+down)-mean;
avg2.setDefaultColor(createcolor(250,10,10));
avg2.setDefaultColor(COLOR.PINK);

plot avg3 = 1.0* (up+down/up+down)-dev1;
avg3.setDefaultColor(color.white);


up.SetDefaultColor(Color.GREEN);
up.SetLineWeight(2);
down.SetDefaultColor(Color.RED);
down.SetLineWeight(2);




AddCloud(0, tci[0], createcolor(20,170,240), createcolor(20,170,240));
AddCloud(0, tci[0], createcolor(20,170,240), createcolor(20,170,240));

AddCloud(0, tci[0], createcolor(20,170,240), createcolor(20,170,240));
AddCloud(0, tci[0], createcolor(20,170,240), createcolor(20,170,240));

AddCloud(WT1, WT2, Color.white, Color.RED);
AddCloud(WT1, WT2, Color.white, Color.RED);

AddCloud(wt1, 0, CreateColor(40, 82, 248), CreateColor(30, 82, 248));
AddCloud(wt1, 0, CreateColor(40, 82, 248), CreateColor(30, 82, 248));

def W1 = if wt1 < wt2 then wt2 else wt1;
def W2 = if wt1 > wt2 then wt2 else wt2;
AddCloud(W1, W2, Color.WHITE, Color.WHITE);
AddCloud(W1, W2, Color.WHITE, Color.WHITE);
AddCloud(W1, W2, Color.WHITE, Color.WHITE);
AddCloud(W1, W2, Color.WHITE, Color.WHITE);

#END
 

germanburrito

Active member
I really like this indicator, here is another fun take on it, this is the wavetrend indicator with a donchian, donchian channels are usually calculated over 21 periods however I notice that a 34 period could give you better "safer" signals, although 21 period works just fine, I use it to confirm a continuation of direction.



Code:
#WT_LB Short Name TV
declare lower;
input Channel_Length = 10; #10
input Average_Length = 21; #10
input over_bought_1 = 60;
input over_bought_2 = 53;
input over_sold_1 = -60;
input over_sold_2 = -53;
input show_bubbles = yes;
input show_sec_bbls = no;
input show_alerts = yes;
def ap = hlc3;
def esa = ExpAverage(ap, Channel_Length);
def d = ExpAverage(AbsValue(ap - esa), Channel_Length);
def ci = (ap - esa) / (0.015 * d);
def tci = ExpAverage(ci, Average_Length);
def wt1 = tci;
def wt2 = SimpleMovingAvg(wt1, 4);
def zero = 0;

plot obLevel1 = over_bought_1;
obLevel1.SetDefaultColor(Color.RED);
plot osLevel1 = over_sold_1;
osLevel1.SetDefaultColor(Color.GREEN);
plot  obLevel2 = over_bought_2;
obLevel2.SetDefaultColor(Color.RED);
obLevel2.SetStyle(Curve.SHORT_DASH);
plot  osLevel2 = over_sold_2;
osLevel2.SetDefaultColor(Color.GREEN);
osLevel2.SetStyle(Curve.SHORT_DASH);

plot wt1_1 = wt1;
wt1_1.SetDefaultColor(Color.GREEN);
plot wt2_1 = wt2;
wt2_1.SetDefaultColor(Color.RED);
wt2_1.SetStyle(Curve.POINTS);
def signal1 = wt1 crosses above wt2 and wt1 < over_sold_2;
plot Signal = if signal1  then (signal1 * over_sold_2) else Double.NaN;
Signal.SetDefaultColor(Color.GREEN);
Signal.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
Signal.SetLineWeight(3);
Signal.HideTitle();
def signal2 = wt1 crosses below wt2 and wt1 > over_bought_2;
plot Signal2_ = if signal2  then (signal2 * over_bought_2) else Double.NaN;
Signal2_.SetDefaultColor(Color.RED);
Signal2_.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
Signal2_.SetLineWeight(3);
Signal2_.HideTitle();



#Name:             DonchianChannel
#Programmed By:    Chris Ball ([email protected]) on 10/23/08
#Posted At:        http://chartingwithchris.blogspot.com
#Description:      This is a channel system that is used frequently for trend trading.  Google the term "turtle trader" for more information.
#Modified 2020-06-10 by rad14733 to utilize AddCloud()

input length_donchian = 34;

plot upperBand = Highest(wt1_1[1], length_donchian);
plot lowerBand = Lowest(wt1_1[1],  length_donchian);
plot middleBand = (upperBand + lowerBand) / 2;

upperBand.SetDefaultColor(Color.DARK_GRAY);
lowerBand.SetDefaultColor(Color.DARK_GRAY);
middleBand.SetDefaultColor(Color.Orange);

AddCloud(upperBand, lowerBand, Color.DARK_GRAY, Color.WHITE);
 

Similar threads

Top