VPM (Все сообщения пользователя)

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

Страницы: Пред. 1 ... 9 10 11 12 13 14 15 16 17 18 19 ... 23 След.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Что делает алгоритм:

1) За период находит Мах Мин;
2) Проводится нормировка;
3) Усредняем полученный результат, получаем задержку в 1 бар;
4) Применяем преобразование Фишера  (усиление сигнала на хвостах, перевод к норм. распределению, что позволяет оперировать аппаратом т. вероятности)
5) Компенсация отставания.

Гасит низко частотные колебания, сохраняя при этом высоко частотную компоненту с минимальной задержкой.
Я искал замену стандартному схоластику, работает точнее и с минимальным отставанием.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Добрый день!

Цитата
TGB написал:
Цитата
VPM написал:
скорее это фильтр (detrender),
    Как ни странно, но ваш фильтр это грубая модель учета
Цитата
TGB написал:
пирамидального поведения "толпы" рвущейся за прибылью
::
TGB, Не совсем понимаю, что Вы имеете ввиду?
Вероятно Вы хорошо знакомы с организацией бух. учета, и имеете ввиду модели используемые 1С?

Что это модель - "грубая модель учета пирамидального поведения "толпы" рвущейся за прибылью"?

И зачем ее вообще нужно описывать поведения "толпы"?
У толпы всегда есть вожак (Маркет Мейкер).
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
TGB, Ну вот добрались и до "модели рынка", а все начиналось с безобидной статистической экспрес оценки сделок торговой системы.

Ну давайте сначала, речь идет о преобразовании данных, с применением прямого преобразования Фишера:

Утверждение 1) "Преобразование Фишера, изменяет плотность распределения любой волны таким образом,
что оно приближается к нормальному (гауссову) распределению";
Утверждение 2) Преобразование Фишера, увеличивает идентификацию маловероятного события - “черного лебедя”;

В приведённом примере, торговая стратегия, основана (не на событии) на предсказании возвращения назад к норме (к своей средней),
после выявленного маловероятного события "черного лебедя".

Нету здесь не вероятностной модели рынка, не еще какой либо, скорее это фильтр (detrender), который можно интерпретировать и как стратегию во флате.  
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
P. S.
Скрипт выводит 6 линий:
2 это придельные для наглядности нужно перевести значение на 1.5;
сам ответ функции;
опережающая линия компенсация отставания;
гистограммы зеленая и красная отражают ускорение.
Ниже 0 - медведи, выше 0 -  быки.

Это полноценная торговая стратегия, конечно применять без дополнительного фильтра нужно осторожно.
Функция циклическая сильно зависит от периода оценки.
Я использую как дополнительный фильтр для оценки зон пере(куплено/продано).

Если будут идеи пишите. Удачной торговли.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
nikolz написал:
Оказывается,  выборочное распределение  этой преобразованной переменной следует  нормальному распределению  .
Ну так вот же
Цитата
VPM написал:
"Преобразование Фишера, изменяет плотность распределения любой волны таким образом, что оно приближается к нормальному (гауссову) распределению".
Код
local trasform_fisher=function()--преобразования Фишера (Fisприводятсяher Transform)
--Преобразование Фишера имеет вид: 0.5* (log( (1 + x) / (1 - x) ) )

   local log=math.log
local F={}; F[1] = 0
local start=true
   return function(I,x)

if I == 1 or start then F={}; F = 0; start=false end
x = x and (x>=1 and 0.999 or x 1 and F[I-1] or 0)
local fich = (1-x)~=0 and 0.25*log((1+x)/(1-x)) + 0.5*f1 or 0
F = fich
   return F--fich
end
end
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
nikolz написал:
Можете пояснить, как Вы вычисляете Коэффициент корреляции Пирсона и какое он имеет отношения к цене акций?
Так выше же представлен код?
это полноценный индикатор, сейчас работает у меня, нужно ему прикрутить голову, и все пробуйте.
Там и все есть расчеты, Кроме модуля оценки несущей частоты, но он не нужен.
Цену Лучше брать  медианную или по другому усреднённую,  по умолчанию это СLOSE, на больших  тайм фреймах будет перерисовывать.

Вот голова:

Settings={}
Settings.Name = "1Channel_PDF_Ehlers";
Settings.Depth=600;
Settings.v_t = "C";
Settings.period = 20;
--Settings.transform = 1 --0
--Settings.widhl = 0
Settings.avto_P = 0;
Settings.up=3.0;
Settings.dw=-3.0;
--Settings.up1=1.62;
--Settings.dw1=-1.62;

local f;
function Init()
 
f = Channel_PDF_Ehlers();


   Settings.line={
--{Name = '0',Type = TYPE_DASHDOT, Width = 1, Color = RGB(0, 0, 0) },
--{Name = '+1',Type = TYPE_DASHDOT, Width = 1, Color = RGB(0, 0, 0) },
--{Name = '-1',Type = TYPE_DASHDOT, Width = 1, Color = RGB(0, 0, 0) },
{Name = '+3',Type = TYPE_DASHDOT, Width = 1, Color = RGB(0, 0, 0) },
{Name = '-3',Type = TYPE_DASHDOT, Width = 1, Color = RGB(0, 0, 0) },
{Name = 'Red',Type = TYPE_HISTOGRAM, Width = 1 ,Color = RGB(180, 0, 0) },
{Name = 'Green',Type = TYPE_HISTOGRAM, Width = 1 ,Color = RGB(0,180, 0) },
{Name = 'PDF1',Type = TYPE_DASHDOT, Width = 1 ,Color = RGB(240, 100, 40) },
{Name = 'PDF',Type = TYPE_LINE, Width = 2 ,Color = RGB(180, 200, 240) }
   };
return #Settings.line
end

OnCalcul ate = function (index)
return  f( index, Settings )
end
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Да. если найдется щшибка в коде, напишите,
Скрин шот не получилось вставить ну да ладно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Я же в своей торговой системе применяю этот подход иначе.
Суть, в определении зон перепроданости / перекуплености (вместо стандартного стохастика),
так как данный алгоритм имеет отставание 1-2 бара, и компенсация еще убирает 1 бар.
Фактически "шагаем в ногу со временем"!  :smile:  
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
По просьбам "местных трудящихся",
Цитата
nikolz написал:
И где Вы его применили в своем роботе? Покажите.
Поправил, публикую как есть. подключил у себя :lol:

Это скрипт на стратегию Выведение торговли стратегий от Функций Распределения Вероятности опубликованную Джон Эхлерс  в его  статье, скрипт простой написан мною.
О чем разговор:
Суть стратегии от автора, определение маловероятного события, т.е. выброса цены в зону > 3G or <-3G. В примере приведенным nikolz, это Зарплата директора 450 тысяч.
Это событие является сигналом на совершение сделки.
Так как событие статистически значимое, то нужно ожидать возврата цены к ее среднему значению. В общем и все.
Код
function Cached.Channel_PDF_Ehlers()

   ---- Выведение торговли стратегий от Функций Распределения Вероятности (Джон Эхлерс)
   ---- VPM ©
   
   local log=math.log;
   local floor=math.floor;
   
   local fPeriodDC;
   local ftrasform_fisher;

   local Norm={}
   local Psn={}
   local Price={}
   local HH={} 
   local LL={} 
   local Fich={}
   local Dox={}
   local I1=0;
   local hh,ll=0,0;
   return function( I, FSettings, ds )
      local I=I or 1;
      local ds = ds or nil;
      local FSettings = FSettings or {};
                local v_t = FSettings.v_t or 'C';
      local P = FSettings.period or 20;
      local up = FSettings.up or 3.0;
      local dw = FSettings.dw or -3.0;
      --local up1 = FSettings.up1=1.62;
      --local dw1 = FSettings.dw1=-1.62;
      
      local N = FSettings.N or 8;
      local avto_P = FSettings.avto_P or 0;
      local BaseDepthInBars=FSettings.depth or 0;
      ----------------------------------------
      
      local c0 = Value( I,'C',ds ) or 0;
      local newbar = I>1 and I>I1 or false;
      if I == 1 then 
         
         Price={}; Price[I] = c0;
         HH={}; HH[I] = c0;
              LL={}; LL[I] = c0;
         Norm={}; Norm[I] = 0;
         Psn={}; Psn[I] = 0;
         Fich={}; Fich[I] = 0;
         
         fPeriodDC=Cached.DominantCycle()--Cached.PeriodDC()
         ftrasform_fisher=trasform_fisher()
         I1=0;
      end
      
      --local c1 = I>1 and Value( I-1,'O',ds ) or c0;
      
      local p1 = I>1 and Value( I-1,v_t,ds ) or c0; --Price[I-1]
      local p0 = Value( I,v_t,ds ) or 0;
      Price[I] = p0; --if v_t == '4' then Price[I] = p0 end
      
      ---- avto Period:
      if avto_P == 1 then

         --local transform = FSettings.transform or 1;              --local metod = (FSettings.metod or 1 )
              --local bw_ss = (FSettings.bw_ss or 1 )
              --local pole_ss = (FSettings.pole_ss or 0 )

                        P = fPeriodDC( I, { ['v_t']='M',['period']=P,['N']=N}, ds )
         P = floor( P )
      end
      
      if I>P then  --and newbar 
          hh,ll=Price[I-P],Price[I-P];
         for i=P,1, -1 do
         
               if Price[I-i]>hh then hh=Price[I-i] end
               if Price[I-i]<ll then ll=Price[I-i] end
               
          end
      end
      
      ---- Norm
      local norm1 = I>1 and Norm[I-1] or 0;
      local norm2 = I>2 and Norm[I-2] or norm1;
      local hl=(hh-ll);
      local norm = hl~=0 and (p0-ll)/hl or 0;
      Norm[I] = norm;

      ---- Psn
      local psn1=I>1 and Psn[I-1] or norm;
      local psn=(norm + 2*norm1 + norm2)*0.25;
      Psn[I] = psn;
      
      ---- Fich
      local fich1 = I>1 and Fich[I-1] or psn;
      local fich2 = I>2 and Fich[I-2] or fich1;
      local fich = ftrasform_fisher(I,(psn-0.5)*2 )--0.25*log( (2+psn)/(2-psn) )+ 0.5*fich1
      Fich[I]=fich;
      
      ---- lead
      local lead = 2*fich-fich1;
      -----------------------------
      
      local out1,out = fich1,fich;
      local red,green = nil,nil;
      if out > out1 then
          red,green = nil,out;
         if lead>up then
             red,green = nil,lead;
         end
      elseif out < out1 then
          red,green = out,nil;
         if lead<dw  then
              red,green = lead,nil;
         end
      end
      
      I1=I;
      ------------------------------
      
      local size = ds==nil and Size() or ds:Size() or 0;
      if BaseDepthInBars>0 and size-BaseDepthInBars>0 and I <= size-BaseDepthInBars then return nil,nil end
      
      --message( I ..' '.. tostring(red)..' '..tostring(green)..' '..tostring(out1)..' '..tostring(out) )
      return up,dw,red,green,lead,out
      
   end
end
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
nikolz написал:
И где Вы его применили в своем роботе? Покажите.
Робот звучит гордо! :smile:

Свой подход я публиковал выше,  модульность в написании робота обсуждалась здесь.

Мой подход;
1) Торговая стратегия - это набор правил (на открытие, закрытие и т.д.);
2) Торговая система - это набор торговая стратегий;
3) Робот - это голова, ноги (чтоб можно было убежать вовремя), руки (что бы сделки совершать), в общем полная самостоятельность;

Я пишу подробно что бы можно было изъясняться на одном языке, а не поучаю.

У меня запрограммирована одна токая Торговая стратегия - "Выведение Торговли Стратегий От Функций Распределения Вероятности".
Она очень простая. При на писании допустил концептуальную ошибку, сейчас не пользуюсь - отключил, нужно править.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
nikolz, за приведенные ссылки спасибо, полистаю на досуге.

Касаемо моих замечаний:

1) Знание мои так себе, (последние четверть века занимался другими вещами).
2) Книгу Вам привел потому, что там не только описаны распределения, моменты и много еще чего,
но и то как пользоваться, а главное приводятся запрограммированные примеры (берете код и пробуете, можно даже в квике).
3) Касаемо Вашего примера, нужно вспомнить правило 3 сигм (куда с какой вероятностью попадаю результаты),
ну и конечно, простое среднее здесь применять нельзя, ну про Вы сами накидали ссылок.
4) Ни о каком распределение Фишера речи нет,
я говорю о необходимости подготовки данных прежде чем использовать нормальное распределение,
одним из таких является  - Преобразование Фишера.

"Преобразование Фишера, изменяет плотность распределения любой волны таким образом, что оно приближается к нормальному (гауссову) распределению".
Код
local trasform_fisher=function()--преобразования Фишера (Fisприводятсяher Transform)
--Преобразование Фишера имеет вид: 0.5* (log( (1 + x) / (1 - x) ) )

    local log=math.log
local F={}; F[1] = 0
local start=true
    return function(I,x)

if I == 1 or start then F={}; F[I] = 0; start=false end
x = x and (x>=1 and 0.999 or x<=-1 and (-0.999) or x) or 0
local f1=(I>1 and F[I-1] or 0)
local fich = (1-x)~=0 and 0.25*log((1+x)/(1-x)) + 0.5*f1 or 0
F[I] = fich
    return F[I]--fich
end
end
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
nikolz, я у Вас спрашивал про методы робастного оценивания или  ссылку где посмотреть? Ну да ладно.

Не знаю как  уж там Росстат считает не хочу вдаваться, но Ваш пример некуда не годится,
это распространенное смысловое заблуждение. Вы бы ещё среднею температуру по больнице по считали бы.

Если вкратце, то среднее у нормального распределения ==0,
в Вашем примере расчет простого среднего служит для привидения к такому виду и не для каких других целей.
В трейдинге самое простое привидение считают доходности  р1/р2 - 1, при этом нужно удалить тренд.
Преобразование Фишера любые переменные приводит к такому виду.
Я не хочу азбукой заниматься, вот ссылка John R. Hauser "Numerical Methods for Nonlinear Engineering Models"
с примерами  написанными на луа 5.1, если интересно смотрите можно и поэкспериментировать.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Добрый день!

Можно подвести промежуточный итог, на тему обсуждаемую выше.
Собрал небольшую программу, в основе лежит функция поиска приложенная  Nikolay,  за что ему скажем отдельное спасибо!
Пока не очень разобрался как работает, но работает супер, (а к хорошему привыкаешь быстро :smile: ).

То, для чего и как, много сказано выше, здесь лишь о своей реализации.
Подход: на оси времени графика есть текущее значение цены,
правая сторона от текущее значение цены - это зона прогнозов;
леваявая сторона - это история, определяя период тестирования определяем зону тестирования.

Я в своих подходах, зону тестирования еще делю на две.
1) фон - служит для определения того что происходит на рынке при старте торгового алгоритма; и для разгона алгоритмов использующих историю данных.
2) собственно сам тест то что сообственно обсуждалось выше.

Для прогона теста задаю количество дней тестируемых, сдвигаю индекс на таймфрейме дня, находим начальную дату и время.
(Установил ограничения только внутридневные не больше 60 мин. такова пока особенность ф. поиска).
От общего итератора пока тоже отказался, просто в алгоритм добавил счетчик для сдвига индексов тайм фреймов.
Прогоняем стратегию, результат W/L обрабатываю методом описанным выше получаю экспресс оценку, торговой стратегии,
если необходимо то и торговой системы целиком.
Да добавил визуализацию вывод на график сигналов и параметров RM.

Теперь обрабатывает портфель из бумаг, в общем то и все,
еще раз спасибо Nikolay, и удачной торговли!  
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
nikolz написал:
В результате этого появилась теория и методы робастного оценивания.
Так о что с примером?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Да это согласен можно найти, но ведь речь идет о простом алгоритме в рамках единого итератора с переходом к реальным торгам.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
Nikolay написал:
Отлаживать не так и сложно, если в необходимых местах осуществлять проверки на тип данных, сами данные. Выводит отладочную информацию в лог. Сразу будет видно, где что не так.
Не поверите другой раз не могу лог загрузить из-за  объема после дня работы скрипта. Да тип данных начал добавлять согласен.
Цитата
Nikolay написал:
Как я написал выше - самый надежный, и самый простой вариант - это циклом пройтись от первого или последнего бара, проверяя время каждого бара. Как только оно пересечется с искомым - вот он ваш индекс.
И тут не все благополучно, поджидают  подводные камни, так как время открытия бара разное на разных тф. на клиринге расходится. Уже молчу про выпадающее бары.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
Nikolay написал:
Вот простейшая реализация
Алгоритм мне понравился, нужно привыкнуть и погонять, пока смущает сложность,
Вы сами в самом начале писали про надежность.
Я несколько скриптов бросал с хорошими идеями из-за сложности, поиск ошибок занимает значительное время, теперь все упрощаю, что бы было понятно с первого взгляда.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
Nikolay написал:
Ну так все зависит от задачи. Алгоритм простой. Можно все еще проще сделать. Просто циклом бежать от последнего к первому бару и найти тот, где время входит в бар.
Задачу не очень наверно понятно описываю, попробую по другому.

Так как торговля внутридневная , то анализ делаем дневного бара на истории которую хранит квик.
наименьший день  которую хранит квик будет определять наименьший  тф М1,
так как все тф. меньше дневного входят в него, то прогоняя цену ds[M1]:C(index)  по разным тф. >M1 < D1,
можно оценивать т.входа, т.выхода, стоплосс, такепрофит, оценивать алгоритмы и много чего, с выводом необходимых меток на график.

Как я делал был 1 инструмент, данные читал с графика,
задавал точку входа да и просто циклом пробегал, беря цену закрытия с М1, по свечам допустим Н1, при этом необходимо свечи разных тф синхронизировать(т.е. если если наступил новый час нужно перевести минуту и час)

Писатель с меня еще тот, если что не понятно написал лучше спросите.  
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Понятно, написал и забыл не получится покрупней мере у меня :sad:

А что делать с ценной открытия, это даже не техническая ошибка.
Не хочется таких слов произносить, но другие не находятся - это выглядит как "прямая манипуляция рынком".
Но это уже вопрос к разработчикам?
Как такое возможно?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Проба пера, вот время заказа  os.time({hour = 9, min = 00, sec = 0, day = 14, month = 11, year = 2023})

ответ с 4 тайм фреймах
[Tue Nov 14 15:50:16 2023] Trace: Source:  SPBFUT, BRZ3, 1
[Tue Nov 14 15:50:16 2023] Trace: Source:  SPBFUT, BRZ3, 5
[Tue Nov 14 15:50:16 2023] Trace: Source:  SPBFUT, BRZ3, 120
[Tue Nov 14 15:50:16 2023] Trace: Source:  SPBFUT, BRZ3, 1440
[Tue Nov 14 15:50:16 2023] Info: BRZ3; 1; 65537!
[Tue Nov 14 15:50:16 2023] Info: [65537] 14/11/2023; 9:0:0; o[65537]=83.42; h[65537]=83.43; l[65537]=83.33; c[65537]=83.35
[Tue Nov 14 15:50:16 2023] Info: BRZ3; 5; 65537!
[Tue Nov 14 15:50:16 2023] Info: [65537] 14/11/2023; 9:0:0; o[65537]=83.42; h[65537]=83.43; l[65537]=83.33; c[65537]=83.4
[Tue Nov 14 15:50:16 2023] Info: BRZ3; 120; 5516!
[Tue Nov 14 15:50:16 2023] Info: [5516] 14/11/2023; 10:0:0; o[5516]=83.4; h[5516]=83.42; l[5516]=83.03; c[5516]=83.27
[Tue Nov 14 15:50:16 2023] Info: BRZ3; 1440; 1093!
[Tue Nov 14 15:50:16 2023] Info: [1093] 14/11/2023; 0:0:0; o[1093]=83.43; h[1093]=83.43; l[1093]=82.42; c[1093]=82.82


На минутных отрабатывает, на Н2 идет сбой?
Цена открытия сессии
на D1 14/11/2023; 0:0:0; o[1093]=83.43;
на M1 M5  [65537] 14/11/2023; 9:0:0; o[65537]=83.42;
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
Nikolay написал:
Вот простейшая реализация
Не чего себе простейшая? Прокомментируйте пожалуйста ф. обратного вызова. Не понимаю откуда возникают gthtvtyyst bi, ei ?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Nikolay, Спасибо ушел разбираться.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
В результате этого появилась теория и методы робастного оценивания.
написал: nikolz, Приведите пример.
Цитата
Nikolay написал:
С этим не поспоришь.
Да еще как поспоришь, но речь не об этом. Быть успешным не обязательно быть умным и грамотным :smile:  
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
Nikolay написал:
В результате этого появилась теория и методы робастного оценивания.
Приведите пример.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Добрый день nikolz, Ваше замечание
Цитата
nikolz написал:
Основное из которых то, что на фондовом рынке действует нормальный закон плотности вероятности цены.
по меньший мере не корректно .
Ну что значить "на фондовом рынке действует нормальный закон"?

Нормальный закон распределения наиболее формализован описан в литературе,
Для того чтоб им можно было пользовать в наших целях, делается преобразования (доходности, лог доходности, приращения, преобразование Фишера...)
В данный момент речь идет не про анализ динамики цен, про анализ сделок.
Распределение сделок по времени(Wines/Loss) можно отнести к нормальному закону?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
Nikolay написал:
Есть точка времени, есть массив времен. Все это натуральные числа os.time(ds:T(index)).
Не понял? Найти нужно индекс зная время и дату открытия свечи, а здесь индекс задается в качестве параметра.
Цитата
Nikolay написал:
Двоичный поиск вполне быстро найдет его, надо просто перейти на числовое представление времени (unix time).
А можно пример.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
Nikolay написал:
Ну ее нет, так что надо её написать и забыть.
Например?
Цитата
Nikolay написал:
Что касается математической оценки серии сделок, то это тоже давно все формализовано. Вот, для примера,  https://www.mql5.com/ru/articles/1492
Нет я сейчас не про статистику управляющего хедж-фондом, это я видел и Вашу работу это все супер.
Я про экспресс оценку, опубликована в статье John F. Ehlers "Evaluating TradingSystems", ну а без мат ожидания системы никуда. проще сразу сделать перевод.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Nikolay,  я накидал алгоритм принципиально описав в сообщении 23.10.2023 16:41:34, на текущих данных все пойдет.

Стратегия описанная А. Элдером в его книгах, внутри дневная чтоб можно было получить оценку.
Диверсификация портфеля 5% капитала на инструмент т.е. не более 20 бумаг.
Прислушался к Вашему совету на кидал итератор для тестера, данные получаю через подписку с сервера.
И чего только не натерпелся прогоняя исторические данные за несколько дней.

Алгоритм применил следующий
1) Получаю Индекс на D1
2) Сдвигаю индекс  на количество дней для теста получаю дату начало.
3) на M1 определяю индекс на 0900
4) На внутридневных интервалах получаю цену закрытия М1, те смотрю как распределялась цена на других тайм фреймах, с визуализацией.

Все медленно прогоняю и просматриваю.

Нужно определить цену открытия сессии на 0900 имея перед глазами тайм фрейм H2, и Вот оно 0800 с ценами, так погодите сессия закрыта.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
На выходе любой  стратегии, после совершения сделки, мы  имеем результат Wines/Loss.
Именно его и обрабатываем для оценки показателей торговой системы.
эти данные  так же используются при расчете количества в сделке.
Цитата
Nikolay написал:
Я и не советую никакой AI.
Цитата
Nikolay написал:
либо должно быть самообучение с коротким горизонтом.
Тогда не понял?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Ну если еще обобщить вопрос,
если можно найти параметры свечей по индексу, то должна быть и обратная функция поиска индекса по времени и дате?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
Nikolay написал:
Не очень понятен вопрос. Как получить бар, зная дату и время?
Ну да  Квик хранит свечи в виде массивов данных и разработчики предлагают  чтоб получить свечу с ее данными нужно найти вначале индекс в массиве.
И начинаются пляски с бубнами :smile:
Но часто нужно ответить на вопрос какой была цена в 1200 на такую то дату?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Nikolay,  Собственно поэтому я и пытаюсь более детально описать подход и загвозки связанные с ним.
Цитата
Nikolay написал:
Так что если тестируете, то либо это надо делать часто (не скатившись в переобучение), либо должно быть самообучение с коротким горизонтом.
Вы не поняли, нет никакого обучения не какого AI даже не четкую не применяю, все максимально упрощено. сам алгоритм описан выше.
Подход "система нескольких окон" заключается беру дневную свечу и внутри дня прогоняю меньшие таймфреймы,
к примеру 1 час как цена распределялась за день, таймфрейм к примеру 1 минута внутри одного часа и т.д.

Стратегия входов и выходов это преодоление пороговых значений. Какая здесь может быть подгонка прогоняю 5 дней.
Статистику считаю по сделкам.

Касаемо стационарности я имел ввиду привидение к нормальному распределению входных данных (цены).
Описывать не чего все давно описано. Я лишь говорю про подход.
Нормальное распределение является стационарным?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Суть проблемы.

Вот описан процесс хранения данных Квиком.

Karina Dmitrieva написал:
В папку archive директории QUIK сохраняется информация (исторические данные) обо всех открытых графиках (в имени *.dat файла: класс, название инструмента, таймфрейм).По своему усмотрению Вы можете удалить всю папку archive или же конкретный файл. Но многие пользователи хранят данную информацию, чтобы была возможность просмотреть более дальнюю историю по инструментам, поскольку сам сервер QUIK хранит всего 3000 свечей, а Рабочее место QUIK умеет накапливать локально до 65000 свечей (для каждого инструмента и таймфрейма).Таким образом, при удалении данных о графиках (локально история будет очищена), но при подключении терминала QUIK к серверу и построении графика произойдет перезаказ архивов графиков с сервера (с количеством 3000 свечей + текущая торговая сессия).

Т.е. если, открыт график, "то локально до 65000 свечей (для каждого инструмента и таймфрейма)". можно использовать для анализа в наших целях.
Получить эти свечи можно по индексу массива.

А как их получить цену зная дату и время дате свечи???  :sad:  
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Nikolay,  Рад Вас слышать.

Я маленько не об этом, это пишу в качестве постановки вопроса (проблемы) короче не получается.

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

Если внутридневные стратегии еще куду ни шло, то уже средний срок без бэк - теста, и не туда и не сюда.

Экспресс показатели, ну это в первую очередь
1) мат. ожидание системы (должно быть положительно не важно какое значение но +);
2) Количество сделок (Выигрыш/Проигрыш) для расчета коэффициента процент выигрышных сделок;
3)  Профит / Лосс, для расчета профит фактора.
Я еще считаю оптимальную фракцию и средние показатели  за сделку.
Прошла сделка пересчет.
Для экспресс анализа достаточно первых 3.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Далеко не секрет чтоб успешно торговать, нужна торговая система (набор стратегий), и совсем не важно ручная это торговля или алгоритм.
Собрав торговую систему хотелось бы ее оценить, для этого применяется тестирование на исторических данных.
Для оценки систем используют ряд показателей.
Казалось бы что проще, загрузил, откатил индекс назад  и прокатился по ним с применением стратегий. Квик хранит историю данных.
Но не тут то было :sad:  
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Всем добрый день!

Хочу поднять тему тестирования торговой системы.
Да именно системы а не стратегий.

Так и не понятно, есть ли с кем  на сайте это обсуждать? (активность участников впечатляет!).
Флаги обезличенной сделки в событии OnAllTrade
 
Рынок двигают рыночные заявки! И логично им нести знамя.
Karina Dmitrieva, спасибо.
Проверю свой интерпретатор.
Флаги обезличенной сделки в событии OnAllTrade
 
Кто явился инициатором тому и нести флаг, смысл если вы Вы выставили ордер на покупку и его акцептовали то сделкам на покупку. и обратное.  
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
А что случилось со статистикой на форуме?
Строка  "Сейчас на форуме" вообще пустая , если раньше чуть-чуть приписывала то нынче вообще ничего не отражает.
Таланты!
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Вернулся к проекту - "суперкар", (Фреймворк HackTrade 1.4 для написания торговых роботов от https://github.com/DenisKolodin.)

Изменения, на что следует обратить внимание: Фреймворк написан на lua 5.1, модуль qlua 5.4.1;
Поправим на соответствие. изменений не много.

Но выявилась и концептуальная ошибка, ну скорее недочет.
Так как HackTrade продолжает летать со скоростями в один тик, то и проект смело можно назвать "ракета".

Текущая реализация концептуально выглядит так, код:
Код
dofile("hacktrade.lua") -- основной модуль

function Robot() -- основной функции

      -- 1) (~) Инициализация 
         2) Получение констант
         3) Предварительные расчеты

      while working do -- основной цикл
           
          for i=1,#sec do ----  цикла по бумагам:
                -- Система нескольких окон
                for j=1,#tf do ----  цикла по таймфремам
                     F[i][j]() --парад стратегий
                end

                signal[i] -- Вырабатываем сигнал на сделку
                rm[i]     -- определение риска на сделку
                mm[i]     -- расчет колличества на сделку
                p[i]      -- получаем цену на сделку
                SmartOrder[i]( p[i], q[i] ) -- формируем ордер на сделку
           end
           Trade() -- Вызова функции Trade, для осуществления торговых действий
           pos[i] -- получаем позицию по инструменту
           sleep(950) -- тормозим чтоб в ближним космосе очутиться!
      end
      --Сохраняем
      --Закрываем  
end

Вопрос с модульностью решен, пишем свои стратегии входа,  стратегии выхода, управление позицией, риском, алгоритмы - все независимо!
Собираем Систему (торговую!)

Чего не хватает так это тестера, но об этом отдельно.

Ну и конечно, скажем дружно, огромное, человеческое спасибо автору!
(Фреймворк HackTrade 1.4 для написания торговых роботов от https://github.com/DenisKolodin.)
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Судить о луа я конечно не могу, я им просто пользуюсь, таким какой он есть,
и прислушиваюсь к автору и другим советам, в том числе с форума к тем кто лучше меня разбирается.

Вот например пишет автор:

"Lua предлагает как раз то, для чего С недостаточно хорош:
высокая степень независимости от аппаратного обеспечения,
динамические структуры,
отсутствие избыточности и
легкость тестирования и отладки".

"многие алгоритмы с использованием таблиц становятся до банальности простыми.
Например, мы редко пишем алгоритм поиска в Lua, поскольку таблицы предоставляют прямой доступ к любому типу.

Таблица в Lua — это объект во многих отношениях.
Подобно объектам, у таблиц есть состояние.
Подобно объектам, у таблиц есть идентичность (собственное «я» — self), которая не зависит от ее значений;
Подобно объектам, у таблиц есть жизненный цикл
У объектов есть свои собственные действия. У таблиц также могут быть действия..."

И я не понимаю почему этим не пользоваться в полной мере, да мета таблицы здесь самое сложное,
но то что получаешь на выходе стоит, того чтоб сними один раз разобраться.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Владимир, рад Вас слышать! Без Вас и nikolz, данный форум просто пропадёт :smile:  
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Что касается высказывания "Таблицы в Lua — это не одна из структур данных, — это единственная структура данных.",
это от автора языка.

Ну судите сами, вот пишет автор:

"ГЛАВА 16 Объектно-ориентированное программирование Таблица в Lua — это объект во многих отношениях."

Я видел два примера реализации ООП под нашу задачу и те от одного автора.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Всем добрый день!

nikolz, За предложение помощи спасибо!

Проблемы с терминалом описанные здесь возникли при переводе скриптов на 5.4 (с 5.1 на 5.3 получилось с минимальными затратами по времени),
здесь так не получилось, пришлось разбираться.
Оказалось скрипты которые годами работали "запустил и забыл" (ну к примеру скрип сохранения сделок) нужно проверять на соответствие с 5.4.

Я уже здесь писал, что к программированию имею отношение только в части данного проекта (хобби).
Мои отношения с луа: читаю автора; ищу примеры; встраиваю в свои алгоритмы; думал что можно добавить обсуждение на форуме.

Я не обсуждаю на форуме личные качества участников, я лишь высказываю собственное мнение, в силу собственного понимания, о предмете обсуждения.
Уровни в программировании я тоже не обсуждаю, я в этом ни чего не понимаю, я даже не понимаю то что Вы написали, чем Вы занимаетесь на луа.

Я обсуждаю конкретный проект, "программирование на луа" для целей автоматизации процесса торговли на бирже, который не заканчивается программированием!
И рад единомышленникам или объективной здоровой критике!
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Уважаемый nikolz,
Вы видимо имеете отношение к программированию, но не знакомы с надежностью (Есть такая теория).
Не нужно валить все в одну кучу.
Обо всем и по порядку.
Цитата
nikolz написал:
Терминал сделали, чтобы Вы могли подавать заявки брокеру руками.  И эту функцию он реализует прекрасно.
Именно об этом мое самое первое сообщение на этом форуме. Сломали что работало лет 20. и не могут исправить. Ломать не строить :smile:
Цитата
nikolz написал:
Так как терминал посылает сообщения на сервер и Вы в скрипте формируете эти сообщения, то Вы можете даже организовать DDOS атаку даже из своего скрипта.
Это вообще шедевр :lol:  таланты. Сообщению чтоб попасть на сервер, нужно отвечать определённым требованиям, посланное хоть руками хоть еще чем.
Атаку в подобной реализации вообще не вопрос, достаточно ошибиться в количестве. Но это к вопросу надежности.
Версии лепятся не понятно зачем, а где надежность?
Цитата
nikolz написал:
А уж завалить терминал это Вы можете как два пальца...
Цитата
про это уже писал: VPM написал:
Кто виноват? и Что делать? Вот вопрос.Терминал устанавливают для возможности торговать (в не зависимости от его версии).Пользовательские скрипты используют для автоматизации этого процесса (в не зависимости от языка и версии).И это не сколько не отменяет тот факт, что пользовательский скрип не должен убивать терминал и тем более влиять на работу сервера  ,кем бы и как не был написан.  

nikolz написал:
Вы как и многие  "профи" на этом форуме постоянно ругаете КВИК , а когда понимаете, что это вы на...ли г-но, скромно молчите.


Цитата
nikolz написал:
Увы, LUA дает доступ во внутрь терминала. Поэтому защиту от дурака здесь установить невозможно.
Квик я люблю, а не ругаю (разве немного таланты),  мои сообщения о недочетах замеченных, надеюсь это помогает (так называема обратная связь), это одна из задач данного форума.

"защиту от дурака" должна быть установлена!  
Скрипты писал и буду писать.
К профи не отношусь, здесь их на пальцах одной руки. Да и луа мало кто понимает:
"Таблицы в Lua — это не одна из структур данных, — это единственная структура данных."
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
nikolz,  Ваши посты как всегда актуальны.

Кто виноват? и Что делать? Вот вопрос.

Терминал устанавливают для возможности торговать (в не зависимости от его версии).
Пользовательские скрипты используют для автоматизации этого процесса (в не зависимости от языка и версии).
И это не сколько не отменяет тот факт, что пользовательский скрип не должен убивать терминал и тем более влиять на работу сервера :what: ,
кем бы и как не был написан. :smile:  
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Добрый день!

Дошли руки восстановил работу квик обновился до версии 10.3.и опять в боевом строю!
Вероятно причиной задержки, при получении ответа  терминалом от сервера, являлись скрипты луа при переходе на версию 5.4.
Хотя снес почти все лишнее. Все скрипты нужно проверять на соответсвие с 5.4.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Добрый день Andrey Golik,
Цитата
Andrey Golik написал:
Уточните, пожалуйста, после какого обновления столкнулись с данной проблемой (на какую версию)?
Откатил назад с версии 10.3 на 10.1.2.2 удалил самописные индикаторы из папки, проверил получение данных(обезличенные сделки и 4 класса),
задержка на рынке акций, при вводе в окно ввода заявки, пишет "ожидании ответа сервера" и так до нескольких минут.
После отката чуть улучшилось по времени но все равно работает не нормально.


Цитата
Andrey Golik написал:
После выставления заявки терминал "зависает", то есть становятся недоступны никакие действия с программой?
Нет во время выставления, после исполнения идет очень медленное обновление таблиц о сделке до нескольких минут.
Графики тоже тормозят. (~ 20шт)
Обращался к брокеру не помогли. Брокер "АТОН".
Терминал стоит очень давно обновляется вместе с рекомендациями брокера.
Страницы: Пред. 1 ... 9 10 11 12 13 14 15 16 17 18 19 ... 23 След.
Наверх