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

Теги:


Спасибо:




340 Ответов
<< < 12 13 14 
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 24.09.2012
Ответить


ra81 Перейти
Mikhail Sukhov Перейти
ra81 Перейти
А что за прикол заменять Транк девом?


В данном случае наоборот.


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


Дев имеет свое название от Девелопмента. Разработка сейчас идет в транке, так как релиза 4.1 еще нет, а 4.0 поддерживать уже не актуально. Все сильно экспериментальное выносится в отдельный бранч (можно и в дев). Но таких у нас нет вещей. Возможно, что кто-то решил из нашего репозитария устроить свое собственное место для разработки, но так как а) наш репозитарий для этого не предназначен б) никто об этом нас не уведомлял, то скорее будет так, как я описал - тотальная замена дева транком. С микроскопом никто не будет высматривать, а не залил ли кто что не туда. Нет времени и рук.
Автор топика
Спасибо:

Marco

Фотография
Программист
Дата: 24.09.2012
Ответить


Mikhail Sukhov Перейти

Не знаю, насколько это актуально. Но посмотрел по историю, были фиксы в дев. Дев при следующей версии будет замещен тем, что из транка. Поэтому, если изменения дороги, то лучше их накатывать и в транк.


O-ops, я считал, что разработка идет в ветке dev. Ok, залью добавленные индикаторы в trunk.
Спасибо:

kv

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


Поправьте, плз StochasticK. Он в версии 4.1.6 отправляет в Highest и Lowest IIndicatorValue без св-ва IsFinal. Естественно, экстремумы не ищутся и чарт не работает.

В OnProcess, вместо
Код

var highValue = _high.Process(input.SetValue(candle.HighPrice)).GetValue<decimal>();
var lowValue = _low.Process(input.SetValue(candle.LowPrice)).GetValue<decimal>();


Можно сделать так:
Код

var highValue = IndicatorHelper.Process(_high, candle.HighPrice, input.IsFinal).GetValue<decimal>();
var lowValue = IndicatorHelper.Process(_low, candle.LowPrice, input.IsFinal).GetValue<decimal>();
Спасибо:

UsilaDobry

Фотография
Курсы
Дата: 30.04.2013
Ответить


Похоже библиотечный индикатор считает как то не так...Цена не может зашкаливать индикатор.
Это похоже на некорректный вывод на график значений индикатора, потому что каждый раз на графике появляется изображение индикатора в новом исполнении.

Я проверил значения индикатора на графике Quik, индикатор считает корректно, это SciChart выводит значения индикатора некорректно. На работу стратегии это не влияет, но визуально вводит в заблуждение. Сигналы стратегии лучше смотреть на графике Quik.

Возможно ли как-то это исправить?
Спасибо:

UsilaDobry

Фотография
Курсы
Дата: 01.05.2013
Ответить


Уважаемые разработчики прошу помочь. Никак не выходит "каменный цветок"... Пытаюсь вывести на график индикатор Fractals, не получается. В чем ошибка?
На курсе обучения порекомендовали обратиться на общий форум, где-то ошибка в формировании индикатора.
1. Инициализация


2. Получение значения


3. Вывод на график



Где ошибка кроется? Я варианты все исчерпал...
Спасибо:

Moadip

Фотография
Автор статей Программист
Дата: 02.05.2013
Ответить


UsilaDobry Перейти
Похоже библиотечный индикатор считает как то не так...Цена не может зашкаливать индикатор.
Это похоже на некорректный вывод на график значений индикатора, потому что каждый раз на графике появляется изображение индикатора в новом исполнении.

Я проверил значения индикатора на графике Quik, индикатор считает корректно, это SciChart выводит значения индикатора некорректно. На работу стратегии это не влияет, но визуально вводит в заблуждение. Сигналы стратегии лучше смотреть на графике Quik.

Возможно ли как-то это исправить?


О каком индикаторе вообще идет речь? На картинке какие то линии без опознавательных знаков.

Цитата:
Я проверил значения индикатора на графике Quik, индикатор считает корректно, это SciChart выводит значения индикатора некорректно.

Т.е. все таки индикатор рассчитывается верно, но проблема с выводом на график?
Тогда могу предположить что вы что то не так делаете, т.к. SciChart отрисовывает то, что ему передается.
Спасибо:

UsilaDobry

Фотография
Курсы
Дата: 02.05.2013
Ответить


Moadip Перейти

О каком индикаторе вообще идет речь? На картинке какие то линии без опознавательных знаков.


Речь идет об индикаторе Parabolic SAR, на картинке он светло-голубого цвета. Каждый раз после запуска вывода на графике новая версия изображения, на картинке видно, как цена зашкаливает индикатор, а он не переключается, при этом значения индикатора подтверждают график в Квике, полное совпадение с графиком индикатора в Квике.
И еще, на графике явное смещение значения индикатора. Текущее значение индикатора с индексом [0] соответствует на графике свечке с индексом [2].

Цитата:

Т.е. все таки индикатор рассчитывается верно, но проблема с выводом на график?
Тогда могу предположить что вы что то не так делаете, т.к. SciChart отрисовывает то, что ему передается.


Вывод индикатора на график делаю четко по изложенному материалу в в видео-уроке.

1. инициализация

Код
if (SarCheckBox.IsChecked == true)
            {
                
                _parabolic = new ParabolicSar
                    {
                        AccelerationStep = decimal.Parse(FactorSarTextBox.Text),
                        AccelerationMax = decimal.Parse(MaximumSarTextBox.Text)
                    };
                
                _chartParabolicElement = new ChartIndicatorElement
                    {
                        Title = "Parabolic",
                        Color = Colors.Aqua,
                        Indicator = _parabolic
                    };
                
                _chartArea.Elements.Add(_chartParabolicElement);
            }

2. получение значения индикатора

Код
if (_parabolic != null)
                {
                    
                    var valueSar = _parabolic.Process(candle);
                      
                    _chartParabolicValue = new ChartIndicatorValue(_parabolic, valueSar);
                }


3. вывод на график

Код
if (_chartParabolicElement != null && _chartParabolicValue != null)
                    {
                        this.GuiAsync(() => Chart.ProcessValues(candle.OpenTime, new Dictionary<IChartElement, object>
                        {
                            {_chartParabolicElement, _chartParabolicValue} //для Parabolic SAR_
                        }));


Что касается SciChart. Не я первый здесь об этом пишу. У меня например заявки в виде стрелок выводятся на экран, а потом убегают в левый край экрана...Об этом уже здесь писалось... Индикатор Bolliger тоже может нарисовать абсолютно прямым
Спасибо:

Moadip

Фотография
Автор статей Программист
Дата: 02.05.2013
Ответить


[IMG]http://i48.fastpic.ru/thumb/2013/0502/e7/c360bd341ef679cb70a984794acc14e7.jpeg[/IMG]

[IMG]http://i46.fastpic.ru/thumb/2013/0502/cf/5a5e308a4871e79bc60448416baf95cf.jpeg[/IMG]

xaml:

cs:
Спасибо: UsilaDobry

UsilaDobry

Фотография
Курсы
Дата: 04.05.2013
Ответить


Я сделал вывод на график по Вашему примеру, у меня не показывается легенда ни по индикатору, ни по свечам, и автопрокрутка не работает...



А меняю таймфрейм, так он вообще всё одной полосой выводит...похоже масштабирование глючит...
Спасибо:

Moadip

Фотография
Автор статей Программист
Дата: 04.05.2013
Ответить


Цитата:
у меня не показывается легенда ни по индикатору, ни по свечам

Может потому что их надо вкючить?
Код

		private void btnCrossHair_Click(object sender, RoutedEventArgs e)
		{
			if (btnCrossHair.IsChecked.HasValue && btnCrossHair.IsChecked.Value)
				Chart.CrossHair = true;
			else
				Chart.CrossHair = false;
		}

		private void btnToolTip_Click(object sender, RoutedEventArgs e)
		{
			if (btnToolTip.IsChecked.HasValue && btnToolTip.IsChecked.Value)
				Chart.CrossHairTooltip = true;
			else
				Chart.CrossHairTooltip = false;
		}


Цитата:
А меняю таймфрейм, так он вообще всё одной полосой выводит...похоже масштабирование глючит...

Слева же видно что есть несколько точек по 0 цене, поэтому и перемасштабировано, чтобы все показать. Достаточно график прокрутить, чтобы не захватывались эти точки.

P.S.: Скриншоты не стоит запихивать в doc.
Спасибо: UsilaDobry

UsilaDobry

Фотография
Курсы
Дата: 04.05.2013
Ответить


Moadip Перейти

P.S.: Скриншоты не стоит запихивать в doc.


BigGrin Согласен, но у меня под рукой нет программы, чтобы сохранить в графическом формате... Вот и впихиваю, благо, что впихуемое...BigGrin
Спасибо:

VassilSanych

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


У всех есть эта программа. Paint называется.
Замечательно сохраняет в PNG.
Спасибо:

UsilaDobry

Фотография
Курсы
Дата: 04.05.2013
Ответить


VassilSanych Перейти
У всех есть эта программа. Paint называется.
Замечательно сохраняет в PNG.


Благодарю, век живи - век учись...
Спасибо:

alex123456

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


Не рисуется ни один индикатор в версии сборки 4.1.15(пробовал также 4.1.14, 4.1.13, 4.1.11). Свечной график рисуется нормально, как с промежутками(пустые места), так и без них. А вот индикаторы не рисуются как в самой области свечного графика(Are1), так и в отдельной области(Area2), как с пустыми местами (NoGapMode="False") так и без них (NoGapMode="true"), как со связаной областью(IsAligned = true), так и раздельной областью (IsAligned = false). Хотя в версии сборки 4.1.4 все строилось отлично, но MsChart был недостаток не было подсказок по свече(легенды), сейчас есть и легенда и подсказки по осям, но теперь не добавляется индикатор (Объём, Простая скользящая средняя и т.д.)
В версии сборки 4.1.4 ошибка ArgumentNullException решалась через добавление кода
Код
<SX:Chart x:Name="_chart" IsIndexed ="False"/>
- ряды не индексированы. Сейчас это не помогает. Мне думается проблема ещё со StockSharp.Xaml(см прилагаемые файлы). Прошу помощи?
Спасибо:

alex123456

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


проблема решена
Спасибо:
<< < 12 13 14 

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

loading
clippy