Maxim
|
Date: 6/12/2011
|
|
|
|
По тестам наблюдение. Есть данные из Ами. SaveValues(folder+"VMA.txt", Sum(V*C,20)/Sum(V,20)); Code 179060,179395,178505,179240,76663,178174.53125000 179245,179995,178855,179695,59589,178212.98437500 180910,181810,180910,181535,45414,178285.53125000 181555,181690,181110,181135,66098,178421.76562500 181135,181935,180935,181860,108430,178829.85937500 181850,182115,181355,181695,88335,179129.93750000 181700,181770,179740,179890,141672,179345.32812500 179885,180240,179560,179615,70581,179444.46875000 179625,179725,178955,179170,100643,179531.73437500 179170,180200,179055,180000,57874,179622.51562500 179965,180590,179620,180365,49886,179658.54687500 180340,180840,179700,179865,67803,179673.57812500 179850,180450,179730,180345,46388,179703.79687500 180340,180600,179960,180450,45855,179827.32812500 180445,180690,180275,180420,30355,179892.65625000 180410,180445,179320,180000,117375,179929.85937500 180015,180030,179180,179530,73419,179948.39062500 179525,180870,179360,179490,121644,179997.76562500 179490,180120,179100,179850,113072,180077.23437500 179840,180030,179300,179735,43616,180148.73437500
Согласно этим данным VMA = 180148.734375 Если посчитать эти же данные в экселе, то VMA = 180148.741408213 Если посчитать в S#, то VMA = 180148.74140821348556317520948 Это что получается? Что ами не надежный источник для тестирования? Какая-то адская погрешность (0.01) для такого несложного индикатора.
|
|
Thanks:
|
|
|
|
|
esper
|
Date: 6/12/2011
Maxim Согласно этим данным VMA = 180148.734375 Если посчитать эти же данные в экселе, то VMA = 180148.741408213 Если посчитать в S#, то VMA = 180148.74140821348556317520948
Это что получается? Что ами не надежный источник для тестирования? Какая-то адская погрешность (0.01) для такого несложного индикатора.
В процентном соотношении это совсем немного, где-то 1e-6
|
|
Thanks:
|
|
|
|
|
artemox
|
Date: 6/12/2011
esper Maxim Согласно этим данным VMA = 180148.734375 Если посчитать эти же данные в экселе, то VMA = 180148.741408213 Если посчитать в S#, то VMA = 180148.74140821348556317520948
Это что получается? Что ами не надежный источник для тестирования? Какая-то адская погрешность (0.01) для такого несложного индикатора.
В процентном соотношении это совсем немного, где-то 1e-6 Вот оно как! Я кстати тоже заметил на стохастике увеличенную погрешность (если ориентироваться на количество знаков после запятой), т.к. было умножение результата на 100. Получается что проверку нужно делать таким образом : Assert.IsTrue(Math.Max(indicator.Value, item.Value1) / Math.Min(indicator.Value, item.Value1) - 1 < 0.000001m); Или искать более точный источник (хотя правильность расчетов будет подтверждена и данными из ами)
|
|
Thanks:
|
|
|
|
|
artemox
|
Date: 6/12/2011
sergey.masyura 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. У меня 2010 проф. Папки PublicAssemblies не было. Создал папку и добавил файлы. При добавлении ссылки в проект файлы из PublicAssemblies в списке появились. Добавил в IndicatorsTest ссылку на Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll, ошибка все равно не исчезла. Заменю ка на Assert.IsTrue? Все равно эта ошибка только в sma осталась. Никто не против?
|
|
Thanks:
|
|
|
|
|
artemox
|
Date: 6/12/2011
Mikhail Sukhov esper Mikhail Sukhov 40 индюков! Это уже больше чем у ТСЛаб. Такими темпами из до лидеров ТА рынка добежим до осени. Пора начинать думать над разработкой визуализатора[smile] Это точно. Вот думаю, а не залить ли сырцы Ecng.Trading.Xaml да и сделать на основе CandleChart рисовалку всех этих индюков. Примеры Chart из .NET меня удивили по хорошему, особенно раздел финансы (приложил к сообщению). Я так прикинул, что большинство индюков имею одинаковый вид отрисовки. А значит и работа будет значительно меньше, чем я предполагал в самом начале. А заливайте, дело то затягивающее :)
|
|
Thanks:
|
|
|
|
|
artemox
|
Date: 6/12/2011
Mikhail Sukhov artemox Mikhail Sukhov 40 индюков! Это уже больше чем у ТСЛаб. Такими темпами из до лидеров ТА рынка добежим до осени. [scared] 8 маек! У нас уже 8 человек сделали по 5 индюков? Но за намек спасибо, действительно пора уже печатать. Отсылать буду почтой. С москвичами можно сделать проще - очная встреча. Это больше шутка, чем намек :) Подождите релиза, а там и плюшки можно раздавать
|
|
Thanks:
|
|
|
|
|
artemox
|
Date: 6/12/2011
esper artemox Появилась идея сделать класс TestTestExecuter. Но тогда необходимо создать базовый класс с методами Add(Candle), Add(decimal), Value, IsFormed. Понятно, что не все индикаторы укладываются в один Value, но большинство индюков будут приобщены к одному интерфейсу. Здравая идея, думаю в визуализаторе это тоже пригодится Коллеги, на ваш суд SimpleIndicator. Может быть устраним базовый Ma? и все пронаследуем от SimpleIndicator?
|
|
Thanks:
|
|
|
|
|
Sergey Masyura
|
Date: 6/12/2011
artemox esper artemox Появилась идея сделать класс TestTestExecuter. Но тогда необходимо создать базовый класс с методами Add(Candle), Add(decimal), Value, IsFormed. Понятно, что не все индикаторы укладываются в один Value, но большинство индюков будут приобщены к одному интерфейсу. Здравая идея, думаю в визуализаторе это тоже пригодится Коллеги, на ваш суд SimpleIndicator. Может быть устраним базовый Ma? и все пронаследуем от SimpleIndicator? Само название SimpleIndicator уже не очень подходит для базового класса.
|
|
Thanks:
|
|
|
|
|
Sergey Masyura
|
Date: 6/12/2011
|
|
|
|
artemox sergey.masyura 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. У меня 2010 проф. Папки PublicAssemblies не было. Создал папку и добавил файлы. При добавлении ссылки в проект файлы из PublicAssemblies в списке появились. Добавил в IndicatorsTest ссылку на Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll, ошибка все равно не исчезла. Заменю ка на Assert.IsTrue? Все равно эта ошибка только в sma осталась. Никто не против? Если поможет - наздоровье. Раз такая большая проблема у всех с тестами, может вобще стоит про NUnit подумать?
|
|
Thanks:
|
|
|
|
|
Maxim
|
Date: 6/13/2011
|
|
|
|
Индикаторы Peak и Trough. Столкнулся с тем, что мое понимание этих индикаторов отличается от того, которое в Ами. Прошу помочь разобраться, какая интерпретация верная. 1) Описание в Лабе: http://www2.wealth-lab.com/WL5Wiki/Trough.ashx 2) Первое различие. В описании ясно сказано, что «During these bars the Trough function will not return $20, but will instead return the value of the previous trough.» В ами же значение индикатора становится равным $20 раньше. Как будто они уже знают будущее. Пример данных из ами. Code 191090,191250,191060,191150,7066,187400.00000000 191150,191205,190445,190585,16283,187400.00000000 190575,190960,190450,190935,12038,187400.00000000 190935,191050,190775,190955,9648,187400.00000000 190970,190970,190320,190400,12287,187400.00000000 190400,190470,190150,190220,18255,190220.00000000 190220,190740,190155,190665,12442,190220.00000000 190680,190860,190505,190640,11811,190220.00000000 190640,190850,190425,190800,10218,190220.00000000 190800,191100,190675,191100,10841,190220.00000000
Считаю, что реализация в Ами этого индикатора неверная. Так как их реализация годится только для уже существующих данных, расчет постфактум. Если данные добавляются онлайн динамически, то их индикатор использовать нельзя. Если остановимся на моем варианте, то данные из ами для тестов не подходят. Вопрос: какой вариант реализуем в S#? 3) Второе различие. Второе различие более неопределенное. Так как в описании оно не рассматривается. Мое понимаение: график индикатора представляет из себя лестницу вверх(peak), или вниз (trough). Тоесть график показывает глобальный максимум или минимум на всем пройденном интервале. Если посмотреть на данные Trough из Ами: Code 188395,188435,188080,188125,13367,182985.00000000 188130,188140,187650,187750,20700,182985.00000000 187775,187775,187460,187615,20565,182985.00000000 187615,187630,187280,187400,15589,187400.00000000 187415,187740,187275,187610,14105,187400.00000000 187625,187765,187530,187760,7779,187400.00000000 187745,187850,187545,187560,10627,187400.00000000 187550,187715,187380,187605,9178,187400.00000000 187620,187970,187565,187860,8184,187400.00000000
................................................
191090,191250,191060,191150,7066,187400.00000000 191150,191205,190445,190585,16283,187400.00000000 190575,190960,190450,190935,12038,187400.00000000 190935,191050,190775,190955,9648,187400.00000000 190970,190970,190320,190400,12287,187400.00000000 190400,190470,190150,190220,18255,190220.00000000 190220,190740,190155,190665,12442,190220.00000000 190680,190860,190505,190640,11811,190220.00000000 190640,190850,190425,190800,10218,190220.00000000
то график индикатора Trough будет представлять собой ступеньки то вверх, то вниз. Могу предположить, что они считают локальный минимум, а не глобальный. Тоесть, если после локального минимума был локальный максимум, а после этого опять локальный минимум, то они берут для индикатора значения этих минимумов. Правильно ли я понял? Или они делают по другому? Вопрос: какой вариант верный и что реалиуем в S#?
|
|
Thanks:
|
|
|
|