Виталий Дерягин (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Учусь работать с метками, Помощь в написании кода для выставлении меток на графике
 
Цитата
Виталий Дерягин написал:
Впрочем, может на графике просто нет индекса 5, дырявый график
Это была шутка или и в правду такое бывает? Посмотрел, нулевых значений на графике нет.
Учусь работать с метками, Помощь в написании кода для выставлении меток на графике
 
Исправил ошибку в переменной, текущая index, а обращался к Index.
Через DebugView посмотрел и получается, что не происходит вызов функции _SetTextLabel. В чем может быть проблема?
Учусь работать с метками, Помощь в написании кода для выставлении меток на графике
 
Цитата
Nikolay написал:
В качестве второго параметра os.date принимает число (unix time), Вы же передаете таблицу.
Код
if type(datetime) == 'table' then datetime = os.time(datetime) end
Мы приняли таблицу, этим проверили, что да это таблица, потом перевели в секунды
Код
label_params['DATE'] = os.date('%Y%m%d', datetime)  
А здесь просто преобразовали в нужный формат согласно os.date.

Или это так не работает?
Учусь работать с метками, Помощь в написании кода для выставлении меток на графике
 
Спасибо VPM! Метки появляются, но что у меня здесь не так? На 5 индексе, на простой линии со значением 100, пытаюсь вывести метку при помощи функции. Метка не появляется. Сам код подсмотрел из работающего индикатора.
Код
OnCalcul ate = function(index)

  if index == 5 then
  
_SetTextLabel(Settings['Идентификатор графика'], T(Index - 1), 100+Settings['Отступ меток вверх'], 'BOTTOM', Settings['Размер меток'], 'привет')

  end
  
return 100
end


_SetTextLabel = function(tag, datetime, hi, alignment, font_size, text, hint)

   if type(datetime) == 'table' then datetime = os.time(datetime) end
   
   label_params = {}
   label_params['TEXT'] = text                           
   label_params['ALIGNMENT'] = alignment                   
   label_params['YVALUE'] = hi                        
   label_params['DATE'] = os.date('%Y%m%d', datetime)    
   label_params['TIME'] = os.date('%H%M%S', datetime)    
   label_params['R'] = Settings['Цвет меток R (0-255)']    
   label_params['G'] = Settings['Цвет меток G (0-255)']   
   label_params['B'] = Settings['Цвет меток B (0-255)']  
   label_params['TRANSPARENCY'] = 0                       
   label_params['TRANSPARENT_BACKGROUND'] = 1              
   label_params['FONT_FACE_NAME'] = 'Verdana'             
   label_params['FONT_HEIGHT'] = font_size               
   if hint ~= nil then
      label_params['HINT'] = hint                        
   end
  
return AddLabel(tag, label_params)
end
Учусь работать с метками, Помощь в написании кода для выставлении меток на графике
 
Цитата
VPM написал:
Это можно представить как координаты на плоскости где х=DATE ,TIME, а у=значение цены.
Т.е. я правильно понимаю, к примеру, через функцию OnCalculate() высчитываю значение, вывожу это значение в отдельном окне (строю свой график) и вычисленное значение можно считать за координату Y?
Учусь работать с метками, Помощь в написании кода для выставлении меток на графике
 
Спасибо за помощь VPM! Я понял почему не видно меток, они просто за пределами масштаба и их просто не видно, но они есть.
А что по оси Y масштабирования нет? Или еще есть какой-то подвох?
Учусь работать с метками, Помощь в написании кода для выставлении меток на графике
 
Спасибо Nikolay ошибки в написании нашел.
Цитата
VPM написал:
1)  Где у Вас  AddLabel (20, label) chart_tag – тег графика, к которому привязывается метка,2) return 100, что за 100 хотите вернуть в параметрах пишите ["Yvalue"]=101,Прежде чем задавать какие то вопросы, попробуйте прочитать, справку хотя бы для того чтоб Вас понимали и разговаривать на одном языке.
Не судите меня строго, только пару недель занялся изучением языка LUA под Quik.
На простом примере, вывода линии со значением 100 и вывода метки при появлении первого индекса в OnCalculate()
Справкой пользуюсь,  только из справки
YVALUEDOUBLEЗначение параметра на оси Y, к которому будет привязана метка
)
я понял, что значение параметра YVALUE, я могу задать любое значение по оси Y. Или это не так?
Учусь работать с метками, Помощь в написании кода для выставлении меток на графике
 
изменил  все равно не работает
Код
d = "20"
AddLabel (d, label)

   end

return 100
end
Учусь работать с метками, Помощь в написании кода для выставлении меток на графике
 
Что я делаю не так? Пытаюсь просто вывести метку на первом индексе, не получается
Код
OnCalcul ate = function(index)

   if index == 1 then
    label={
["TEXT"]="Тарам",
["FONT_HEIGHT"]=25,
["R"]=255,
["G"]=255,
["B"]=0,
["FONT_FACE_NAME"]='Times New Roman',
["FONT_HEIGHT"]=18,
["Yvalue"]=101,
["datetime"]=20191007

}
AddLabel (20, label)

   end

return 100
end
Учусь работать с метками, Помощь в написании кода для выставлении меток на графике
 
Цитата
nikolz написал:
Цитата
Рекомендую сделать так:
Далее привожу фрагменты из своего рабочего скрипта :
Сделайте шаблон метки, например так:
Код
[/CODE] [CODE]  label_mes.DATE = YYYYMMDD;  label_mes.HINT = tostring(tostring(buy) .. "/" .. tostring(sell));
LabMes =  AddLabel (Settings.tag,label_mes);
  
Цитата
nikolz написал:
Цитата
Виталий Дерягина написал:
Знающие программисты, всю голову сломал в поиске ошибки в написании кода или логики выполнения. Своих вариантов уже нет нужен свежий взгляд на проблему.

Пытаюсь вывести полученное значение в метке.
Рекомендую сделать так:
Далее привожу фрагменты из своего рабочего скрипта :
Сделайте шаблон метки, например так:
Код
   local  label_mes = {[ "TEXT" ] =  "" ,[ "IMAGE_PATH" ] =  "" ,[ "ALIGNMENT" ] =  "LEFT" ,[ "YVALUE" ] =  0 ,[ "DATE" ] =  0 ,[ "TIME" ] =  0 ,[ "R" ] =  255 ,[ "G" ] =  255 ,[ "B" ] =  255 ,
[ "TRANSPARENCY" ] =  0 ,[ "TRANSPARENT_BACKGROUND" ] =  0 ,[ "FONT_FACE_NAME" ] =  'Times New Roman' ,[ "FONT_HEIGHT" ] =  18 ,[ "HINT" ] =  "" }
  
В скрипте заполняете поля дату и значение и выводите метку на индикатор например так:
Код
  label_mes.DATE = YYYYMMDD;  label_mes.HINT = tostring(tostring(buy) .. "/" .. tostring(sell));
LabMes =  AddLabel (Settings.tag,label_mes);

Спасибо за отклик. Попробовал сделать шаблон через локальную таблицу по вашему примеру, вставил в функцию OnCalculate, метка не появилась. Думаю проблема у меня в логике вывода метки, т.к. все типы передаваемых данных в функцию шаблона метки правильные.  При вводе параметров, когда должна выводится метка значения просто не отображаются (фото прилагаются)
Учусь работать с метками, Помощь в написании кода для выставлении меток на графике
 
Знающие программисты, всю голову сломал в поиске ошибки в написании кода или логики выполнения. Своих вариантов уже нет нужен свежий взгляд на проблему.

Пытаюсь вывести полученное значение в метке.

OnCalcul ate = function(index)

if Schet < index then

if os.time(T(index-1)) >= DTSec then

local Prod = 0
local Pok = 0

Prod, Pok = _SumFunction (index)

SumProd = SumProd + Prod

SumPok = SumPok + Pok

Schet = index

end
end


local text = ''

if SumPok and SumProd ~= 0 then

if SumPok > SumProd and SumProd ~= 0 then

text = string.format ("%.2f", (SumPok / SumProd))

if text >= Settings['Параметр входа'] then

local id = _TextLabel(Settings['Идентификатор графика'], T(Index - 1), SumPok + Settings['Отступ меток вверх'], 'TOP', Settings['Размер меток'], text)

end
end

if SumProd > SumPok and SumPok ~= 0 then

text = string.format ("%.2f", (SumProd / SumPok))

if text >= Settings['Параметр входа'] then

_TextLabel(Settings['Идентификатор графика'], T(Index - 1), SumProd + Settings['Отступ меток вверх'], 'TOP', Settings['Размер меток'], text)

end
end

end

return  SumPok, SumProd

end

_TextLabel = function(NGraf, datetime, hi, alignment, font_size, text, hint)

  if type(datetime) == 'table' then datetime = os.time(datetime) end

  label_params = {}
  label_params['TEXT'] = text                          
  label_params['ALIGNMENT'] = alignment                  
  label_params['YVALUE'] = hi                      
  label_params['DATE'] = os.date('%Y%m%d', datetime)    
  label_params['TIME'] = os.date('%H%M%S', datetime)    
  label_params['R'] = Settings['Цвет меток R (0-255)']  
  label_params['G'] = Settings['Цвет меток G (0-255)']  
  label_params['B'] = Settings['Цвет меток B (0-255)']  
  label_params['TRANSPARENCY'] = 0                      
  label_params['TRANSPARENT_BACKGROUND'] = 1            
  label_params['FONT_FACE_NAME'] = 'Verdana'            
  label_params['FONT_HEIGHT'] = font_size              
  if hint ~= nil then
     label_params['HINT'] = hint                        
  end

  return AddLabel(NGraf, label_params)
end
Страницы: 1
Наверх