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

Теги:


Спасибо:


<< < 5 6 7 8 9  > >>
maze9a

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


Maxim Перейти
Взял себе:

VHF
VMA
WilliamsR
Volatility
UltimateOsc
Vidya

Если кто то уже их делает, прошу сообщить.


Maxim что вы понимаете под Volatility? Я уже делаю HV (Historical Volatility of the selected Price Series) если это оно то уже занято.
Спасибо:

InsiderHSE

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


Прошу включить меня в проект, ник InsiderHSE.
И если не сложно, вкратце объяснить чем и как пользоваться для совместного редактирования проекта, у меня в этом никакого опыта нет.
Сделал индикаторы, касающиеся линейной регрессии - LinearReg, LinearRegSlope, RSquared и StdError. Не знаю как залить...
Спасибо:

Maxim

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


maze9a Перейти

Maxim что вы понимаете под Volatility? Я уже делаю HV (Historical Volatility of the selected Price Series) если это оно то уже занято.


Нет. Не HV.

Volatility
http://www2.wealth-lab.c...WL5Wiki/Volatility.ashx
Спасибо:

artemox

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


maze9a Перейти

Формат можно сделать любой, а вот данные думаю будут разные, но сильно они отличаться не должны иначе это будет просто смешно.

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

Оффтоп, а я так понимаю, что большинство на ВЛ тестит историю?
Спасибо:

Maxim

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


Из форума не совсем понял, кто делал 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();
}


При последовательном вызове Add с определенного момента значение Value будет равно (Buffer.Sum() / Length),
потом ((newValue - base.Value) * _multiplier + base.Value),
потом опять (Buffer.Sum() / Length),
и так далее поочередно.


Вот такой вариант будет более верным:
Код

if (Buffer.Count > Length - 1)
{
    Value = (newValue - Value) * multiplier + Value;            
}
else if (Buffer.Count < Length - 1)
{
    Buffer.Add(newValue);
    return;
}
else
{
    Buffer.Add(newValue);
    Value = Buffer.Sum() / Length;
}

Спасибо:

Maxim

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


1)Хотелось бы определится, в каком случае вызывается Changed?

а) Когда отработал метод Add? Если да, то некоторые индикаторы не соответсвуют этому критерию.

б) Или когда значение Value изменилось? Если да, то аналогично многие индикаторы не соответсвуют критерию.
Так как нет проверки, что новое значение Value не равно старому значению.

в) Вызывается ли это событие, если IsFormed false?


2) Какое значение Value, пока IsFormed равно false?






Спасибо:

esper

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


maze9a Перейти
Понятно, а насколько большее расхождение получается с данными из Велса? У меня например так и не получилось посчитать значения для ADX точно такие же как в Велсе, расхождение порядка 1.5. И еще, многие индикаторы строятся с использованием других индикаторов, поэтому вопрос тестирования того, что мы написали, мне кажется важный и идея использовать тестовые файлы мне нравится.

Конкретные цифры я сказать не могу, надо тесты писать, если примерно, то для сбера (значение цены в районе 100 рублей) где-то сотые отличаются, иногда десятые, но общая направленность индикатора совпадает
Спасибо:

Mikhail Sukhov

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


InsiderHSE Перейти
Прошу включить меня в проект, ник InsiderHSE.
И если не сложно, вкратце объяснить чем и как пользоваться для совместного редактирования проекта, у меня в этом никакого опыта нет.
Сделал индикаторы, касающиеся линейной регрессии - LinearReg, LinearRegSlope, RSquared и StdError. Не знаю как залить...


Пользуемся Visual Studio Team Explorer http://stocksharpconnect...Control/list/changesets и http://help.teamprise.co...xplorerdoc/index_ba.html
Спасибо:

esper

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


Maxim Перейти
Из форума не совсем понял, кто делал 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();
}


При последовательном вызове Add с определенного момента значение Value будет равно (Buffer.Sum() / Length),
потом ((newValue - base.Value) * _multiplier + base.Value),
потом опять (Buffer.Sum() / Length),
и так далее поочередно.

Да вроде верно все, когда достигли макс. размер буфера первый раз, сработает условие
Код
if (Buffer.Count == Length)

в следующий раз добавится новый элемент и размер списка будет Length+1 и попадем в блок else
Спасибо:

esper

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


Maxim Перейти
1)Хотелось бы определится, в каком случае вызывается Changed?

а) Когда отработал метод Add? Если да, то некоторые индикаторы не соответсвуют этому критерию.

б) Или когда значение Value изменилось? Если да, то аналогично многие индикаторы не соответсвуют критерию.
Так как нет проверки, что новое значение Value не равно старому значению.

в) Вызывается ли это событие, если IsFormed false?


2) Какое значение Value, пока IsFormed равно false?


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

Спасибо:
<< < 5 6 7 8 9  > >>

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

loading
clippy