Нужно вывести в сообщение идентификатор, который был присвоен графику, чтобы по сообщению было понятно, на каком таймфрейме появляется сигнал. Сообщение типа: message("Возможна точка входа на " идентификатор графика ", BUY!")
Задавайте идентификатор графика в QUIKе в виде SECCODE_INDICATOR_TIMEFRAME_PARAMS, напр RIZ8_MACD_60_15 или SiH0_PRICE_1D А потом в Lua, перебирая все заданные вами идентификаторы графиков, парсите их, получая, соответственно, инструмент, тип графика(индикатора), таймфрейм и список параметров.
vgi написал: Задавайте идентификатор графика в QUIKе в виде SECCODE_INDICATOR_TIMEFRAME_PARAMS , напр RIZ8_MACD_60_15 или SiH0_PRICE_1D А потом в Lua, перебирая все заданные вами идентификаторы графиков, парсите их, получая, соответственно, инструмент, тип графика(индикатора), таймфрейм и список параметров.
Прошу прощения, я только начала программировать, не понимаю, что означает "парсить". У меня сейчас код выглядит так:
local graphic_id = "RIZ8_PRICE_M1"
function main()
local N=getNumCandles(graphic_id)
local t,n,l=getCandlesByIndex(graphic_id, 0, N-2, 2)
if t[0].low>t[1].low
and (t[1].high-t[1].low)/3>(t[1].high-t[1].close)
then
message("Возможна точка входа на "..graphic_id..", BUY!",2)
end
end
local graphic_id = "RIZ8_PRICE_M1"
function main ()
local N = getNumCandles (graphic_id)
local t,n,l = getCandlesByIndex (graphic_id, 0 , N - 2 , 2 )
if t[ 0 ].low > t[ 1 ].low
and (t[ 1 ].high - t[ 1 ].low)/ 3 > (t[ 1 ].high - t[ 1 ].close)
then
message ( "Возможна точка входа на " .. graphic_id .. ", BUY ! ", 2 )
end
end
Благодарю!
Если позволите, ещё вопрос... Когда ввожу идентификаторы для других графиков (например, RIZ8_PRICE_M2), начинает работать только график с последним идентификатором. Например:
Код
local graphic_id = "RIZ8_PRICE_M1"
local graphic_id1 = "RIZ8_PRICE_M2"
function main()
local N=getNumCandles(graphic_id)
local t,n,l=getCandlesByIndex(graphic_id, 0, N-2, 2)
local M=getNumCandles(graphic_id1)
local t1,n1,l1=getCandlesByIndex(graphic_id1, 0, M-2, 2)
if t[0].low>t[1].low
and (t[1].high-t[1].low)/3>(t[1].high-t[1].close)
then
message("Возможна точка входа на "..graphic_id..", BUY!",2)
end
if t1[0].low>t1[1].low
and (t1[1].high-t1[1].low)/3>(t1[1].high-t1[1].close)
then
message("Возможна точка входа на "..graphic_id1..", BUY!",2)
end
end
То есть при таком коде выводятся сообщения только по графику RIZ8_PRICE_M2. Подскажите пожалуйста, как можно исправить, чтобы выводились сообщения по обоим идентификаторам?
Нашла причину ошибки, - робот не работает, когда на графике есть хотя бы один индикатор. В идентификаторе индикатора ничего не прописываю... Нужно как-то поменять код, если у меня на графике есть индикатор?
Evgenia написал: Нашла причину ошибки, - робот не работает, когда на графике есть хотя бы один индикатор. В идентификаторе индикатора ничего не прописываю... Нужно как-то поменять код, если у меня на графике есть индикатор?
Небольшое уточнение... Не работают сообщения только с индикатором из нескольких линий, которых отображается в одной области с графиком (Ishimoku, Alligator).
Evgenia, Если условие if не срабатывает, проверьте что попадает в это условие, т.е. какие значения у t[0].low, t[1].low, t[1].high, t[1].close и остальные.
автор, я б на вашем месте воспользоваться CreateDataSource и брал "свечки" оттуда, а не с графика. не надо будет возиться с "идентификаторами", вообще. CreateDataSource надо вызывать один раз только. И не забывайте его закрывать в конце скрипта.