Александр (Все сообщения пользователя)

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

Страницы: 1
Таблица для отслеживания состояния кода, Создание таблицы, последнее значение которой будет определять ход процесса
 
Здравствуйте.
Уважаемые форумчане, необходима ваша помощь.
Цель данного кода, найти момент касания определенной линии указанной в таблице t_Lev. Для отслеживания данного момента необходимо применить таблицу t_Sys, которая имеет три значения: 1-коснулись нижней линии; 2- не коснулись ни одной линии; 3-коснулись верхней линии. Нужна именно таблица, что бы знать какая линия была достигнута до перехода в состояние 2, это важно.
Условие касание сейчас выставлены заведомо невыполнимые и при этом код не возвращает линии, даже первые значения.
Код
function Init()   f_LEVEL= LEVEL()
   return #Settings.line
end

function OnCalculate(Index)
local S2Down, S1Down, L1Up, L2Up = f_LEVEL(Index)
   return S2Down, S1Down, L1Up, L2Up
end

function LEVEL()
   t_Sys={}
   t_Sys[1]=3
   t_Sys[2]=2
return function (I)
local S2Down, S1Down, L1Up, L2Up = nil, nil, nil, nil

if I>2 then
   if t_Sys[#t_Sys]==3 then
      S2Down, S1Down, L1Up, L2Up = nil, nil, nil, nil
--      t_Sys[#t_Sys+1]=2
   end

   if t_Sys[#t_Sys]==2 then --пока касание не произошло
      local t_Lev=LINE(I)
      S2Down, S1Down, L1Up, L2Up = t_Lev[1], t_Lev[2], t_Lev[3], t_Lev[4]

      if H(I)>=t_Lev[#t_Lev] then --произошло касание верхней линии
         t_Sys[#t_Sys+1]=3
      end
      if L(I)<=t_Lev[1] then
      t_Sys[#t_Sys+1]=1; --произошло касание нижней линии
      end
   end

   if t_Sys[#t_Sys]==1 then
      S2Down, S1Down, L1Up, L2Up = nil, nil, nil, nil
--      t_Sys_W[#t_Sys_W+1]=2
   end
end
return S2Down, S1Down, L1Up, L2Up
end
end

function LINE(I)
local t_Lev={}
if I>2 then
if t_Sys[#t_Sys-1]==3 then
   for i=1, 2 do
      t_Lev[i]=C(I-i)*0.78
      t_Lev[i+2]=C(I-i)*1.22
   end
end

if t_Sys[#t_Sys-1]==1 then
   for i=1, 2 do
      t_Lev[i]=C(I-i)*0.78
      t_Lev[i+2]=C(I-i)*1.22
   end
end

if H(I)>=t_Lev[#t_Lev] then  -- здесь сравнение указанно как еще один вариант
--   t_Sys[#t_Sys+1]=3
end
if L(I)<=t_Lev[1] then
--   t_Sys[#t_Sys+1]=1;
end
end
return t_Lev
end
Функция фракталы
 
Спасибо Вам, за вашу работу. Полагаю со временем я разберусь в нюансах этого кода. Но я хотел бы уточнить все-таки предыдущие вопросы и наличие простых способов решения работы с таблицами и массивами. У меня возникают сложности не только с анализом фракталов, а так же нахождение предыдущих значений свечей и введение их в отдельную таблицу. Это самый простой пример для наглядности. Если Вы затрудняетесь ответить, то подскажите, где можно посмотреть, помимо учебника  Lua Р. Иерузалимски. За ранее благодарю
Функция фракталы
 
Здравствуйте Сергей. Я не много изменил Ваш код. Прошу прощения, только начинаю программировать. И по всей видимости не понимаю логики процесса.
Задумывалось следующее, что по мере нахождения фрактала он будет помещаться в последнею строчку таблицы определенную для него Frac_H_tmp, а так же индекс свечи Frac_HInd-tmp. Но программа возвращает значение High последней свечи фрактала в терминале. Значит ли это, что при выполнении функции SetValue, таблицы Frac_H_tmp и Frac_HInd-tmp полностью сформированы? В них все значения фрактальных свечей  или только одно значение последнего фрактала? Возможно ли найти в таблице 2 фрактала, последний меньше предыдущего и между ними более 10 свечей, не прибегая к обратному циклу for?

Код
function FRACTALS() --Fractals ("FRACTALS")
   local H_tmp={}
   local L_tmp={}
   local Frac_H_tmp={}   --запоминаем значения High свечи
   local Frac_HInd-tmp={}   --запоминаем индекс свечи
return function (I, Fsettings, ds)
local Fsettings=(Fsettings or {})
H_tmp[I]=Value(I,"High",ds)
L_tmp[I]=Value(I,"Low",ds)
if I>=5 then
   local S = I-2
   local val_h=math.max(unpack(H_tmp,I-4,I))
   local val_l=math.min(unpack(L_tmp,I-4,I))
   local L = Value(S,"Low",ds)
   local H = Value(S,"High",ds)
   if (val_h == H) and (val_h >0) then
      if ds then return S,S else
      Frac_H_tmp[#Frac_H_tmp]=val_h
      Frac_HIn-tmp[#Frac_HInd-tmp]=S
      SetValue(S, 2, Frac_H_tmp[#Frac_H_tmp])
      end
   end
end
Различаются графики в QUIK и экспорт с Финама
 

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

Человеческая мысль безгранична и дает совершенно неожиданные результаты. Вы создали мощнейший инструмент для технического анализа, но все еще встречающимися недоработками и это понятно, Рим не за один день строился. Знаю энтузиаста, который уже сейчас, на основе 10 минутного графика котировок Финама, отображает свечи вышестоящих графиков в режиме реального времени. Предполагаю, что он не один такой и во что это выльется не известно. Не упустите возможность быть лучшими.

Теперь что касается высказываний. Уважаемый Андрей, по существу, от Вас ничего не услышал и по высказанному смею предположить, что про синхронизацию серверов я знаю по больше Вас. И если Вы не являетесь как минимум кандидатом хоть каких-нибудь наук или просто хорошим специалистом в любой сопутствующей области, то как говорится "наш звонок очень ценен для нас, дождитесь ответа оператора"

Уважаемый Новичок, поймите меня неправильно. Реагировать как Вам кажется на недостойные высказывания не по существу (читать личное мнение) человека в интернете (читать анонимно) полагаю глупо. А оскорблять анонимно, считаю подло.

PS. Прошу прощения за
длину комментария. Что-то накипело.
Различаются графики в QUIK и экспорт с Финама
 
Обновленная версия НЕ устранила:
1. Проблему изменения объема задним числом
2. Не совпадения цены открытия на 10 мин и дневном графике.
3. По поводу фильтрации по времени. Вы простите, но не вижу сложности при включенном фильтре просто брать значения из нижестоящего графика и помещать в текущий.

Хотелось бы конечно просто взять и начать пользоваться вашим продуктом, но постоянно натыкаюсь на какие то мелкие недоработки. И ведь они не первый год. Лично меня не интересуют внебиржевые свечи, так как они не отражают мнения большинства участников рынка и не могут показывать объективного согласия между продавцами и покупателями.
Вы безусловно проделали колоссальную работу, но позвольте нам, вашим клиентам самим отображать информацию так как нам удобней. Полагаю, что от подобных изменений, выиграем мы все.
Различаются графики в QUIK и экспорт с Финама
 
Два нижних и один верхний (слева) один и тот же день и терминал. Разница лишь в том что два нижних, это открытие и закрытия 10 мин графика с включенным фильтром (09:59:59-18:39:59). Верхний слева это дневной график. Котировки Финама, дневного графика  показали значения открытия  свечи вашего 10 мин. графика:
20190208,000000,209.9900000,211.9300000,208.7000000,210.4300000,51480680
Возможно удалить  из дневного графика значения последних 10 минут вне биржевой торговли?
Значение объемов в пятницу вечером одно, в понедельник утром значения предыдущей свечи уже другое.
Различаются графики в QUIK и экспорт с Финама
 
А вот и скриншоты
Различаются графики в QUIK и экспорт с Финама
 
Как объяснить разницу показаний свечи  между показаниями дневного и 10 минутного графика внутри самого терминала (фильтр по времени установлен везде одинаковый или же был полностью выключен). Какой информации верить? Так же разница наблюдается и при скачивании котировок (в данном случае котировки совпадают с показаниями терминала 10 мин графика). По разному действует фильтр по времени. Если на 10 минутном он отсекает последнюю, внебиржевую свечу, то на дневном он ни как не реагирует. По какой причине изменяется объем, задним числом и возможно это устранить?[img]file:///C:/Users/ATolkushkin/Desktop/Lua/123.jpg[/img]
Страницы: 1
Наверх