Индикатор уровней High, Low определенной свечи определенного таймфрейма

Страницы: 1
RSS
Индикатор уровней High, Low определенной свечи определенного таймфрейма
 
Прошу помочь в написании индикатора горизонтальной линии уровня Open определенной свечи на примере кода:
Код
Settings =
{
  Name = "*line",
  line =
  {
    {
      Name = "line",
      Color = RGB(140, 140, 140),  
      Type = TYPE_LINE  
    }
  }
}

function Init()
  return 1
end

function OnCalculate(index)
  if (T(index).hour == 16) and (T(index).min == 30) then
    return O(index)  
  end
end
Согласно этому коду линия открытия свечи 16:30 соединяется кривой линией с открытием свечи 16:30 следующего дня.

Мне же требуется прямая горизонтальная линия до конца дня.
Пример:

Код примера:
Код
Settings=
{
   Name="*DayOpenPrice",
   line =
   {
      {
         Name = "DayOpenPrice_line",
         Color = RGB(0,0,255),
         Type = TYPE_LINE,
         Width = 2
      }
   }
}

local curDayOpenPrice = nil
local lastSize = 0

function Init()
   return 1
end

function GetCandleDate(ind)  -- Получить полную дату свечи по индексу ind
   local dt = T(ind)
   local candleDate = 0
   if dt then
      candleDate = (tonumber(dt.year) or 0) * 10000               -- 20230000
      candleDate = candleDate + (tonumber(dt.month) or 0) * 100   -- 20230700
      candleDate = candleDate + (tonumber(dt.day) or 0)           -- 20230728
   end
   return candleDate
end

function OnCalculate(index)
   if index == 0 then
      return nil
   end
   
   if index == (lastSize-1) then     -- Для проверки не каждый тик, а только при появлении новой свечи
      return nil
   else
      lastSize = Size()        -- Запомнить текущее количество свечей
   
      local curDate = GetCandleDate(index)       -- Дата текущей свечи
      local lastDate = GetCandleDate(index - 1)  -- Дата предыдущей свечи
      
      if curDate > lastDate then        -- Если дата на текущей свече больше даты на предыдущей (т.е. сменилась дата - начался новый торговый день)
         curDayOpenPrice = O(index)    -- Сохранить данные цены открытия текущей свечи для отрисовки на графике
      end
   end
   return curDayOpenPrice
end
 
вместо этого:
Код
function OnCalculate(index)
  if (T(index).hour == 16) and (T(index).min == 30) then
    return O(index)  
  end
end
попробуйте так:
Код
function OnCalculate(index) 
local t=T(index);
 if (t.hour == 16) and (t.min == 30) and (t.sec==00) then  x=O(index)  end
return x
end
 
Цитата
nikolz написал:
вместо этого:
Код
   function   OnCalculate (index)
   if  (T(index).hour  =  =   16 )  and  (T(index).min  =  =   30 )  then 
     return  O(index)  
   end 
 end   
попробуйте так:
Код
   function   OnCalculate (index) 
 local  t = T(index);
  if  (t.hour  =  =   16 )  and  (t.min  =  =   30 )  and  (t.sec =  =  00 )  then   x = O(index)   end 
 return  x
 end 
  
Спасибо! Работает!  
Страницы: 1
Читают тему
Наверх