В настоящее время я использую этот код для своей стратегии. У меня все настроены оповещения, но проблема в том, что я смотрю, когда %D на 1-дневном, 5-дневном и 30-дневном графиках падает ниже 17,5, поэтому всякий раз, когда я получаю оповещение для одного, я должен вручную проверять, были ли другие. находятся в. Есть ли способ переделать какой-то код, чтобы оповещение было отправлено только в том случае, если линия %D упадет ниже для всех трех графиков?
Я считаю, что это можно сделать с помощью функции security(), но я не могу точно понять это. Моя идея состоит в том, чтобы иметь amd_1, amd_5, amd_30 и рассчитать D для всех трех, нанести эти три на график, а затем настроить и предупредить, говоря, что если D1 ‹ 17,5 и D5 ‹ 17,5 и D30 ‹ 17,5, то отправить предупреждение. Любая помощь приветствуется. Спасибо!
//@version=4
strategy("stochastic")
amd_1 = security("NYSE:AMD", "1D", close)
amd_5 = security("NYSE:AMD", "5D", close)
amd_30 = security("NYSE:AMD", "30D", close)
length = input(21, minval=1, title="length")
rsilength = input(21, minval=1, title="rsi length")
smoothk = input(4, minval=1, title="smoothk")
smoothd = input(10, minval=1, title="smoothd")
showMarkers = input(true, "Show Markers")
rsi = rsi(close, rsilength)
sto = stoch(close,highest(length),lowest(length), length)
K = sma(sto,smoothk)
D = sma(K,smoothd)
//plot(rsi, title="rsi", color=color.black)
plot(D, title="%D",color=color.green)
plot(K, title="%K",color=color.red)
hline(78,title="upper limit", color=color.red)
hline(17, title="lower limit",color=color.blue)
//plot(sto, title = "sto",color=color.black)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 24, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2019, title = "From Year", minval = 2017)
ToMonth = input(defval = 9, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// === EXECUTION ===
shares = 10000/close
buy = crossunder(D,17.5)
sell = crossover(D,78)
strategy.entry("buy", shares, when = window() and buy) // buy long when "within window of time" AND crossover
strategy.close("buy", when = window() and sell) // sell long when "within window of time" AND crossunder
plotshape(showMarkers and buy, "buy", shape.triangleup, location.bottom, color.green, 0, text = "buy", size = size.tiny)
plotshape(showMarkers and sell, "sell", shape.triangledown, location.top, color.maroon, 0, text = "sell", size = size.tiny)
bgcolor(showMarkers ? window() ? color.green : color.maroon : na)