Этот скрипт будет покупать (при открытии), если есть внешний бар.В настоящее время takeProfit составляет 2%, а стоп-лосс находится на минимуме боковой панели.(Я только учусь кодировать, а не действительной стратегии)
Проблема 1: необходимо учитывать, когда вход находится ниже минимума внешнего бара (это приведет к входу и немедленному выходу из позиции).Я пытался получить стоп-лосс в 1%, если вход ниже минимума внешних баров.
Проблема 2: если я нахожусь в длинной позиции, которая еще не вышла, и на новой улицебар найден, я не хочу, чтобы он обновлял стоп-лосс или текущую позицию.
Buy-On-Open-After-Outside-Bar
//@version=3
// Created by Leon Ross
//study(title="OutsideBar", shorttitle="ODOL", overlay=true)
strategy(title = "Outside", shorttitle = "OB", overlay = true,
pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100,
calc_on_every_tick=false, initial_capital=100000)
//Conditions
outsideBar = low < low[1] and high > high[1] and close < open
allConditions = outsideBar
//Stop as last bars low and profit as percentage
entry = strategy.position_avg_price
inpTakeProfit = input(2.0, title='Take Profit %', type=float)/100
takeProfitValue = strategy.position_avg_price * (1 + inpTakeProfit)
useTakeProfit = inpTakeProfit > 0 ? takeProfitValue : na
inpStopLoss = valuewhen(allConditions, low, 0)
stopLossValue = inpStopLoss
useStopLoss = inpStopLoss > 0 ? stopLossValue : na
//Plots
bgcolor(allConditions ==1 ? aqua : na, transp=70)
plot(entry, color=blue, style=linebr, linewidth=2)
plot(useStopLoss, color=red, style=linebr, linewidth=2)
plot(useTakeProfit, color=green, style=linebr, linewidth=2)
//Entires
strategy.entry(id = "Long", long = true, when = allConditions) // use function or simple condition to decide when to get in
//Exits
//if (barssince(allConditions) == 2)
//strategy.close("Long")
//else
strategy.exit("Exit Long", from_entry = "Long", stop = useStopLoss)