Untitled
unknown
plain_text
2 years ago
2.4 kB
22
Indexable
//@version=5
strategy(title="Take profit (% of instrument price)",
overlay=true, pyramiding=3, backtest_fill_limits_assumption=1)
// STEP 1:
// Make inputs that set the take profit % (optional)
longProfitPerc = input.float(0.3, title="Long Take Profit (%)",
minval=0.0, step=0.1) * 0.01
shortProfitPerc = input.float(0.3, title="Short Take Profit (%)",
minval=0.0, step=0.1) * 0.01
// Calculate moving averages
fastSMA = ta.sma(close, 20)
slowSMA = ta.sma(close, 60)
// Calculate trading conditions
enterLong = ta.crossover(fastSMA, slowSMA)
enterShort = ta.crossunder(fastSMA, slowSMA)
// STEP 2:
// Figure out take profit price
// Check if it's the first bar of the position
isFirstBar = bar_index == strategy.opentrades.entry_bar_index(0)
// var float longExitPrice = na
// var float shortExitPrice = na
// if enterLong and strategy.position_size == 0
firstBarLongTP = (close * longProfitPerc) / syminfo.mintick
laterBarLongTP = strategy.position_avg_price * (1 + longProfitPerc)
// if enterShort and strategy.position_size == 0
firstBarShortTP = (close * shortProfitPerc) / syminfo.mintick
laterBarShortTP = strategy.position_avg_price * (1 - shortProfitPerc)
// Submit entry orders
if enterLong and strategy.position_size == 0
strategy.entry("Entry Long", strategy.long)
if enterShort and strategy.position_size == 0
strategy.entry("Entry Short", strategy.short)
// STEP 3:
// Submit exit orders based on take profit price
// if strategy.position_size > 0
if isFirstBar
strategy.exit("Exit Long", from_entry="Entry Long", profit=firstBarLongTP)
strategy.exit("Exit Short", from_entry="Entry Short", profit=firstBarShortTP)
else
strategy.exit("Exit Long", from_entry="Entry Long", limit=laterBarLongTP)
strategy.exit("Exit Short", from_entry="Entry Short", limit=laterBarShortTP)
// if strategy.position_size < 0
// Plot take profit values for confirmation
plot(strategy.position_size > 0 ? laterBarLongTP : na,
color=color.green, style=plot.style_linebr,
linewidth=3, title="Long Take Profit")
plot(strategy.position_size < 0 ? laterBarShortTP : na,
color=color.red, style=plot.style_linebr,
linewidth=3, title="Short Take Profit")
plotshape(isFirstBar, location=location.belowbar)
plot(strategy.position_avg_price)
Editor is loading...
Leave a Comment