autotrade
autotrade личный блог
28 марта 2019, 23:29

STATDIVVOL индикатор статистического отклонения с учетом объема

индикатор статистического отклонения с учетом объема
STATDIVVOL индикатор статистического отклонения с учетом объема

Settings={
Name="STATDIVVOL",
period=10,
  line=
  {
    {
      Name="curve",
      Color=RGB(0,0,255),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="line",
      Color=RGB(255,0,0),
      Type=TYPE_LINE,
      Width=1
    }
  } 
}

function Init()
  return 2
end

function OnCalculate(index)
  local sum1=0
  local sum2=0  
  if index < Settings.period then
    return nil, nil
  else   	
    for i=index-Settings.period+1, index do  
      if C(i) > O(i) then
        sum1 = sum1 + (C(i) - O(i))*V(i)
        sum2 = sum2 + (C(i) - O(i))*V(i)
      else
        sum2 = sum2 + (O(i) - C(i))*V(i)
      end  
    end 
    sum1 = sum1/sum2    
  end
  
  return sum1, 0.5

end

с весовыми коэффициентами
STATDIVVOL индикатор статистического отклонения с учетом объема



Settings={
Name="STATDIVVOL",
period=10,
  line=
  {
    {
      Name="curve",
      Color=RGB(0,0,255),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="line",
      Color=RGB(255,0,0),
      Type=TYPE_LINE,
      Width=1
    }
  } 
}

function Init()
  return 2
end

function OnCalculate(index)
  local sum1=0
  local sum2=0  
  local j=0    
  if index < Settings.period then
    return nil, nil
  else   	
    for i=index-Settings.period+1, index do  
	  j = j + 1 
      if C(i) > O(i) then
        sum1 = sum1 + (C(i) - O(i))*V(i)*j
        sum2 = sum2 + (C(i) - O(i))*V(i)*j
      else
        sum2 = sum2 + (O(i) - C(i))*V(i)*j
      end  
    end 
    sum1 = sum1/sum2 
  end
  
  return sum1, 0.5

end
с весовыми коэффициентами но без объемов
STATDIVVOL индикатор статистического отклонения с учетом объема


Settings={
Name="STATDIVVOL",
period=10,
  line=
  {
    {
      Name="curve",
      Color=RGB(0,0,255),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="line",
      Color=RGB(255,0,0),
      Type=TYPE_LINE,
      Width=1
    }
  } 
}

function Init()
  return 2
end

function OnCalculate(index)
  local sum1=0
  local sum2=0  
  local j=0    
  if index < Settings.period then
    return nil, nil
  else   	
    for i=index-Settings.period+1, index do  
	  j = j + 1 
      if C(i) > O(i) then
        sum1 = sum1 + (C(i) - O(i))*j--*V(i)*j
        sum2 = sum2 + (C(i) - O(i))*j--*V(i)*j
      else
        sum2 = sum2 + (O(i) - C(i))*j--V(i)*j
      end  
    end 
    sum1 = sum1/sum2 
  end
  
  return sum1, 0.5

end


12 Комментариев
  • Дмитрий Новиков
    29 марта 2019, 00:00
    Вы такие программы пишите. Неужели сложно засунуть эти ряды в эксель и посмотреть. Выше 0,5 купил, где то закрыл и выложить тест. 
  • Андрей К
    29 марта 2019, 01:57
    тут наверное надо было чуть по другому. Есть такой сленг: взвесить объемом.
    Вы наверное примерно то же самое хотели, но чуть формула не так вышла. То есть найти связь между отклонением и приложенным объемом.

    Можно глянут формулу vwap и применить ее сюда же с небольшими доделками
      • Андрей К
        29 марта 2019, 14:53
        autotrade.ru, 
        у меня как раз взвешанный по объему
        не соглашусь, чтобы взвесить по объему, нужно еще разделить на суммарный объем (сумма объемов до i-ой свечи)
  • Френк френков
    29 марта 2019, 04:02
    ты берёшь в луа вставляешь.
    имя на графике задаешь.где этот параметр.
    данные с графика в программу.
    график на рисунке такой.
      • Френк френков
        05 апреля 2019, 00:42
        autotrade.ru, https://smart-lab.ru/blog/531821.php
        вот автор турбо паскаль написал с двумя роботами программу и выложил настройку .
        ты можешь так?
  • Игорь Шепелев
    30 марта 2019, 12:02
    А где покупать и продавать?

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

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