Е.Мацина: Как построить свою торговую систему

  • Автор темы mehanizator1
  • Дата начала

DQ_Still

New member
Точка пересечения индикатора и цены, служащая для вычисления периода, годится в качестве исторических данных? А набор локальных максимумов/минимумов, которые также нужны для вычисления индикатора?
экстремум - это ведь максимальное значение за определенный период. не глобальный же максимум используется?
для вычисления индикатора на первом баре нужна цена закрытия бара и ценовое окно (К), для вычисления индикатора на втором и всех последующих барах нужны предыдущие значения цены и индикатора и новая цена закрытия. И ВСЕ.
 
этот рисунок полностью объясняет работу NRTR

Схема работы NRTR. Индикатор всегда находится на постоянном удалении (размер скользящего фильтра К) от достигнутых экстремумов цен. На восходящем тренде Н1 и Н2 (Н3 не используется в расчетах, т.к. он ниже предыдущего максимума). С момента пересечения ценами индикатора (красная точка), начинается новый отсчет противоположного тренда. Теперь индикатор выше на величину скользящего фильтра от каждого нового минимума цен (L3,L4,L5 и т.д.) (с) konkop
как написать такой индикатор в Мете?
 

mehanizator1

New member
насколько я знаком с метой, там невозможно написать рекурсивный алгоритм :) это была одна из причин, по которой я перешел на ами.

описанный индикатор был всегда мне известен как "скользящий стоп" :)
 
насколько я знаком с метой, там невозможно написать рекурсивный алгоритм :) это была одна из причин, по которой я перешел на ами.

описанный индикатор был всегда мне известен как "скользящий стоп" :)
вроде, на первый взгляд алгоритм так прост..
Индикатор показывает цену, если ее изменение на текущем баре больше/меньше определенного коэффициента, фильтрующего "шум". Неужели в мете это формализовать не получится?
 

DQ_Still

New member
насколько я знаком с метой, там невозможно написать рекурсивный алгоритм :) это была одна из причин, по которой я перешел на ами.

описанный индикатор был всегда мне известен как "скользящий стоп" :)
алгоритм NRTR (не рекурсивный алгоритм:), а именно NRTR), настолько прост, что, уверен, его можно написать в любой программе))
на паскале третьего велслаба это выглядит так:

hprice := 0.0;
lprice := 0.0;

for Bar := 10 to BarCount - 1 do
begin
---If trend >= 0 then
---begin
------If PriceClose(bar) > hprice then hprice := PriceClose(bar);
------nrtr := hprice*(1 - K*0.01);
------If PriceClose(bar) <= nrtr then
------begin
--------trend := -1;
--------lprice := PriceClose(bar);
--------nrtr := lprice*(1 + K*0.01);
------end;
---end;

---If trend <= 0 then
---begin
------If PriceClose(bar) < lprice then lprice := PriceClose(bar);
------nrtr := lprice*(1 + K*0.01);
------If PriceClose(bar) >= nrtr then
------begin
--------trend := 1;
--------hprice := PriceClose(bar);
--------nrtr := hprice*(1 - K*0.01);
------end;
---end;
end;

Ценовое окно К здесь задается в %
 

DQ_Still

New member
алгоритм NRTR рекурсивен. ваше непонимание того, что такое рекурсия, не делает алгоритм NRTR нерекурсивным.
я привел программный код NRTR
будьте добры, укажите в коде хотя бы элементы рекурсивного алгоритма))

p.s. у меня два варианта, Александр - либо ВЫ не понимаете что такое рекурсия)), либо вы не потрудились разобраться в линейном алгоритме NRTR))
 

Cinoptik

New member
Если по простому, то при рекурсии значение функции F на i-ом шаге равно функции от значения функции F на i-1 шаге.
Простой пример - факториал числа i! = i * (i-1)!
ну в принципе моё интуитвное понимание не сильно отличается, зато могу теперь выразиться не на пальцах. :)спс.
 

HiTrader

New member
я привел программный код NRTR
будьте добры, укажите в коде хотя бы элементы рекурсивного алгоритма))
В программировании рекурсия — вызов функции (процедуры) из неё же самой, непосредственно (простая рекурсия) или через другие функции (сложная рекурсия), например, функция A вызывает функцию B, а функция B — функцию A. Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.

Формула Nick Rypock Moving Average (NRMA) - стандартная формула ЕМА с дополнительным коэффициентом к фактору сглаживания:

NRMA = NRMA(-1) + NR_ratio*F*(Close – NRMA(-1)), где

F = 2/(1+n) – фактор сглаживания ЕМА,

n – минимальный период сглаживания ЕМА,

NRMA(-1) – предыдущее значение NRMA,

NR_ratio – коэффициент к фактору сглаживания на основе NRTR.
 

DQ_Still

New member
В программировании рекурсия — вызов функции (процедуры) из неё же самой, непосредственно (простая рекурсия) или через другие функции (сложная рекурсия), например, функция A вызывает функцию B, а функция B — функцию A. Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.

Формула Nick Rypock Moving Average (NRMA) - стандартная формула ЕМА с дополнительным коэффициентом к фактору сглаживания:

NRMA = NRMA(-1) + NR_ratio*F*(Close – NRMA(-1)), где

F = 2/(1+n) – фактор сглаживания ЕМА,

n – минимальный период сглаживания ЕМА,

NRMA(-1) – предыдущее значение NRMA,

NR_ratio – коэффициент к фактору сглаживания на основе NRTR.
Эдуард, что такое рекурсия (особенно в программировании:)) я знаю прекрасно))
если ты почитаешь внимательно предыдущие мои посты, то увидишь, что я говорю про NRTR, а не про NRMA))
..а вообще, я удивлен - ты же программист, должен код "с листа" читать - посмотри тот код, который я привел, где там EMA? где сглаживание?))
жду ответа))

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

HiTrader

New member
..а вообще, я удивлен - ты же программист, должен код "с листа" читать - посмотри тот код, который я привел, где там EMA? где сглаживание?))
жду ответа))

p.s. кстати, это рабочий код, только без торговых функций, которые приделать очень легко
не хватает только задания переменных, совсем уж лень было приводить
можешь протестировать эту систему, уверяю, будешь очень удивлен результатами - главное К подобрать под характер инструмента)))
Да ладно, не удивляйся ты так :)
Код влом было смотреть, сейчас почитал (умею кстати не только с листа, но и на слух и ощупь читать ))) - да, нет в нем ЕМА и вызова функции из самой себя. Видимо путаница началась из-за NRMA.
 

DQ_Still

New member
Да ладно, не удивляйся ты так :)
Код влом было смотреть, сейчас почитал - да, нет в нем ЕМА и вызова функции из самой себя. Видимо путаница началась из-за NRMA.
аа..
где в текущем обсуждении ты увидел NRMA? )))

..и вообще! - я один что ли внимательно читаю что пишут другие???
а то у меня очень стойкое такое ощущение появляется!)))
 

HiTrader

New member
аа..
где в текущем обсуждении ты увидел NRMA? )))

..и вообще! - я один что ли внимательно читаю что пишут другие???
а то у меня очень стойкое такое ощущение появляется!)))
Вот эта ссылка про нрма сбила с толку, я почему то решил, что нртр и нрма как-то связаны.
полный текст http://konkop.narod.ru/nrma.htm
И должен же хотя бы один кто-нибудь внимательно читать, что пишут другие. В этот раз была твоя очередь :)
 

Khan

New member
для вычисления индикатора на первом баре нужна цена закрытия бара и ценовое окно (К), для вычисления индикатора на втором и всех последующих барах нужны предыдущие значения цены и индикатора и новая цена закрытия. И ВСЕ.
Ну, это немного не так. Для вычисления индикатора на текущем баре нужна цена lprice или hprice (судя по программе). А эта цена является максимумом/минимумом, случившимся некоторое время назад (не обязательно на предыдущем баре). Это как раз и есть история. :)

А выделенное ИМХО и есть рекурсивный алгоритм. :)
 

DQ_Still

New member
Ну, это немного не так. Для вычисления индикатора на текущем баре нужна цена lprice или hprice (судя по программе). А эта цена является максимумом/минимумом, случившимся некоторое время назад (не обязательно на предыдущем баре). Это как раз и есть история. :)
ну дак мы же давно уже выяснили, что даже цена закрытия бара - это история :)) В этом смысле я не спорю, исторические данные используются))
А выделенное ИМХО и есть рекурсивный алгоритм. :)
тогда, следуя вашей логике, и построение ценового графика инструмента идет по рекурсивному алгоритму))
и вообще, любые цепочки связанных событий подчиняются рекурсивному алгоритму))
а линейного алгоритма не существует вообще, ну у нас на форуме в этой ветке, по крайней мере, его точно не существует:)))
 

Khan

New member
тогда, следуя вашей логике, и построение ценового графика инструмента идет по рекурсивному алгоритму))
и вообще, любые цепочки связанных событий подчиняются рекурсивному алгоритму))
а линейного алгоритма не существует вообще, ну у нас на форуме в этой ветке, по крайней мере, его точно не существует:)))
Если NRTR (i) = f { NRTR (i-1) } (из вашего поста) не рекурсия, то поясните, плиз, ваше определение рекурсии.
 

DQ_Still

New member
... определение рекурсии.
определение рекурсии тут уж два раза звучало))
не буду повторяться))
Если NRTR (i) = f { NRTR (i-1) } (из вашего поста) ...
никогда я такого не постил!)))
NRTR(i) = f ( K, Price(i))
NRTR(i-1) = f (K, Price(i-1)) и т.д.
где Price(i) - ценовые данные - цена закрытия и hprice и lprice

NRTR не вычисляется из самого себя, поэтому тут нет рекурсии
 

Khan

New member
никогда я такого не постил!)))
NRTR(i) = f ( K, Price(i))
NRTR(i-1) = f (K, Price(i-1)) и т.д.
где Price(i) - ценовые данные - цена закрытия и hprice и lprice

NRTR не вычисляется из самого себя, поэтому тут нет рекурсии
В моем посте немного выше идет цитирование вашего раннего поста, в котором толстым выделено, что для вычисления индикатора нужно значение предыдущего индикатора. Так что писали. :)

Кстати, параметры lprice и hprice зависят от значений предыдущих NRTR (вернее от взаимного расположения цен и индикатора), что видно из вашей программы, если взять, например, текст в первых begin...end скобках.
 
Your email address will not be publicly visible. We will only use it to contact you to confirm your post.
Сверху