Trade Lines For ThinkOrSwim

mark.917

Member
VIP
Below you will find a study that will plot entry, target and stop loss lines or zones. The lines/zones will stop plotting when either the stop or target are hit. To use, you only need to replace the short sample code with your own that should set a buy or sell signal variable to true. You may turn the cloud feature off and just the lines will appear.

The code currently uses an ATR multiplier to determine the target and stop loss but it should be simple for you to modify this to use whatever you like.

The picture shows the results when using a moving average crossover for the buy and sell signals and the zones created showing entry to target and stop loss based on ATR multipliers of 3.0 for the target and 1.0 for the stop loss.

Shared study link: http://tos.mx/StIcExL

MP_917 Trade Lines
Code:
#
# Trade Lines
# v1.0 by @Mark.917
#

# Trade Lines will plot lines with and optional cloud showing where you entered your
# position and the location of your stop loss and profit target.
#
# To use, your code will need to set "your_buy_signal" or "your_sell_signal" to true.
# The profit target and stop loss are based on an ATR multplier.  You may modify this
# to be whatever you would like.

declare upper;

#######################
# YOUR CODE STARTS HERE
#######################

# sample using moving average crossover for signals

plot FastMA = MovingAverage(AverageType.EXPONENTIAL, close, 20);
plot SlowMA = MovingAverage(AverageType.EXPONENTIAL, close, 50);
FastMA.SetDefaultColor(GetColor(1));
SlowMA.SetDefaultColor(GetColor(2));

def buy_signal = FastMA crosses above SlowMA;
def sell_signal =  FastMA crosses below SlowMA;

###################
# BEGIN TRADE LINES
###################

input show_trade_zone = yes; #hint show_trade_zone: Adds a cloud in the profit and loss zones

input ATRTargetMultiple = 3.0;
input ATRStopMultiple = 1.0;

def atr = ATR(14, averageType.WILDERS);

def long_signal = if buy_signal then 1 else 0;
def long_target = if long_signal == 1 then atr * ATRTargetMultiple else long_target[1];
def long_stop = if long_signal == 1 then atr * ATRStopMultiple else long_stop[1];
def long_entry = if long_signal == 1 then open else if (high[1] > long_entry[1] + long_target or low[1] < long_entry[1] - long_stop) then Double.NaN else long_entry[1];
def long_exit = if long_entry > 0 then 0 else 1;

plot long_pt = if show_trade_zone and !long_exit then long_entry + long_target else Double.NaN;
long_pt.SetDefaultColor(Color.GREEN);
plot long_ep = if show_trade_zone and !long_exit then long_entry else Double.NaN;
long_ep.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
long_ep.SetPaintingStrategy(PaintingStrategy.DASHES);
long_ep.SetDefaultColor(Color.WHITE);
plot long_sl = if show_trade_zone and !long_exit then long_ep - long_stop else Double.NaN;
long_sl.SetDefaultColor(Color.RED);

AddCloud(if show_trade_zone then long_pt else Double.NaN, long_ep, Color.GREEN);
AddCloud(if show_trade_zone then long_sl else Double.NaN, long_ep, Color.RED);

def short_signal = if sell_signal then 1 else 0;
def short_target = if short_signal == 1 then atr * ATRTargetMultiple else short_target[1];
def short_stop = if short_signal == 1 then atr * ATRStopMultiple else short_stop[1];
def short_entry = if short_signal == 1 then open else if (low[1] < short_entry[1] - short_target or high[1] > short_entry[1] + short_stop) then Double.NaN else short_entry[1];
def short_exit = if short_entry > 0 then 0 else 1;

plot short_pt = if show_trade_zone and !short_exit then short_entry - short_target else Double.NaN;
short_pt.SetDefaultColor(Color.GREEN);
plot short_ep = if show_trade_zone and !short_exit then short_entry else Double.NaN;
short_ep.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
short_ep.SetPaintingStrategy(PaintingStrategy.DASHES);
short_ep.SetDefaultColor(Color.WHITE);
plot short_sl = if show_trade_zone and !short_exit then short_ep + short_stop else Double.NaN;
short_sl.SetDefaultColor(Color.RED);

AddCloud(if show_trade_zone then short_ep else Double.NaN, short_pt, Color.GREEN);
AddCloud(if show_trade_zone then short_sl else Double.NaN, short_ep, Color.RED);

#################
# END TRADE LINES
#################

TradeLines.jpg
 
Last edited:

Join useThinkScript to post your question to a community of 21,000+ developers and traders.

Thank you for this very useful script.

I primarily use daily and weekly charts. I have been trying to do something similar, but showing the "BUY Window" as a projection from the last candle (assuming a technical study was satisfied). As example, if the RSI(7) crosses above 50, I want to project a "Buy Window" at (low= close - 1%) to (high=close + 3%) for 7 bars into the future.
 
Not sure if I made it better or worse




Code:
#
# Trade Lines
# v1.0 by @Mark.917

#Remastered by Cwparker23 9/8/2023

# Trade Lines will plot lines with and optional cloud showing where you entered your
# position and the location of your stop loss and profit target.
#
# To use, your code will need to set "your_buy_signal" or "your_sell_signal" to true.
# The profit target and stop loss are based on an ATR multplier.  You may modify this
# to be whatever you would like.

declare upper;

#######################
# YOUR CODE STARTS HERE
#######################

# sample using moving average crossover for signals

input fastLength = 3;
input slowLength = 15;
input atrLength = 15;


plot FastMA = MovingAverage(AverageType.sIMPLE, close, fastLength);
plot SlowMA = MovingAverage(AverageType.sIMPLE, close, slowLength);
FastMA.SetDefaultColor(Color.blue);
SlowMA.SetDefaultColor(Color.red);

def buy_signal = FastMA crosses above SlowMA;
def sell_signal =  FastMA crosses below SlowMA;

###################
# BEGIN TRADE LINES
###################

input show_trade_zone_long = yes; #hint show_trade_zone: Adds a cloud in the profit and loss zones
input show_trade_zone_short = yes;


input ATRTargetMultiple = 2.0;
input ATRTargetMultiple2 = 5.0;
input ATRTargetMultiple3 = 8.0;

input ATRStopMultiple = 1.0;

def atr = ATR(atrLength, AverageType.sIMPLE);

def long_signal = if buy_signal then 1 else 0;
def long_target = if long_signal == 1 then atr * ATRTargetMultiple else long_target[1];
def long_target2 = if long_signal == 1 then atr * ATRTargetMultiple2 else long_target2[1];
def long_target3 = if long_signal == 1 then atr * ATRTargetMultiple3 else long_target3[1];


def long_stop = if long_signal == 1 then atr * ATRStopMultiple else long_stop[1];

def long_entry =
if long_signal == 1 then high[1] else
if ( close[1] < long_entry[1] - long_stop or fastMA crosses below slowMA ) then Double.NaN else
long_entry[1];

def long_exit = if long_entry > 0 then 0 else 1;

plot long_pt = if show_trade_zone_long and !long_exit then long_entry + long_target else Double.NaN;
long_pt.SetDefaultColor(Color.GREEN);
long_pt.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

plot long_pt2 = if show_trade_zone_long and !long_exit then long_entry + long_target2 else Double.NaN;
long_pt2.SetDefaultColor(Color.GREEN);
long_pt2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

plot long_pt3 = if show_trade_zone_long and !long_exit then long_entry + long_target3 else Double.NaN;
long_pt3.SetDefaultColor(Color.GREEN);
long_pt3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

plot long_ep = if show_trade_zone_long and !long_exit then long_entry else Double.NaN;
long_ep.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
long_ep.SetPaintingStrategy(PaintingStrategy.DASHES);
long_ep.SetDefaultColor(Color.WHITE);

plot long_sl = if show_trade_zone_long and !long_exit then long_ep - long_stop else Double.NaN;
long_sl.SetDefaultColor(Color.RED);
long_sl.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

AddCloud(if show_trade_zone_long then long_pt else Double.NaN, long_ep, Color.GREEN);
AddCloud(if show_trade_zone_long then long_pt2 else Double.NaN, long_pt, Color.GRay);
AddCloud(if show_trade_zone_long then long_pt3 else Double.NaN, long_pt2, Color.GRay);

AddCloud(if show_trade_zone_long then long_sl else Double.NaN, long_ep, Color.RED);

def short_signal = if sell_signal then 1 else 0;
def short_target = if short_signal == 1 then atr * ATRTargetMultiple else short_target[1];
def short_target2 = if short_signal == 1 then atr * ATRTargetMultiple2 else short_target2[1];
def short_target3= if short_signal == 1 then atr * ATRTargetMultiple3 else short_target3[1];

def short_stop = if short_signal == 1 then atr * ATRStopMultiple else short_stop[1];
def short_entry = if short_signal == 1 then low else if ( close[1] > short_entry[1] + short_stop or fastMA crosses above slowMA) then Double.NaN else short_entry[1];
def short_exit = if short_entry > 0 then 0 else 1;

plot short_pt = if show_trade_zone_short and !short_exit then short_entry - short_target else Double.NaN;
short_pt.SetDefaultColor(Color.GREEN);
plot short_pt2 = if show_trade_zone_short and !short_exit then short_entry - short_target2 else Double.NaN;
short_pt2.SetDefaultColor(Color.GREEN);
plot short_pt3 = if show_trade_zone_short and !short_exit then short_entry - short_target3 else Double.NaN;
short_pt3.SetDefaultColor(Color.GREEN);
short_pt.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
short_pt2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
short_pt3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);


plot short_ep = if show_trade_zone_short and !short_exit then short_entry else Double.NaN;
short_ep.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
short_ep.SetPaintingStrategy(PaintingStrategy.DASHES);
short_ep.SetDefaultColor(Color.WHITE);
plot short_sl = if show_trade_zone_short and !short_exit then short_ep + short_stop else Double.NaN;
short_sl.SetDefaultColor(Color.RED);
short_sl.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

AddCloud(if show_trade_zone_short then short_ep else Double.NaN, short_pt, Color.GREEN);
AddCloud(if show_trade_zone_short then short_pt else Double.NaN, short_pt2, Color.GRay);
AddCloud(if show_trade_zone_short then short_pt2 else Double.NaN, short_pt3, Color.GRay);
AddCloud(if show_trade_zone_short then short_sl else Double.NaN, short_ep, Color.RED);

#################
# END TRADE LINES
#################
2023-09-08-FLEXIBLE_GRIDns.png
Screenshot 2023-09-08 070822ns.png
 
Not sure if I made it better or worse




Code:
#
# Trade Lines
# v1.0 by @Mark.917

#Remastered by Cwparker23 9/8/2023

# Trade Lines will plot lines with and optional cloud showing where you entered your
# position and the location of your stop loss and profit target.
#
# To use, your code will need to set "your_buy_signal" or "your_sell_signal" to true.
# The profit target and stop loss are based on an ATR multplier.  You may modify this
# to be whatever you would like.

declare upper;

#######################
# YOUR CODE STARTS HERE
#######################

# sample using moving average crossover for signals

input fastLength = 3;
input slowLength = 15;
input atrLength = 15;


plot FastMA = MovingAverage(AverageType.sIMPLE, close, fastLength);
plot SlowMA = MovingAverage(AverageType.sIMPLE, close, slowLength);
FastMA.SetDefaultColor(Color.blue);
SlowMA.SetDefaultColor(Color.red);

def buy_signal = FastMA crosses above SlowMA;
def sell_signal =  FastMA crosses below SlowMA;

###################
# BEGIN TRADE LINES
###################

input show_trade_zone_long = yes; #hint show_trade_zone: Adds a cloud in the profit and loss zones
input show_trade_zone_short = yes;


input ATRTargetMultiple = 2.0;
input ATRTargetMultiple2 = 5.0;
input ATRTargetMultiple3 = 8.0;

input ATRStopMultiple = 1.0;

def atr = ATR(atrLength, AverageType.sIMPLE);

def long_signal = if buy_signal then 1 else 0;
def long_target = if long_signal == 1 then atr * ATRTargetMultiple else long_target[1];
def long_target2 = if long_signal == 1 then atr * ATRTargetMultiple2 else long_target2[1];
def long_target3 = if long_signal == 1 then atr * ATRTargetMultiple3 else long_target3[1];


def long_stop = if long_signal == 1 then atr * ATRStopMultiple else long_stop[1];

def long_entry =
if long_signal == 1 then high[1] else
if ( close[1] < long_entry[1] - long_stop or fastMA crosses below slowMA ) then Double.NaN else
long_entry[1];

def long_exit = if long_entry > 0 then 0 else 1;

plot long_pt = if show_trade_zone_long and !long_exit then long_entry + long_target else Double.NaN;
long_pt.SetDefaultColor(Color.GREEN);
long_pt.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

plot long_pt2 = if show_trade_zone_long and !long_exit then long_entry + long_target2 else Double.NaN;
long_pt2.SetDefaultColor(Color.GREEN);
long_pt2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

plot long_pt3 = if show_trade_zone_long and !long_exit then long_entry + long_target3 else Double.NaN;
long_pt3.SetDefaultColor(Color.GREEN);
long_pt3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

plot long_ep = if show_trade_zone_long and !long_exit then long_entry else Double.NaN;
long_ep.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
long_ep.SetPaintingStrategy(PaintingStrategy.DASHES);
long_ep.SetDefaultColor(Color.WHITE);

plot long_sl = if show_trade_zone_long and !long_exit then long_ep - long_stop else Double.NaN;
long_sl.SetDefaultColor(Color.RED);
long_sl.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

AddCloud(if show_trade_zone_long then long_pt else Double.NaN, long_ep, Color.GREEN);
AddCloud(if show_trade_zone_long then long_pt2 else Double.NaN, long_pt, Color.GRay);
AddCloud(if show_trade_zone_long then long_pt3 else Double.NaN, long_pt2, Color.GRay);

AddCloud(if show_trade_zone_long then long_sl else Double.NaN, long_ep, Color.RED);

def short_signal = if sell_signal then 1 else 0;
def short_target = if short_signal == 1 then atr * ATRTargetMultiple else short_target[1];
def short_target2 = if short_signal == 1 then atr * ATRTargetMultiple2 else short_target2[1];
def short_target3= if short_signal == 1 then atr * ATRTargetMultiple3 else short_target3[1];

def short_stop = if short_signal == 1 then atr * ATRStopMultiple else short_stop[1];
def short_entry = if short_signal == 1 then low else if ( close[1] > short_entry[1] + short_stop or fastMA crosses above slowMA) then Double.NaN else short_entry[1];
def short_exit = if short_entry > 0 then 0 else 1;

plot short_pt = if show_trade_zone_short and !short_exit then short_entry - short_target else Double.NaN;
short_pt.SetDefaultColor(Color.GREEN);
plot short_pt2 = if show_trade_zone_short and !short_exit then short_entry - short_target2 else Double.NaN;
short_pt2.SetDefaultColor(Color.GREEN);
plot short_pt3 = if show_trade_zone_short and !short_exit then short_entry - short_target3 else Double.NaN;
short_pt3.SetDefaultColor(Color.GREEN);
short_pt.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
short_pt2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
short_pt3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);


plot short_ep = if show_trade_zone_short and !short_exit then short_entry else Double.NaN;
short_ep.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
short_ep.SetPaintingStrategy(PaintingStrategy.DASHES);
short_ep.SetDefaultColor(Color.WHITE);
plot short_sl = if show_trade_zone_short and !short_exit then short_ep + short_stop else Double.NaN;
short_sl.SetDefaultColor(Color.RED);
short_sl.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

AddCloud(if show_trade_zone_short then short_ep else Double.NaN, short_pt, Color.GREEN);
AddCloud(if show_trade_zone_short then short_pt else Double.NaN, short_pt2, Color.GRay);
AddCloud(if show_trade_zone_short then short_pt2 else Double.NaN, short_pt3, Color.GRay);
AddCloud(if show_trade_zone_short then short_sl else Double.NaN, short_ep, Color.RED);

#################
# END TRADE LINES
#################
View attachment 19673View attachment 19674
Nice job! Only thing I would do is have it stop drawing once the top or bottom of the range gets penetrated.
 
Sorry, I did not communicate my concept clearly.

Assuming that a technical signal is true at the hard right edge, I want to project A "Buy window" into the future. The current projection is all that is needed. I hacked together a concept image. I tried to show a window projection based on an RSI(7) crossing above 50, with a "Buy Window" projected at (low= close - 1%) to (high=close + 3%) for 7 bars into the future. (please ignore the light green line shown in the projection - bad photoshop job). It just isn't clear how to draw something beyond the hard right edge. Thanks.
Example.jpg
 
Not sure if I made it better or worse




Code:
#
# Trade Lines
# v1.0 by @Mark.917

#Remastered by Cwparker23 9/8/2023

# Trade Lines will plot lines with and optional cloud showing where you entered your
# position and the location of your stop loss and profit target.
#
# To use, your code will need to set "your_buy_signal" or "your_sell_signal" to true.
# The profit target and stop loss are based on an ATR multplier.  You may modify this
# to be whatever you would like.

declare upper;

#######################
# YOUR CODE STARTS HERE
#######################

# sample using moving average crossover for signals

input fastLength = 3;
input slowLength = 15;
input atrLength = 15;


plot FastMA = MovingAverage(AverageType.sIMPLE, close, fastLength);
plot SlowMA = MovingAverage(AverageType.sIMPLE, close, slowLength);
FastMA.SetDefaultColor(Color.blue);
SlowMA.SetDefaultColor(Color.red);

def buy_signal = FastMA crosses above SlowMA;
def sell_signal =  FastMA crosses below SlowMA;

###################
# BEGIN TRADE LINES
###################

input show_trade_zone_long = yes; #hint show_trade_zone: Adds a cloud in the profit and loss zones
input show_trade_zone_short = yes;


input ATRTargetMultiple = 2.0;
input ATRTargetMultiple2 = 5.0;
input ATRTargetMultiple3 = 8.0;

input ATRStopMultiple = 1.0;

def atr = ATR(atrLength, AverageType.sIMPLE);

def long_signal = if buy_signal then 1 else 0;
def long_target = if long_signal == 1 then atr * ATRTargetMultiple else long_target[1];
def long_target2 = if long_signal == 1 then atr * ATRTargetMultiple2 else long_target2[1];
def long_target3 = if long_signal == 1 then atr * ATRTargetMultiple3 else long_target3[1];


def long_stop = if long_signal == 1 then atr * ATRStopMultiple else long_stop[1];

def long_entry =
if long_signal == 1 then high[1] else
if ( close[1] < long_entry[1] - long_stop or fastMA crosses below slowMA ) then Double.NaN else
long_entry[1];

def long_exit = if long_entry > 0 then 0 else 1;

plot long_pt = if show_trade_zone_long and !long_exit then long_entry + long_target else Double.NaN;
long_pt.SetDefaultColor(Color.GREEN);
long_pt.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

plot long_pt2 = if show_trade_zone_long and !long_exit then long_entry + long_target2 else Double.NaN;
long_pt2.SetDefaultColor(Color.GREEN);
long_pt2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

plot long_pt3 = if show_trade_zone_long and !long_exit then long_entry + long_target3 else Double.NaN;
long_pt3.SetDefaultColor(Color.GREEN);
long_pt3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

plot long_ep = if show_trade_zone_long and !long_exit then long_entry else Double.NaN;
long_ep.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
long_ep.SetPaintingStrategy(PaintingStrategy.DASHES);
long_ep.SetDefaultColor(Color.WHITE);

plot long_sl = if show_trade_zone_long and !long_exit then long_ep - long_stop else Double.NaN;
long_sl.SetDefaultColor(Color.RED);
long_sl.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

AddCloud(if show_trade_zone_long then long_pt else Double.NaN, long_ep, Color.GREEN);
AddCloud(if show_trade_zone_long then long_pt2 else Double.NaN, long_pt, Color.GRay);
AddCloud(if show_trade_zone_long then long_pt3 else Double.NaN, long_pt2, Color.GRay);

AddCloud(if show_trade_zone_long then long_sl else Double.NaN, long_ep, Color.RED);

def short_signal = if sell_signal then 1 else 0;
def short_target = if short_signal == 1 then atr * ATRTargetMultiple else short_target[1];
def short_target2 = if short_signal == 1 then atr * ATRTargetMultiple2 else short_target2[1];
def short_target3= if short_signal == 1 then atr * ATRTargetMultiple3 else short_target3[1];

def short_stop = if short_signal == 1 then atr * ATRStopMultiple else short_stop[1];
def short_entry = if short_signal == 1 then low else if ( close[1] > short_entry[1] + short_stop or fastMA crosses above slowMA) then Double.NaN else short_entry[1];
def short_exit = if short_entry > 0 then 0 else 1;

plot short_pt = if show_trade_zone_short and !short_exit then short_entry - short_target else Double.NaN;
short_pt.SetDefaultColor(Color.GREEN);
plot short_pt2 = if show_trade_zone_short and !short_exit then short_entry - short_target2 else Double.NaN;
short_pt2.SetDefaultColor(Color.GREEN);
plot short_pt3 = if show_trade_zone_short and !short_exit then short_entry - short_target3 else Double.NaN;
short_pt3.SetDefaultColor(Color.GREEN);
short_pt.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
short_pt2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
short_pt3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);


plot short_ep = if show_trade_zone_short and !short_exit then short_entry else Double.NaN;
short_ep.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
short_ep.SetPaintingStrategy(PaintingStrategy.DASHES);
short_ep.SetDefaultColor(Color.WHITE);
plot short_sl = if show_trade_zone_short and !short_exit then short_ep + short_stop else Double.NaN;
short_sl.SetDefaultColor(Color.RED);
short_sl.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

AddCloud(if show_trade_zone_short then short_ep else Double.NaN, short_pt, Color.GREEN);
AddCloud(if show_trade_zone_short then short_pt else Double.NaN, short_pt2, Color.GRay);
AddCloud(if show_trade_zone_short then short_pt2 else Double.NaN, short_pt3, Color.GRay);
AddCloud(if show_trade_zone_short then short_sl else Double.NaN, short_ep, Color.RED);

#################
# END TRADE LINES
#################
View attachment 19673View attachment 19674
I believe the only issue that you may have created is that the Trade Line code now specifically references the MA strategy. I tried testing the SuperTrend code as my code and there were errors due to these lines:

def long_entry =
if long_signal == 1 then high[1] else
if ( close[1] < long_entry[1] - long_stop or fastMA crosses below slowMA ) then Double.NaN else
long_entry[1];

def short_stop = if short_signal == 1 then atr * ATRStopMultiple else short_stop[1];
def short_entry = if short_signal == 1 then low else if ( close[1] > short_entry[1] + short_stop or fastMA crosses above slowMA) then Double.NaN else short_entry[1];
def short_exit = if short_entry > 0 then 0 else 1;

This works great if we are only going to use an MA crossover strategy. Great job with that. I do like the extra levels as well!
 
I cannot get this to show the trade zones. Only part I changed is "Buy_Signal" and "Sell_Signal" in the trade zone area to match the "SignalUp" and "SignalDown" in the HMA code. I did this exact thing with the SuperTrend and it worked perfectly. I have re-installed the original code a few times with no success. Can someone please take a look at this and tell me what I am doing wrong or what I need to do to get it to work?
Code:
#Hull MovingAverage Average -
# Trade Lines
# v1.0 by @Mark.917
#

# Trade Lines will plot lines with and optional cloud showing where you entered your
# position and the location of your stop loss and profit target.
#
# To use, your code will need to set "your_buy_signal" or "your_sell_signal" to true.
# The profit target and stop loss are based on an ATR multplier.  You may modify this
# to be whatever you would like.

declare upper;

#######################
# YOUR CODE STARTS HERE
#######################

input price = close;
input length = 48;
input displace = 0;

plot HMA = MovingAverage(AverageType.HULL, price, length)[-displace];

HMA.DefineColor("Up", GetColor(1));
HMA.DefineColor("Down", GetColor(0));
HMA.AssignValueColor(if HMA > HMA[1] then HMA.color("Up") else HMA.color("Down"));

def UpTrend = HMA > HMA[1];
def DownTrend = HMA < HMA[1];

plot SignalUp = if UpTrend and !UpTrend[1] then HMA else double.nan;
SignalUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
SignalUp.AssignValueColor(Color.UPTICK);

plot SignalDown = if DownTrend and !DownTrend[1] then HMA else double.nan;
SignalDown.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
SignalDown.AssignValueColor(Color.DOWNTICK);

###################
# BEGIN TRADE LINES
###################

input show_trade_zone = yes; #hint show_trade_zone: Adds a cloud in the profit and loss zones

input ATRTargetMultiple = 3.0;
input ATRStopMultiple = 1.0;

def atr = ATR(14, averageType.WILDERS);

def long_signal = if SignalUp then 1 else 0;
def long_target = if long_signal == 1 then atr * ATRTargetMultiple else long_target[1];
def long_stop = if long_signal == 1 then atr * ATRStopMultiple else long_stop[1];
def long_entry = if long_signal == 1 then open else if (high[1] > long_entry[1] + long_target or low[1] < long_entry[1] - long_stop) then Double.NaN else long_entry[1];
def long_exit = if long_entry > 0 then 0 else 1;

plot long_pt = if show_trade_zone and !long_exit then long_entry + long_target else Double.NaN;
long_pt.SetDefaultColor(Color.GREEN);
plot long_ep = if show_trade_zone and !long_exit then long_entry else Double.NaN;
long_ep.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
long_ep.SetPaintingStrategy(PaintingStrategy.DASHES);
long_ep.SetDefaultColor(Color.WHITE);
plot long_sl = if show_trade_zone and !long_exit then long_ep - long_stop else Double.NaN;
long_sl.SetDefaultColor(Color.RED);

AddCloud(if show_trade_zone then long_pt else Double.NaN, long_ep, Color.GREEN);
AddCloud(if show_trade_zone then long_sl else Double.NaN, long_ep, Color.RED);

def short_signal = if SignalDown then 1 else 0;
def short_target = if short_signal == 1 then atr * ATRTargetMultiple else short_target[1];
def short_stop = if short_signal == 1 then atr * ATRStopMultiple else short_stop[1];
def short_entry = if short_signal == 1 then open else if (low[1] < short_entry[1] - short_target or high[1] > short_entry[1] + short_stop) then Double.NaN else short_entry[1];
def short_exit = if short_entry > 0 then 0 else 1;

plot short_pt = if show_trade_zone and !short_exit then short_entry - short_target else Double.NaN;
short_pt.SetDefaultColor(Color.GREEN);
plot short_ep = if show_trade_zone and !short_exit then short_entry else Double.NaN;
short_ep.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
short_ep.SetPaintingStrategy(PaintingStrategy.DASHES);
short_ep.SetDefaultColor(Color.WHITE);
plot short_sl = if show_trade_zone and !short_exit then short_ep + short_stop else Double.NaN;
short_sl.SetDefaultColor(Color.RED);

AddCloud(if show_trade_zone then short_ep else Double.NaN, short_pt, Color.GREEN);
AddCloud(if show_trade_zone then short_sl else Double.NaN, short_ep, Color.RED);

#################
# END TRADE LINES
#################
 
@mark.917 , @Cwparker23 I have another request if it is possible. Is there a way to get the trade zone to show up 1 candle after the signal by strat? This will be more accurate since we will most likely need to wait for candle close of strat signal and would only be able to get in trade on next candle.
 
I cannot get this to show the trade zones. Only part I changed is "Buy_Signal" and "Sell_Signal" in the trade zone area to match the "SignalUp" and "SignalDown" in the HMA code. I did this exact thing with the SuperTrend and it worked perfectly. I have re-installed the original code a few times with no success. Can someone please take a look at this and tell me what I am doing wrong or what I need to do to get it to work?
Code:
#Hull MovingAverage Average -
# Trade Lines
# v1.0 by @Mark.917
#

# Trade Lines will plot lines with and optional cloud showing where you entered your
# position and the location of your stop loss and profit target.
#
# To use, your code will need to set "your_buy_signal" or "your_sell_signal" to true.
# The profit target and stop loss are based on an ATR multplier.  You may modify this
# to be whatever you would like.

declare upper;

#######################
# YOUR CODE STARTS HERE
#######################

input price = close;
input length = 48;
input displace = 0;

plot HMA = MovingAverage(AverageType.HULL, price, length)[-displace];

HMA.DefineColor("Up", GetColor(1));
HMA.DefineColor("Down", GetColor(0));
HMA.AssignValueColor(if HMA > HMA[1] then HMA.color("Up") else HMA.color("Down"));

def UpTrend = HMA > HMA[1];
def DownTrend = HMA < HMA[1];

plot SignalUp = if UpTrend and !UpTrend[1] then HMA else double.nan;
SignalUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
SignalUp.AssignValueColor(Color.UPTICK);

plot SignalDown = if DownTrend and !DownTrend[1] then HMA else double.nan;
SignalDown.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
SignalDown.AssignValueColor(Color.DOWNTICK);

###################
# BEGIN TRADE LINES
###################

input show_trade_zone = yes; #hint show_trade_zone: Adds a cloud in the profit and loss zones

input ATRTargetMultiple = 3.0;
input ATRStopMultiple = 1.0;

def atr = ATR(14, averageType.WILDERS);

def long_signal = if SignalUp then 1 else 0;
def long_target = if long_signal == 1 then atr * ATRTargetMultiple else long_target[1];
def long_stop = if long_signal == 1 then atr * ATRStopMultiple else long_stop[1];
def long_entry = if long_signal == 1 then open else if (high[1] > long_entry[1] + long_target or low[1] < long_entry[1] - long_stop) then Double.NaN else long_entry[1];
def long_exit = if long_entry > 0 then 0 else 1;

plot long_pt = if show_trade_zone and !long_exit then long_entry + long_target else Double.NaN;
long_pt.SetDefaultColor(Color.GREEN);
plot long_ep = if show_trade_zone and !long_exit then long_entry else Double.NaN;
long_ep.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
long_ep.SetPaintingStrategy(PaintingStrategy.DASHES);
long_ep.SetDefaultColor(Color.WHITE);
plot long_sl = if show_trade_zone and !long_exit then long_ep - long_stop else Double.NaN;
long_sl.SetDefaultColor(Color.RED);

AddCloud(if show_trade_zone then long_pt else Double.NaN, long_ep, Color.GREEN);
AddCloud(if show_trade_zone then long_sl else Double.NaN, long_ep, Color.RED);

def short_signal = if SignalDown then 1 else 0;
def short_target = if short_signal == 1 then atr * ATRTargetMultiple else short_target[1];
def short_stop = if short_signal == 1 then atr * ATRStopMultiple else short_stop[1];
def short_entry = if short_signal == 1 then open else if (low[1] < short_entry[1] - short_target or high[1] > short_entry[1] + short_stop) then Double.NaN else short_entry[1];
def short_exit = if short_entry > 0 then 0 else 1;

plot short_pt = if show_trade_zone and !short_exit then short_entry - short_target else Double.NaN;
short_pt.SetDefaultColor(Color.GREEN);
plot short_ep = if show_trade_zone and !short_exit then short_entry else Double.NaN;
short_ep.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
short_ep.SetPaintingStrategy(PaintingStrategy.DASHES);
short_ep.SetDefaultColor(Color.WHITE);
plot short_sl = if show_trade_zone and !short_exit then short_ep + short_stop else Double.NaN;
short_sl.SetDefaultColor(Color.RED);

AddCloud(if show_trade_zone then short_ep else Double.NaN, short_pt, Color.GREEN);
AddCloud(if show_trade_zone then short_sl else Double.NaN, short_ep, Color.RED);

#################
# END TRADE LINES
#################
I believe your issue is the Signal plots are false after the signal bar. I think you need a second variable for the signals to be true until they aren't. Hope that makes sense.
 
I believe your issue is the Signal plots are false after the signal bar. I think you need a second variable for the signals to be true until they aren't. Hope that makes sense.
Okay, I am not sure how to fix that but I will attempt. Do you know if the code can changed so that the zone starts after Buy/Sell Signal?
 
Okay, I am not sure how to fix that but I will attempt. Do you know if the code can changed so that the zone starts after Buy/Sell Signal?

My first thought above was incorrect. Your signal plots were assigning the value of the HMA instead of just true/false.

I think this is what you want:

Code:
#Hull MovingAverage Average -
# Trade Lines
# v1.0 by @Mark.917
#

# Trade Lines will plot lines with and optional cloud showing where you entered your
# position and the location of your stop loss and profit target.
#
# To use, your code will need to set "your_buy_signal" or "your_sell_signal" to true.
# The profit target and stop loss are based on an ATR multplier.  You may modify this
# to be whatever you would like.

declare upper;

#######################
# YOUR CODE STARTS HERE
#######################

input price = close;
input length = 48;
input displace = 0;

plot HMA = MovingAverage(AverageType.HULL, price, length)[-displace];

HMA.DefineColor("Up", GetColor(1));
HMA.DefineColor("Down", GetColor(0));
HMA.AssignValueColor(if HMA > HMA[1] then HMA.color("Up") else HMA.color("Down"));

def UpTrend = HMA > HMA[1];
def DownTrend = HMA < HMA[1];

plot SignalUp = if UpTrend and !UpTrend[1] then 1 else 0;
SignalUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
SignalUp.AssignValueColor(Color.UPTICK);

plot SignalDown = if DownTrend and !DownTrend[1] then 1 else 0;
SignalDown.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
SignalDown.AssignValueColor(Color.DOWNTICK);

###################
# BEGIN TRADE LINES
###################

input show_trade_zone = yes; #hint show_trade_zone: Adds a cloud in the profit and loss zones

input ATRTargetMultiple = 3.0;
input ATRStopMultiple = 1.0;

def atr = ATR(14, averageType.WILDERS);

def long_signal = if SignalUp then 1 else 0;
def long_target = if long_signal == 1 then atr * ATRTargetMultiple else long_target[1];
def long_stop = if long_signal == 1 then atr * ATRStopMultiple else long_stop[1];
def long_entry = if long_signal == 1 then open else if (high[1] > long_entry[1] + long_target or low[1] < long_entry[1] - long_stop) then Double.NaN else long_entry[1];
def long_exit = if long_entry > 0 then 0 else 1;

plot long_pt = if show_trade_zone and !long_exit then long_entry + long_target else Double.NaN;
long_pt.SetDefaultColor(Color.GREEN);
plot long_ep = if show_trade_zone and !long_exit then long_entry else Double.NaN;
long_ep.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
long_ep.SetPaintingStrategy(PaintingStrategy.DASHES);
long_ep.SetDefaultColor(Color.WHITE);
plot long_sl = if show_trade_zone and !long_exit then long_ep - long_stop else Double.NaN;
long_sl.SetDefaultColor(Color.RED);

AddCloud(if show_trade_zone then long_pt else Double.NaN, long_ep, Color.GREEN);
AddCloud(if show_trade_zone then long_sl else Double.NaN, long_ep, Color.RED);

def short_signal = if SignalDown then 1 else 0;
def short_target = if short_signal == 1 then atr * ATRTargetMultiple else short_target[1];
def short_stop = if short_signal == 1 then atr * ATRStopMultiple else short_stop[1];
def short_entry = if short_signal == 1 then open else if (low[1] < short_entry[1] - short_target or high[1] > short_entry[1] + short_stop) then Double.NaN else short_entry[1];
def short_exit = if short_entry > 0 then 0 else 1;

plot short_pt = if show_trade_zone and !short_exit then short_entry - short_target else Double.NaN;
short_pt.SetDefaultColor(Color.GREEN);
plot short_ep = if show_trade_zone and !short_exit then short_entry else Double.NaN;
short_ep.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
short_ep.SetPaintingStrategy(PaintingStrategy.DASHES);
short_ep.SetDefaultColor(Color.WHITE);
plot short_sl = if show_trade_zone and !short_exit then short_ep + short_stop else Double.NaN;
short_sl.SetDefaultColor(Color.RED);

AddCloud(if show_trade_zone then short_ep else Double.NaN, short_pt, Color.GREEN);
AddCloud(if show_trade_zone then short_sl else Double.NaN, short_ep, Color.RED);

#################
# END TRADE LINES
#################
 
Last edited:
@mark.917 , @Cwparker23 I have another request if it is possible. Is there a way to get the trade zone to show up 1 candle after the signal by strat? This will be more accurate since we will most likely need to wait for candle close of strat signal and would only be able to get in trade on next candle.
Try adding [1] to the SignalUp and SignalDown lines under the Begin Trade Lines section.

Code:
def long_signal = if SignalUp[1] then 1 else 0;

def short_signal = if SignalDown[1] then 1 else 0;
 
Sorry, I did not communicate my concept clearly.

Assuming that a technical signal is true at the hard right edge, I want to project A "Buy window" into the future. The current projection is all that is needed. I hacked together a concept image. I tried to show a window projection based on an RSI(7) crossing above 50, with a "Buy Window" projected at (low= close - 1%) to (high=close + 3%) for 7 bars into the future. (please ignore the light green line shown in the projection - bad photoshop job). It just isn't clear how to draw something beyond the hard right edge. Thanks.
View attachment 19676
Hi @Vern T

I have messed around with this and tried using the [displace] parameter but I can't figure out how to do it, if it is even possible.
 
Try adding [1] to the SignalUp and SignalDown lines under the Begin Trade Lines section.

Code:
def long_signal = if SignalUp[1] then 1 else 0;

def short_signal = if SignalDown[1] then 1 else 0;
Worked perfect. Thanks.

Can you also take a look at this code. it is working, However, I get a bunch of "unfinished" zones and I do not see a reason why they are not working. I shared my chart with BIG4-V.5 with trade zones. I am testing on 1m chart to scalp SPX. Just testing for now. I know it is designed for a 3 min TF. https://tos.mx/WMbqYkP
1694279645226.png
 
Worked perfect. Thanks.

Can you also take a look at this code. it is working, However, I get a bunch of "unfinished" zones and I do not see a reason why they are not working. I shared my chart with BIG4-V.5 with trade zones. I am testing on 1m chart to scalp SPX. Just testing for now. I know it is designed for a 3 min TF. https://tos.mx/WMbqYkP
View attachment 19683
In this example, the entry would be at the white arrow and the trade was stopped out at the red arrow, so on the same bar.

1694288054611.png
 
I thought the stop out would only occur i=on the close of that candle. Wouldn't that make more sense? Can that be coded to not stop out unless that candle cloes below/above the stop?
 
I thought the stop out would only occur i=on the close of that candle. Wouldn't that make more sense? Can that be coded to not stop out unless that candle cloes below/above the stop?

It was coded as if there would be a limit order waiting at the level of the target. But if you want to only exit on a close above/below the target then try changing these lines, replacing high[1] and low[1] with close[1].

Code:
def long_entry = if long_signal == 1 then open else if (high[1] > long_entry[1] + long_target or low[1] < long_entry[1] - long_stop) then Double.NaN else long_entry[1];

def short_entry = if short_signal == 1 then open else if (low[1] < short_entry[1] - short_target or high[1] > short_entry[1] + short_stop) then Double.NaN else short_entry[1];
/[code]
 
@mark.917 Do you mind looking at this and help me to fix it. I cannot get the zones to work. I only get single line dashes. I do not know what I have done wrong as I have created two others that work.
Thanks in advance. Also, I would like for the zones to continue unless they close below/above the exit lines. (In case I messed that up as well)
Code:
#
# Trade Lines
# v1.0 by @Mark.917

#Remastered by Cwparker23 9/8/2023

# Trade Lines will plot lines with and optional cloud showing where you entered your
# position and the location of your stop loss and profit target.
#
# To use, your code will need to set "your_buy_signal" or "your_sell_signal" to true.
# The profit target and stop loss are based on an ATR multplier.  You may modify this
# to be whatever you would like.

declare upper;

#######################
# YOUR CODE STARTS HERE
#######################
##AsGood_HighLowPointPivot_Arrows
def bn = BarNumber();
def na = Double.NaN;

input length = 15;
def lastBar = HighestAll(if IsNaN(close) then 0 else bn);
def offset = Min(length - 1, lastBar - bn);

input ignore_last_bar = yes;
def ignorelast = if (ignore_last_bar and bn == lastBar) then 0 else 1;

def HighPoint = ignorelast and high > Highest(high[1], length - 1) and high == GetValue(Highest(high, length), -offset);
def Lowpoint = ignorelast and low < Lowest(low[1], length - 1) and low == GetValue(Lowest(low, length), -offset);


input show_Arrows_on_Highpoints_Lowpoints = yes;
def vert = 0.001;

def prange = HighPoint – Lowpoint;
def plotHighest = HighPoint + prange * .3;
def plotLowest = Lowpoint - prange * 3.0;

plot Buy = if Lowpoint then low else Double.NaN ;
plot Sell = if HighPoint then high else Double.NaN ;

Buy.SetPaintingStrategy(PaintingStrategy.ARROW_UP) ;
Buy.SetDefaultColor(Color.WHITE);
Buy.SetLineWeight(5);
Sell.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN) ;
Sell.SetDefaultColor(Color.WHITE);
Sell.SetLineWeight(5);

###################
# BEGIN TRADE LINES
###################
input show_trade_zone_long = yes; #hint show_trade_zone: Adds a cloud in the profit and loss zones
input show_trade_zone_short = yes;
input atrLength = 14;

input ATRTargetMultiple = 2.0;
input ATRTargetMultiple2 = 5.0;
input ATRTargetMultiple3 = 8.0;

input ATRStopMultiple = 1.0;

def atr = ATR(atrLength, AverageType.SIMPLE);

def long_signal = if Buy then 1 else 0;
def long_target = if long_signal == 1 then atr * ATRTargetMultiple else long_target[1];
def long_target2 = if long_signal == 1 then atr * ATRTargetMultiple2 else long_target2[1];
def long_target3 = if long_signal == 1 then atr * ATRTargetMultiple3 else long_target3[1];


def long_stop = if long_signal == 1 then atr * ATRStopMultiple else long_stop[1];
#------------------------------------------------------------------------------------------------------------------------
#def long_entry = if long_signal == 1 then high[1] else
#if ( close[1] < long_entry[1] - long_stop or Lowpoint ) then Double.NaN else
#long_entry[1];
def long_entry = if long_signal == 1 then open else if (close[1] > long_entry[1] + long_target or close[1] < long_entry[1] - long_stop) then Double.NaN else long_entry[1];

def long_exit = if long_entry > 0 then 0 else 1;

plot long_pt = if show_trade_zone_long and !long_exit then long_entry + long_target else Double.NaN;
long_pt.SetDefaultColor(Color.GREEN);
long_pt.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

plot long_pt2 = if show_trade_zone_long and !long_exit then long_entry + long_target2 else Double.NaN;
long_pt2.SetDefaultColor(Color.GREEN);
long_pt2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

plot long_pt3 = if show_trade_zone_long and !long_exit then long_entry + long_target3 else Double.NaN;
long_pt3.SetDefaultColor(Color.GREEN);
long_pt3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

plot long_ep = if show_trade_zone_long and !long_exit then long_entry else Double.NaN;
long_ep.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
long_ep.SetPaintingStrategy(PaintingStrategy.DASHES);
long_ep.SetDefaultColor(Color.WHITE);

plot long_sl = if show_trade_zone_long and !long_exit then long_ep - long_stop else Double.NaN;
long_sl.SetDefaultColor(Color.RED);
long_sl.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

AddCloud(if show_trade_zone_long then long_pt else Double.NaN, long_ep, Color.GREEN);
AddCloud(if show_trade_zone_long then long_pt2 else Double.NaN, long_pt, Color.GRAY);
AddCloud(if show_trade_zone_long then long_pt3 else Double.NaN, long_pt2, Color.GRAY);

AddCloud(if show_trade_zone_long then long_sl else Double.NaN, long_ep, Color.RED);

def short_signal = if Sell then 1 else 0;
def short_target = if short_signal == 1 then atr * ATRTargetMultiple else short_target[1];
def short_target2 = if short_signal == 1 then atr * ATRTargetMultiple2 else short_target2[1];
def short_target3 = if short_signal == 1 then atr * ATRTargetMultiple3 else short_target3[1];
def short_stop = if short_signal == 1 then atr * ATRStopMultiple else short_stop[1];
#--------------------------------------------------------------------------------------------------------------------------------
def short_entry = if short_signal == 1 then open else if (close[1] < short_entry[1] - short_target or close[1] > short_entry[1] + short_stop) then Double.NaN else short_entry[1];

def short_exit = if short_entry > 0 then 0 else 1;

plot short_pt = if show_trade_zone_short and !short_exit then short_entry - short_target else Double.NaN;
short_pt.SetDefaultColor(Color.GREEN);
plot short_pt2 = if show_trade_zone_short and !short_exit then short_entry - short_target2 else Double.NaN;
short_pt2.SetDefaultColor(Color.GREEN);
plot short_pt3 = if show_trade_zone_short and !short_exit then short_entry - short_target3 else Double.NaN;
short_pt3.SetDefaultColor(Color.GREEN);
short_pt.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
short_pt2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
short_pt3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);


plot short_ep = if show_trade_zone_short and !short_exit then short_entry else Double.NaN;
short_ep.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
short_ep.SetPaintingStrategy(PaintingStrategy.DASHES);
short_ep.SetDefaultColor(Color.WHITE);
plot short_sl = if show_trade_zone_short and !short_exit then short_ep + short_stop else Double.NaN;
short_sl.SetDefaultColor(Color.RED);
short_sl.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

AddCloud(if show_trade_zone_short then short_ep else Double.NaN, short_pt, Color.GREEN);
AddCloud(if show_trade_zone_short then short_pt else Double.NaN, short_pt2, Color.GRAY);
AddCloud(if show_trade_zone_short then short_pt2 else Double.NaN, short_pt3, Color.GRAY);
AddCloud(if show_trade_zone_short then short_sl else Double.NaN, short_ep, Color.RED);

#################
# END TRADE LINES
#################
 
Could we get the target and trailing stop labels based on
the last sales for targets of 3% and stops of 1% but those numbers can be changed
 

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
566 Online
Create Post

Similar threads

Similar threads

The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
  • Exclusive indicators
  • Proven strategies & setups
  • Private Discord community
  • ‘Buy The Dip’ signal alerts
  • Exclusive members-only content
  • Add-ons and resources
  • 1 full year of unlimited support

Frequently Asked Questions

What is useThinkScript?

useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.

How do I get started?

We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.

If you are new, or just looking for guidance, here are some helpful links to get you started.

What are the benefits of VIP Membership?
VIP members get exclusive access to these proven and tested premium indicators: Buy the Dip, Advanced Market Moves 2.0, Take Profit, and Volatility Trading Range. In addition, VIP members get access to over 50 VIP-only custom indicators, add-ons, and strategies, private VIP-only forums, private Discord channel to discuss trades and strategies in real-time, customer support, trade alerts, and much more. Learn all about VIP membership here.
How can I access the premium indicators?
To access the premium indicators, which are plug and play ready, sign up for VIP membership here.
Back
Top