autotrade
autotrade личный блог
16 ноября 2023, 23:26

Новый трендовый индикатор с сигналами

Новый трендовый индикатор с сигналами
свободный доступ к исходникам в ТК
Новый трендовый индикатор с сигналами
Новый трендовый индикатор с сигналами

--[[
SMA list template v1
--]]
Settings=              
        {                          
            Name = "SMA_list_magic_template_v1",   -- indicator name
			sign=0,			
            ln1=10,               -- period		
			ln2=20,               -- period					
			ln3=30,               -- period		
            ln4=40,               -- period		
			ln5=50,               -- period					
			ln6=60,               -- period				
            line=                                     
                {                               
                    {  
                        Name = "SMA_TEMPL",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0,0,0)
                    },
                    {  
                        Name = "SMA_TEMPL",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(255,0,0)
                    },
					{  
                        Name = "cur3",
                        Type =TYPE_TRIANGLE_DOWN,
                        Width = 5,
                        Color = RGB(255, 0, 0)
                    },
					{  
                        Name = "cur4",
                        Type =TYPE_TRIANGLE_UP,
                        Width = 5,
                        Color = RGB(0, 0, 255)
                    }	
                }
       }


function Init()
  sma = {{},{}}
  sum = {{},{}}
  ln = {}
  n = {}
  sumln = 0
  m = {}
  return 4
end

function GetSMA(index, num)

  if index == 1 then 
    if num == 1 then 
      ln[num] = Settings.ln1 		
	end 
    if num == 2 then 	
      ln[num] = Settings.ln2
	end 
	if num == 3 then 
      ln[num] = Settings.ln3     
	end 
    if num == 4 then 
      ln[num] = Settings.ln4 
	end 
    if num == 5 then 	
      ln[num] = Settings.ln5
	end 
	if num == 6 then 
      ln[num] = Settings.ln6     
	end 		
	sumln = sumln + ln[num]
    
	sum[num] = {}
    sum[num][index] = O(index)
    n[num]=1
  else   
    if index > ln[num] then     
      sum[num][index] = sum[num][index-1] + O(index)
	  sum[num][index] = sum[num][index] - O(index-ln[num])
    else 
      sum[num][index] = sum[num][index-1] + O(index)
      n[num] = n[num] + 1	
    end 
  end 

  
  if n[num] ~= 0 then 
    if num == 1 then 
      sma[index] = {} 
	end   
    sma[index][num] = sum[num][index]/n[num]
  end  

  return sma[index][num]
  
end

function GetMagic(index, num)

  res = 0
  val = 0
  cnt = 3+num
  if index > ln[num] then 
    val = sma[index][num]
    for i = 1, cnt do  
	  val = val + (O(index) - O(index-ln[num]+i))/ln[num]
      if O(index) >= val or val >= sma[index][num] then 
        res = res + (ln[num]/sumln)*(i/cnt) 	  
	  end 
      if O(index) < val or val < sma[index][num] then 
        res = res - (ln[num]/sumln)*(i/cnt) 	  
	  end 	  
	end   
  end 
   
  return res
end

function OnCalculate(index)
  
  GetSMA(index, 1)
  GetSMA(index, 2)
  GetSMA(index, 3)
  GetSMA(index, 4)
  GetSMA(index, 5)
  GetSMA(index, 6)  
  
  m[index] = GetMagic(index, 1)
  m[index] = m[index] + GetMagic(index, 2)
  m[index] = m[index] + GetMagic(index, 3)
  m[index] = m[index] + GetMagic(index, 4)
  m[index] = m[index] + GetMagic(index, 5)
  m[index] = m[index] + GetMagic(index, 6)
  
  if index == Size() then   
    if Settings.sign == 1 then 
      for i = 2, Size() do 
	    if m[i] ~= nil and m[i-1] ~= nil then 
	      if 0 < m[i] and 0 >= m[i-1] then
	        SetValue(i, 4, O(i))	
	      else	  
	       if 0 > m[i] and 0 <= m[i-1] then
	         SetValue(i, 3, O(i))		
	       else
	         SetValue(i, 3, nil)	
	         SetValue(i, 4, nil)	
	       end 	  
	      end 
	    end 
      end 
    end;
  end;  
  
  if Settings.sign == 0 then   
    return 0, m[index]
  end 

end

17 Комментариев
  • Главком Главком
    16 ноября 2023, 23:28
    будет сливать во флете
  • Андрей
    17 ноября 2023, 01:49
    А, почему SMA, а не WMA?
  • nicknh
    17 ноября 2023, 08:25

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

    Представьте, что на графике 60 тыс. бар.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн