TradingView stop loss script

Here you go, with couple of additions

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © SafetyHammer //@version=4 strategy(title="Take profit (% of instrument price)", overlay=true, pyramiding=1) // STEP 1: // Make inputs that set the take profit % (optional) FastPeriod = input(title="Fast MA Period", type=input.integer, defval=20, minval=1, group="Moving Average") SlowPeriod = input(title="Slow MA Period", type=input.integer, defval=60, minval=1, group="Moving Average") TP1Perc = input(title="Long Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=2, group="TP & SL") TP2Perc = input(title="Long Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=4, group="TP & SL") SLPerc = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=2, group="TP & SL") TP1_Ratio = input(title="Sell Postion Size % @ TP1", type=input.float, defval=50, step=1, group="TP & SL", tooltip="Example: 50 closing 50% of the position once TP1 is reached")/100 // Calculate moving averages fastSMA = sma(close, FastPeriod) slowSMA = sma(close, SlowPeriod) // Calculate trading conditions enterLong = crossover(fastSMA, slowSMA) // Plot moving averages plot(series=fastSMA, color=color.green, title="Fase MA") plot(series=slowSMA, color=color.red, title="Slow MA") // STEP 2: // Figure out take profit price percentAsPoints(pcnt) => strategy.position_size != 0 ? round(pcnt / 100.0 * strategy.position_avg_price / syminfo.mintick) : float(na) percentAsPrice(pcnt) => strategy.position_size != 0 ? ((pcnt / 100.0) + 1.0) * strategy.position_avg_price : float(na) current_position_size = abs(strategy.position_size) initial_position_size = abs(valuewhen(strategy.position_size[1] == 0.0, strategy.position_size, 0)) TP1 = strategy.position_avg_price + percentAsPoints(TP1Perc) * syminfo.mintick * strategy.position_size / abs(strategy.position_size) TP2 = strategy.position_avg_price + percentAsPoints(TP2Perc) * syminfo.mintick * strategy.position_size / abs(strategy.position_size) SL = strategy.position_avg_price - percentAsPoints(SLPerc) * syminfo.mintick * strategy.position_size / abs(strategy.position_size) // Submit entry orders if (enterLong) strategy.entry(id="Long", long=true) // STEP 3: // Submit exit orders based on take profit price if strategy.position_size > 0 strategy.exit("TP1", from_entry="Long", qty = initial_position_size * TP1_Ratio, limit = TP1, stop = SL) strategy.exit("TP2", from_entry="Long", limit = TP2, stop = SL) // Plot take profit values for confirmation plot(series=(strategy.position_size > 0) ? TP1 : na, color=color.green, style=plot.style_circles, linewidth=1, title="Take Profit 1") plot(series=(strategy.position_size > 0) ? TP2 : na, color=color.green, style=plot.style_circles, linewidth=1, title=" Take Profit 2") plot(series=(strategy.position_size > 0) ? SL : na, color=color.red, style=plot.style_circles, linewidth=1, title="Stop Loss")