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

Индикаторы - совместный проект
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:


<< < 12 13 14 15 16  > >>
Sergey Masyura

Avatar
Date: 6/12/2011
Reply


artemox
sergey.masyura,
как победить ошибку "Невозможно загрузить файл или сборку "Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" или один из зависимых от них компонентов. Не удается найти указанный файл." возникающую например при вызове sma.Value.AssertEqual((decimal)data.Average()); ?

Не у одного меня такая ерунда :(


Как вариант файлы из аттача распоковать в c:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\

По идее все это ставится в VS 2010 Ultimate.
ut.zip 577 KB (307)
Thanks: artemox

esper

Avatar
Date: 6/12/2011
Reply


artemox
Появилась идея сделать класс TestTestExecuter.
Но тогда необходимо создать базовый класс с методами Add(Candle), Add(decimal), Value, IsFormed.
Понятно, что не все индикаторы укладываются в один Value, но большинство индюков будут приобщены к одному интерфейсу.

Здравая идея, думаю в визуализаторе это тоже пригодится

Maxim

1) Лучше конечно определится со способо тестирования.
На данный момент где-то данные просто генерятся внутри теста,
где-то используются массивы, где-то используются внешние данные из файла.

Считаю, что лучше не генерировать данные внутри теста, а использовать внешние данные.
И, повторюсь, лучше унифицировать этот способ.

MomentumTest мне нравится. Только надо ввсети погрешность — плюс-минус дельта величину,
когда мы будем считать, что значение верно.

поддерживаю

Maxim

2) Возможно, тесты стоит сделать одному человеку.
В этом случае будет все более унифицировано.
Методом копипаст не очень трудно сделать тесты для каждого индикатора из MomentumTest.

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

Maxim

Оффтоп:
а) В список правил стоит добавить пункт-напоминание, что бы все делали проверку на деление на ноль где это возможно.
б) Что насчет потокобезопасности? Стоит ли ее реализовывать в индикаторах или нет?

а)согласен
б)мне кажется, не стоит усложнять индикаторы, есть ли такие ситуации, где это было бы оправдано?

artemox
На самом деле, сейчас индюки пишутся на раз два. Например DPO с тестом нарисовал за 20 минут, + отладка 40 минут :)

Вот только нужен ли этот DPO кому-нибудь? :)

Лишним не будет[smile] Так понимаю, что наиболее используемые индикаторы уже сделали? Может добьем тесты и Михаил соберет первую бету?

Maxim
artemox

Да правильно, но HHV и LLV это имена из амиброкера, т.к. Highest и Lowest там имеют другое предназначение
Может в таблицу алтернативные имена добавить?


В этом случае можно составить экселик, где будут три столбика "Как у нас называется", "Как в амиброкере", "Как в лабе".

Поддерживаю, заодно обновим что сделано, а что нет:)

sergey.masyura
На такие тесты можно просто ставить аттрибут [Ignore], тогда они будут пропускаться при выполнении.

Хорошо, учтем. Смотрю на частые Coding style fixes, есть документ, где представлен Coding style?

Mikhail Sukhov

Это точно. Вот думаю, а не залить ли сырцы Ecng.Trading.Xaml да и сделать на основе CandleChart рисовалку всех этих индюков. Примеры Chart из .NET меня удивили по хорошему, особенно раздел финансы (приложил к сообщению). Я так прикинул, что большинство индюков имею одинаковый вид отрисовки. А значит и работа будет значительно меньше, чем я предполагал в самом начале.

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

maze9a

Avatar
Date: 6/12/2011
Reply


Всем доброго времени суток. Я застрял с реализацией индикатора HV (http://www2.wealth-lab.com/WL5Wiki/HV.ashx?HL=hv), может кто-нибудь подскажет более понятную формулу для расчета этого индикотора?
Thanks:

esper

Avatar
Date: 6/12/2011
Reply


maze9a
Всем доброго времени суток. Я застрял с реализацией индикатора HV (http://www2.wealth-lab.com/WL5Wiki/HV.ashx?HL=hv), может кто-нибудь подскажет более понятную формулу для расчета этого индикотора?

Возможно это поможет
Thanks:

Евгений

Avatar
Date: 6/12/2011
Reply


artemox
На самом деле, сейчас индюки пишутся на раз два. Например DPO с тестом нарисовал за 20 минут, + отладка 40 минут :)

Вот только нужен ли этот DPO кому-нибудь? :)


Эх... Не успел вылить... Напишу тогда, что делаю: Fractals, Ichimoku, Parabolic SAR, что ведет за собой реализацию Acceleration Oscillator, Awesome Oscillator и Median Price.
Thanks:

Sergey Masyura

Avatar
Date: 6/12/2011
Reply


esper
artemox
Появилась идея сделать класс TestTestExecuter.

[quote=sergey.masyura;8861]На такие тесты можно просто ставить аттрибут [Ignore], тогда они будут пропускаться при выполнении.

Хорошо, учтем. Смотрю на частые Coding style fixes, есть документ, где представлен Coding style?


В шапке топика написано - "Стиль кодирование указывается через R#. Настройки в репозитарии."

Настройки можно включить через плагин http://rsm.codeplex.com/
Thanks:

Maxim

Avatar
Date: 6/12/2011
Reply


Евгений
artemox
На самом деле, сейчас индюки пишутся на раз два. Например DPO с тестом нарисовал за 20 минут, + отладка 40 минут :)

Вот только нужен ли этот DPO кому-нибудь? :)


Эх... Не успел вылить... Напишу тогда, что делаю: Fractals, Ichimoku, Parabolic SAR, что ведет за собой реализацию Acceleration Oscillator, Awesome Oscillator и Median Price.


Печально.

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


Thanks:

esper

Avatar
Date: 6/12/2011
Reply


sergey.masyura
esper
artemox
Появилась идея сделать класс TestTestExecuter.

[quote=sergey.masyura;8861]На такие тесты можно просто ставить аттрибут [Ignore], тогда они будут пропускаться при выполнении.

Хорошо, учтем. Смотрю на частые Coding style fixes, есть документ, где представлен Coding style?


В шапке топика написано - "Стиль кодирование указывается через R#. Настройки в репозитарии."

Настройки можно включить через плагин http://rsm.codeplex.com/

Не у всех есть решарпер или возможность его поставить
Thanks:

Maxim

Avatar
Date: 6/12/2011
Reply


А как в S# задается параметр метода или конструктора, если этот параметр «проценты»?

Сорок пять процентов — 45 или 0.45?
Thanks:

InsiderHSE

Avatar
Date: 6/12/2011
Reply


Maxim
А как в S# задается параметр метода или конструктора, если этот параметр «проценты»?

Сорок пять процентов — 45 или 0.45?


new Unit() {Value = 45, Type = UnitTypes.Percents}

Думаю лучше принимать в качестве параметра Юнит, и если нужно чтобы были именно проценты, то проверять тип в конструкторе и выбрасывать эксепшен если это не так.
Thanks:
<< < 12 13 14 15 16  > >>

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

loading
clippy