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

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

Страницы: 1
Индикатор средняя по RSI, Некорректно отражается индикатор.
 
Цитата
VPM написал:

А зачем?
Обычно на такое не отвечаю, но просто чтобы не набежала еще толпа желающих просто посотрясать воздух и пофилосовствовать, коих на форуме стала тьма, а не посоветовать что-то в конкретном коде: я вообще RSI не использую. Это простой пример.

Любой индикатор легко считается в скрипте qlua, сделать там же среднюю по значениям индикатора не проблема, вопрос именно в пристыковке средней к индикатору на графике силами кода индикатора.
Индикатор средняя по RSI, Некорректно отражается индикатор.
 
Добрый день!

Пытаюсь написать среднюю скользящую по RSI. Идентификатор на графике есть, но при запуске рисуется прямая.
При этом после установки индикатора со временем постепенно идет прорисовка, но явно не средняя получается (картинка: https://dropmefiles.com/8uQPI )

Индикатор:
Код
Settings=
{
  Name = "ma_rsi_period2",
  period = 10,
  ID_RSI = "SBER_RSI_ID",
  line = 
       {
         { Name = "RSI MA Simple", 
      Color = #ff0000,
           Type = TYPE_LINE,
           Width = 2
         }
       }
}


function Init() 
   t = {}
   start_ind = 0 
   tindex = 0
   lastSMARSI = 0 
    return 1
end 

function OnCalculate(index)
   

   if index>=1 then
      Graph_RSI, Number_RSI, Legend_RSI = getCandlesByIndex(Settings.ID_RSI, 0, index-1, 1)
   else
      return nil
   end
   
   
   if Graph_RSI~=0 then
   
      local Graph_RSI = Graph_RSI[0].close
      
      if Graph_RSI == 0 or Graph_RSI == nil then 
         return nil 
      else
         if start_ind == 0 then start_ind = index end
      end
      
      
         if index < (Settings.period + start_ind) then
            
            if tindex < index then

               table.insert(t, Graph_RSI)
               tindex = index
            end
            
            
            return nil
                        
         else
            
            local sum = 0
            
            if index > tindex then
            
               table.insert(t, Graph_RSI)
               table.remove(t, 1)
               
               for i = 1, #t do
                  sum = sum + tonumber(t[i])
               end
               
               sum = sum + tonumber(Graph_RSI)
               tindex = index
            
               lastSMARSI = sum/Settings.period
               
               return sum/Settings.period
            
            
            end
         
            
            return lastSMARSI
         
         
         end
      
   else
      return nil
   end
   
end

В код пришлось вводить много дополнительных условий и переменных, т.к. в процессе написания выяснилось, что иногда бывает несколько одинаковых index на свечу. Поэтому ввел lastSMARSI которая должна выводиться, если скрипт работает с той же самой свечкой.

Может есть какое-то более простое решение.
Автосохранение таблицы котировок, Сохранение таблицы котировок в qlua
 
Спасибо большое!! Очень помогли!
Автосохранение таблицы котировок, Сохранение таблицы котировок в qlua
 
Добрый день!

Задумался как средствами qlua реализовать скрипт сохранения таблицы котировок в файл (*.txt). На форуме не нашел аналогичных кейсов, хотя, мне кажется, за годы кто-то должен был с подобными вопросами сталкиваться. Какие функции qlua рекомендуете поизучать, чтобы воплотить это в жизнь? На просторах интернета очень мало информации.

Знаю, что в Quik реализован очень хороший вариант вывода таблицы котировок в Excel по DDE. Использую это, макросом запускаю таймер и сохранение.
Но мне необходимо сделать это на сервере, где не будет установлен Excel, поэтому и такая потребность в скрипте.
Страницы: 1
Наверх