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

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

DQ_Still

New member
В моем посте немного выше идет цитирование вашего раннего поста, в котором толстым выделено, что для вычисления индикатора нужно значение предыдущего индикатора. Так что писали. :)
да, нужен, для сравнения, НО! не NRTR(i) c NRTR(i-1) сравнивается, а цена закрытия))
Так что не писал. :)
 

DQ_Still

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

DQ_Still

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

не понял только над чем
 

mehanizator1

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

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

DQ_Still

New member
где можно посмотреть? на предыдущий странице есть только код, в котором нртр вычисляется через рекурсивные переменные lprice и hprice. на самом деле, было бы очень интересно увидеть формулу скользящего стопа, обходящегося без рекурсии. в свое время невозможность реализации подобной формулы на тупом нерекурсивном языке метастока спогвигла меня на переход в амиброкер.
о! уже рекурсивные переменные появились))
функции, слава Богу, кончились))

кстати что такое рекурсивная переменная? - первый раз слышу:))


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

...даже знаю что ответите на первый вопрос))
отвечаю сразу:
нет - это не аргументы рекурсивной функции)
 

DQ_Still

New member
решил закрыть вопрос о рекурсии в алгоритме NRTR

подробно разберем, как он работает
другого выхода не вижу))

у нас есть ценовой ряд, составленный из цен закрытий баров Р1, Р2 и т.д. до текущего бара PN
есть переменные
trend (t для краткости)
hprice (h для краткости)
lprice не берем, т.к. рассмотрим на примере лонгов
nrtr - собственно сам индикатор
К -ценовое окно, константа, в %

начинаем

все переменные обнулены
рассмотрим только для лонгов t>0

1 бар - самый давний в прошлом
Р1>h так и есть, значит h := Р1
вычисляем nrtr(1) :=h*(1-K*0.01)

2 бар пусть Р2<Р1 т.е. цена вниз пошла
Р2<h (, помним что в h хранится P1 спрошлого бара)
h остается неизменной
вычисляем nrtr(2) :=h*(1-K*0.01), естественно значение nrtr не изменилось, индикатор стоит

3 бар пусть Р3>Р2>Р1
P3>h (в котором до сих пор хранится P1), значит h:=P3
вычисляем nrtr(3) :=h*(1-K*0.01)
индикатор пошел вслед за ценой

и так считаем до текущего бара (N)
по закрытии текущего бара вычисляем
nrtr(N) :=h*(1-K*0.01)

вполне себе линейный алгоритм
рекурсию не увидеть здесь даже при ОЧЕНЬ большой фантазии))
потому что ее здесь нет))
 

DQ_Still

New member
А вы также распишите смену тренда и переход цены через индикатор.
могу конечно, но лень - там же все понятно и так)))
и какое это имеет отношение к теме рекурсии?))

но, если все участники обсуждения согласны с тем, что алгоритм NRTR абсолютно линеен и готовы обсуждать что-нить другое по теме этого индикатора, могу напрячься и расписать подробно и дальше))
 

mehanizator1

New member
о! уже рекурсивные переменные появились))
функции, слава Богу, кончились))

кстати что такое рекурсивная переменная? - первый раз слышу:))
в программировании используются такие штуки, как переменные, знаете ли. если переменная используется внутри цикла, она имеет математический смысл функции от счетчика цикла.

скользящий стоп считается как S0=f(dP,S1), где S0 - уровень стопа на текущем баре, S1 - уровень стопа на предыдущем баре, dP - изменение цены за бар. рекурсия видна невооруженным глазом.

если сможете предложить алгоритм, который реализует расчет скользящего стопа S0=f(P0,P1,P2,...), не обращаясь к самому себе, я перестану смеяться. а пока, извините, продолжаю.
 

DQ_Still

New member
в программировании используются такие штуки, как переменные, знаете ли. если переменная используется внутри цикла, она имеет математический смысл функции от счетчика цикла.

скользящий стоп считается как S0=f(dP,S1), где S0 - уровень стопа на текущем баре, S1 - уровень стопа на предыдущем баре, dP - изменение цены за бар. рекурсия видна невооруженным глазом.

если сможете предложить алгоритм, который реализует расчет скользящего стопа S0=f(P0,P1,P2,...), не обращаясь к самому себе, я перестану смеяться. а пока, извините, продолжаю.
ваша ошибка в том, что вы считаете от текущего бара вглубь истории
именно про это я и писал, что можно создать рекурсивный алгоритм NRTR, он так и будет работать, как вы описали, но это грозит переполнением стека при большом кол-ве баров))
а теперь переверните логику - начните считать стоп из глубины истории (скажем с 0-го бара навстречу текущему(999-му)) - необходимость в рекурсии отпадет, достаточно простого линейного алгоритма
и самое смешное, все работает))
перечитайте мое описание работы NRTR тремя постами раньше - все станет ясно, надеюсь))
 

mehanizator1

New member
а теперь переверните логику - начните считать стоп из глубины истории (скажем с 1000-го бара навстречу текущему) - необходимость в рекурсии отпадет, достаточно простого линейного алгоритма
и самое смешное, все работает))
работает, но неправильно. если отсчет стопа начался ранее 1001 бара, ваше 1000 барное приближение даст неверный результат.
 

Khan

New member
могу конечно, но лень - там же все понятно и так)))
и какое это имеет отношение к теме рекурсии?))

но, если все участники обсуждения согласны с тем, что алгоритм NRTR абсолютно линеен и готовы обсуждать что-нить другое по теме этого индикатора, могу напрячься и расписать подробно и дальше))
При переходе вы определяете hprice или lprice в зависимости от значения NRTR (сравнивая цену с ним), а потом через hprice/lprice опять вычисляете NRTR. ИМХО похоже на рекурсию (функция вызывает саму себя через функции lprice/hprcie). :)

Дополняя mehanizator'а - вы в качестве точки отсчета в начале алгоритма ставите trend>0 и задаете первое значение индикатора как hprice*(1-k). При старте в зоне down тренда индикатор некоторое время будет давать некорректные результаты в силу того, что для его расчета нужно обращение к его предыдущим значениям. :) И врет он как раз до первого пересечения цены и индикатора.
 

DQ_Still

New member
начну по порядку поступления комментариев))
вернее - с 499140 бара, тьфу, поста)), где упоминались рекурсивные переменные и двигаться будем по линейному алгоритму из прошлого в настоящее))

и в самом деле есть такое понятие - рекурсивные переменные, вернее переменные рекурсивного вызова
(кстати в общем случае к счетчикам они не имеют отношения)

ПЕРЕМЕННЫЕ РЕКУРСИВНОГО ВЫЗОВА

Существуют переменные которые по соглашению являются рекурсивными, то есть когда данная переменная перекрывается значением кода другой процедуры, то старое значение сохраняется , так чтобы быть доступным для вызова из этой новой процедуры.
так вот, переменные hprice и lprice не являются рекурсивными по определению, значения в них изменяются навсегда
 

DQ_Still

New member
работает, но неправильно. если отсчет стопа начался ранее 1001 бара, ваше 1000 барное приближение даст неверный результат.
что-то не совсем понял о чем вы
и давайте определимся с терминологией
для меня текущий бар - 999 (отсчет с 0 идет) (я кстати поправил в своем посте 499304, там ошибочка закралась, первый бар 0, последний - 999)

работать "неправильно" алгоритм NRTR может только
1) при небольшом числе баров и то вначале цикла, а начало у нас глубоко в прошлом, поэтому пофиг)) (да и кто нам мешает брать 1000-2000-3000 и тд баров?)
2) при большом значении К (крайний случай при очень большом К - бай-энд-холд, т.е. стоп не наступает никогда)

оба случая полностью в нашей власти исключить
 

DQ_Still

New member
При переходе вы определяете hprice или lprice в зависимости от значения NRTR (сравнивая цену с ним), а потом через hprice/lprice опять вычисляете NRTR. ИМХО похоже на рекурсию (функция вызывает саму себя через функции lprice/hprcie). :)...
правильно пишете, но неправильно понимаете))
не вызывает никто никого сам из себя))
переворот осуществляется когда Р(i)<nrtr(i-1)
переменная t:=-1
l:=P(i)
nrtr(i):=l*(1+K*0.01)
при перевороте nrtr высчитывается из текущей цены (т.к. l=P(i) ) но по формуле для шортов
отличий в расчетах от участков монотонного поведения индикатора нет
тот же линейный алгоритм

...
Дополняя mehanizator'а - вы в качестве точки отсчета в начале алгоритма ставите trend>0 и задаете первое значение индикатора как hprice*(1-k). При старте в зоне down тренда индикатор некоторое время будет давать некорректные результаты в силу того, что для его расчета нужно обращение к его предыдущим значениям. :) И врет он как раз до первого пересечения цены и индикатора.
все правильно, за исключением выделенного (устал уже повторять, что NRTR НЕ РАССЧИТЫВАЕТСЯ ИЗ ПРЕДЫДУЩИХ СВОИХ ЗНАЧЕНИЙ!, ОН РАССЧИТЫВАЕТСЯ ИЗ ТЕКУЩЕЙ ЦЕНЫ ИЛИ ЗНАЧЕНИЯ БЛИЖАЙШЕГО ЭКСТРЕМУМА И ОКНА К! ВСЕ! :)))

уфф!.. не люблю кричать...:))

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

Khan

New member
все правильно, за исключением выделенного (устал уже повторять, что NRTR НЕ РАССЧИТЫВАЕТСЯ ИЗ ПРЕДЫДУЩИХ СВОИХ ЗНАЧЕНИЙ!, ОН РАССЧИТЫВАЕТСЯ ИЗ ТЕКУЩЕЙ ЦЕНЫ ИЛИ ЗНАЧЕНИЯ БЛИЖАЙШЕГО ЭКСТРЕМУМА И ОКНА К! ВСЕ! :)))

уфф!.. не люблю кричать...:))

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

Ин-сен

New member
уфф!.. не люблю кричать...:))
Просмотрел ваши посты - вы такие вумные и вобразованные, только для разумной деятельности нужен прикладной ум, а не теоретические фантазии. Как говорится, ты не умничай - ты пальцем покажи. Какой практический толк от ваших заумных рассуждений, если невозможно хотя бы приблизительно прогнозировать рынок? Например, сейчас евро, надо полагать, корректируется до 1.2488. Сценарий следующий: рост до 1.2413, небольшой флет-коррекция, подъем до 1.2488, а затем падение по даун-тренду до пром.уровня1.1988 с коррекцией на уровне 1.2135. С уровня 1.1988 следует ожидать длительный снижающийся боковик до 1.1848. Как торговать в данной ситуации - дело индивидуальное. Флетовики могут посидеть на заборе и начать торговать в боковике от 1.1988 до 1.1848. Трендовики, наоборот,торговать до наступления флэта, а потом взять тайм-аут. Терпеливые могут взять общее движение одной позой, интрадейщики - внутридневные колебания, а скальперы побрить весь рынок.
Ин-сен
 

DQ_Still

New member
Просмотрел ваши посты - вы такие вумные и вобразованные, только для разумной деятельности нужен прикладной ум, а не теоретические фантазии. Как говорится, ты не умничай - ты пальцем покажи....
я знаю трейдера который успешно (в среднем 45% годовых) торгует с помощью NRTR вот уже 10 лет, собственно он и есть его автор)))
 

Ин-сен

New member
Терпеливые могут взять общее движение одной позой, интрадейщики - внутридневные колебания, а скальперы побрить весь рынок.
Ну, и тогда в чем смысл так называемых торговых стратегий? Если чтобы только только прогнозировать рынок, то для этого надо разрабатывать сугубо методы прогнозирования. И торговля здесь не при чем, ведь прогнозы можно и надо использовать не только в форексе, но и в других областях экономики. Если чтобы определять когда и как входить\выходить, то, зная прогноз, глупо задумываться об этом - жми открыть\закрыть, и все. Другое дело тактические приемы торговли. Вот вам практический пример. В соответствии свышеуказанным прогнозом открыл по евро лонг 1.2368, поза пошла в прибыль, с.л. передвинул в безубыток 1.2370. Жена позвала на обед. Вернулся, поза закрыта стопом. Оказывает, евра шла по прогнозу: показала хай 1.2421 (промежуточный уровень 1.2413), но откорректировалась до 1.2369 - буквально 2-мя пп. закрыла мою позу стопом и и снова ушла вверх. Зря я передвинул с.л. Настроение упало, буду ждать 1.2488, чтобы шортить по основному тренду. Но никогда не говори никогда, возможно, будет настроение открою лонг до 1.2488. И стратегия здесь не при делах.
 
Your email address will not be publicly visible. We will only use it to contact you to confirm your post.
Сверху