Индикаторы - совместный проект

Индикаторы - совместный проект
Atom
5/31/2011
Mikhail Sukhov


Приветствую всех участников!

Месяц назад я публиковал призыв о совместной разработке индикаторов на базе C#. Прошел месяц, мною было сделано 3 стандартных индикатора SMA, EMA и WMA. И ни строчки кода ни от одного пользователя S#. Каждый день задают вопросы (причем, большинство явно не относящиеся к S# как таковому), получают ответы, но свою помощь предложить не хотят. Стесняются, наверное.

Я понимаю, что дело в мотивации. Зачем помогать делать что-то, если можно подождать пару месяцев (пол года) или сделать самому, а потом пересесть на стандартное. Поэтому я решил найти мотивацию. И я ее нашел. Это лето объявляется летом "Ты мне - я тебе".

Схема простая. Вы делаете индикатор - я отвечаю на три любых вопроса. Вопросы по глюкам S# остаются как есть и раньше - ответ всегда получите. Но вопросы по C#, WFP, примерам, документации, Квику и всему прочему - только за индикатор.[smile] Я думаю честно.

Сделав 5 индикаторов, вы получается бонус - кружку с символикой S#.

Репозитарий с исходниками расположен по адресу http://stocksharpconnectors.codeplex.com Чтобы получить доступ на запись регистрируйтесь на сайте, пишите в эту тему свой логин и какие индюки хотите сделать. Стиль кодирование указывается через R#. Настройки в репозитарии.

Что сделано сейчас:

  1. Acceleration
  2. Alligator
  3. AwesomeOscillator
  4. Fractals
  5. GatorOscillator
  6. MarketFacilitationIndex
  7. BollingerBands
  8. ExponentialMovingAverage
  9. Macd
  10. ParabolicSar
  11. RAVI
  12. SimpleMovingAverage
  13. SmoothedMovingAverage
  14. StandartDeviation
  15. VolumeWeightedMovingAverage
  16. WeightedMovingAverage
  17. WilderMovingAverage
  18. Adx
  19. Atr
  20. ChandeMomentumOscillator
  21. CommodityChannelIndex
  22. DiMinus
  23. DiPlus
  24. Dx
  25. Ichimoku
  26. Momentum
  27. RateOfChange
  28. RelativeStrengthIndex
  29. RVI
  30. TrueRange
  31. DetrendedPriceOscillator
  32. Highest
  33. LinearReg
  34. LinearRegression
  35. LinearRegSlope
  36. Lowest
  37. MeanDeviation
  38. MedianPrice
  39. Peak
  40. PeakBar
  41. QStick
  42. RSquared
  43. StandardError
  44. StochK
  45. Sum
  46. Trix
  47. Trough
  48. TroughBar
  49. UltimateOsc
  50. VerticalHorizontalFilter
  51. Vidya
  52. Volatility
  53. WilliamsR

Tags:


Thanks:


< 1 2 3 4 5  > >>
artemox

Avatar
Date: 6/5/2011
Reply


Исправился
Thanks:

maze9a

Avatar
Date: 6/5/2011
Reply


Mikhail Sukhov


  1. Так же как и к эсперу, табы вместо пробелов.
  2. Code
    if(IsFormed)
    base.RaiseChangedEvent();

    Я думаю это не совсем верно. Событие Changed слушают сторонние компоненты. Например, график со свечками. Ему нужно отображать кривую, пока она не сформировалась? Почему бы нет.
  3. Заливая новые файлы, нужно заливать и измененный csproj. Иначе, новые файлы не видны.


По Ema - IsFormed автоматически рассчитывается. А насчет не учитывания элементов, то я не понял.



  1. поменял
  2. В моей реализации значение индикатора равно нулю до тех пор пока он полностью не сформирован (в велсе индикатор расчитывается таким же образом), поэтому нет смысла рисовать кривую пока она не сформированна. Если вызывать событие Changed до того как индикатор сформировался то скорей всего некоторым подписчикам придется проверять IsFormed, а это мне кажется лишнее.
  3. понятно

Я посчитал Ema в велсе и сравнил с тем что получилось в вашей реализации, значения получились разные. Для расчета Ema на текущем шаге используется значение из предыдущего шага таким образом если первое значение расчитано не верно то и все последующие так же будут не корректные. Из описания Ema в велсе:

EMA = ( K x ( C - EMA1 ) ) + EMA1

where,
C = Current Price
EMA1 = Previous bar's EMA value (A SMA is used for the first period's calculation)
K = Exponential smoothing constant
K = 2 / ( 1 + period )

http://www2.wealth-lab.com/WL5Wiki/EMA.ashx

Я поменял реализацию Ema и после этого значения стали совпадать с теми которые получились в велсе.
Code

        public override void Add(decimal newValue)
        {
            Buffer.Add(newValue);

            if (Buffer.Count < Length)
                return;

            if (Buffer.Count == Length)
            {
                base.Value = Buffer.Sum() / Length;
            }
            else
            {
                base.Value = (newValue - base.Value) * _multiplier + base.Value;
                Buffer.RemoveAt(0);
            }

            base.RaiseChangedEvent();
        }


Я мог бы сдать эти изменения. Вы ничего не имеете против?
Thanks:

maze9a

Avatar
Date: 6/5/2011
Reply


Добавил реализацию для ADX. Юнит тест не добавлял потому что значения посчитаные в велсе не совпадают с теми которые получаются в моей реализации, разница не большая но все же есть. Если будут какие-нибудь замечания по коду или самой реализации пишите.
Thanks:

Mikhail Sukhov

Avatar
Date: 6/5/2011
Reply


maze9a
Я мог бы сдать эти изменения. Вы ничего не имеете против?


Посмотрел код. Думаю, вы правильнее поняли формулу чем я. Согласен насчет события для IsFormed == false и для Ema.
Thanks:

esper

Avatar
Date: 6/6/2011
Reply


Смотрю, что число индикаторов растет, может есть смысл их сгруппировать?
Thanks:

Maxim

Avatar
Date: 6/6/2011
Reply


Михаил, добавьте пожалуйста логин goricap.
Также прошу указать пять индикаторов, которые необходимо реализовать.
Thanks:

Евгений

Avatar
Date: 6/6/2011
Reply


Михаил, добавьте пожалуйста логин neuro
Thanks:

esper

Avatar
Date: 6/7/2011
Reply


Евгений
Михаил, добавьте пожалуйста логин neuro

Как писалось ранее
Mikhail Sukhov
Заливая новые файлы, нужно заливать и измененный csproj. Иначе, новые файлы не видны.
Thanks:

esper

Avatar
Date: 6/7/2011
Reply


maze9a, что-то у меня не сходится тест для Полос Боллинджера с использованием Ema(14) на исторических данных по сберу, в частности отличается именно средняя линия

P.s. так же не сходится Smma на исторических данных, хотя в RSI оно работает нормально[confused]
P.P.s. Не заметил, что WilderMa и Smma одно и тоже, позже удалю Smma
Thanks:

Maxim

Avatar
Date: 6/7/2011
Reply


Mikhail Sukhov
Тем более, сделав 5 индикаторов, вы получается доступ к репозитарию навсегда, а так же майку с символикой S#.


Уточню.
Доступ к репозиторию индикаторов?
Или доступ к репозиторию S#?
Thanks:
< 1 2 3 4 5  > >>

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy