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


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

Месяц назад я публиковал призыв о совместной разработке индикаторов на базе 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

Теги:


Спасибо:


< 1 2 3 4 5  > >>
artemox

Фотография
Дата: 05.06.2011
Ответить


Исправился
Спасибо:

maze9a

Фотография
Дата: 05.06.2011
Ответить


Mikhail Sukhov Перейти


  1. Так же как и к эсперу, табы вместо пробелов.
  2. Код
    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 и после этого значения стали совпадать с теми которые получились в велсе.
Код

        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();
        }


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

maze9a

Фотография
Дата: 05.06.2011
Ответить


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

Mikhail Sukhov

Фотография
Дата: 05.06.2011
Ответить


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


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

esper

Фотография
Дата: 06.06.2011
Ответить


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

Maxim

Фотография
Дата: 06.06.2011
Ответить


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

Евгений

Фотография
Дата: 06.06.2011
Ответить


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

esper

Фотография
Дата: 07.06.2011
Ответить


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

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

esper

Фотография
Дата: 07.06.2011
Ответить


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

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

Maxim

Фотография
Дата: 07.06.2011
Ответить


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


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

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy