индикатор на Lua

Страницы: 1
RSS
индикатор на Lua
 
Индикатор определяет максимум и минимум на заданном периоде и отображает среднее значение.
Алгоритм оптимизировал для ускорения вычислений.
Выкладываю для всех желающих:
Код
Settings = {Name = "*Kijun-sen",kijun_period = 6,}

function OnCalculate(i)
   Hi=H(i) or H1; Li=L(i) or L1; x1=x;
   if i1>i then
      ma=Hi; mi=Li; jma=i; jmi=i;
   end
   if Hi and Li then
      local j=i-Settings.kijun_period; if j<1 then j=1; end
      if j>jma or j>jmi then
         ma=Hi; mi=Li; jma=i; jmi=i;
         while i>j do
            Hi,Li=H(j),L(j)
            if Hi and Hi>ma then ma = Hi jma=j; end
            if Li and Li<mi then  mi =Li jmi=j;end
            j=j+1
         end
      else
         if Hi>ma then ma=Hi; jma=i; end
         if mi>Li then mi=Li; jmi=i; end
      end
      x=(ma + mi)/2;    H1,L1,i1=Hi,Li,i;
   end
return x1
end

function OnChangeSettings()
   i1=0;jma=0; jmi=0; H1=0; L1=0;ma=0;mi=0;
end

function Init()
OnChangeSettings()
Settings.line = {{ Name=Settings.Name, Color=RGB(32,255,128), Type=TYPE_LINE, Width = 2,}}
return #Settings.line  end
это мой вариант модификации этого алгоритма .  
Код
Settings = {Name = "*ind_nk",period = 6,}

function OnCalculate(i)
   Hi=H(i) or H1; Li=L(i) or L1;
   Oi=O(i) or O1; Ci=C(i) or C1;
   if i1>i then
      ma=Hi; mi=Li; jma=i; jmi=i;
   end
   if Hi and Li and i1~=i then

      local j=i-Settings.period; if j<1 then j=1; end
      if j>jma or j>jmi then
         ma=Hi; mi=Li; jma=i; jmi=i;
         while i>j do
            Hi,Li=H(j),L(j)
            if Hi and Hi>ma then ma = Hi jma=j; end
            if Li and Li<mi then  mi =Li jmi=j;end
            j=j+1
         end
      else
         if Hi>ma then ma=Hi; jma=i; end
         if mi>Li then mi=Li; jmi=i;
         end
         if x then
            local z=2*Li-Hi; if Li>x and Ci>Oi then mi=z; jmi=i; end
            z=2*Hi-Li; if x>Hi and Oi>Ci then ma=z; jma=i; end
         end
      end
      if ma and mi then x=(ma + mi)/2; end
      H1,L1,O1,C1,i1=Hi,Li,Oi,Ci,i;
   end
return x
end

function OnChangeSettings()
   i1=0;jma=0; jmi=0; H1=0; L1=0;ma=0;mi=0;
end

function Init()
OnChangeSettings()
Settings.line = {{ Name=Settings.Name, Color=RGB(255,255,255), Type=TYPE_LINE, Width = 2,}}
return #Settings.line  end
Если нравится, можете сказать "спасибо".
Страницы: 1
Читают тему
Наверх