У вас не стоит Flash Player
Настройки
#62859 - Thu Jun 26 2014 08:46 PM Сжатие - разжатие Ишимоку
chernikovd Offline
journeyman

Registered: Thu Sep 05 2013
Записи: 54
Пишу следующий код
var sec60 = sec.CompressTo(new Interval(60, DataIntervals.MINUTE));
var kijun60 = ctx.GetData("Kijun60", new string[] { PerKijun.ToString() }, delegate
{
var a = new KijunSen { Period = PerKijun, Context = ctx };
return sec60.Decompress(a.Execute(sec60));
});

вывожу на панель но оно не совпадает со значениями которые получаю на тф 1 час
var kijun = ctx.GetData("Kijun", new string[] { PerKijun.ToString() }, delegate
{
var a = new KijunSen { Period = PerKijun, Context = ctx };
return a.Execute(sec);
});

подскажите что не так....
PS: KijunSen из vvTSLtools

Наверх
#62868 - Thu Jun 26 2014 11:55 PM Re: Сжатие - разжатие Ишимоку [Re: chernikovd]
jhgjrht Offline
writer

Registered: Sun Nov 21 2010
Записи: 428
Если все это в одном скрипте, то схемотично проблема в следующем:
sec -> CompressTo -> KijunSen -> Decompres -> график
sec -> KijunSen -> график
а период для KijunSen один и тот же.
_________________________
Не пишите мне! Никому ничего делать не буду.

Наверх
#62889 - Fri Jun 27 2014 12:52 PM Re: Сжатие - разжатие Ишимоку [Re: jhgjrht]
chernikovd Offline
journeyman

Registered: Thu Sep 05 2013
Записи: 54
да это один график, я не понял схемотично должно так быть или это не правильно?
var sec60 = sec.CompressTo(new Interval(60, DataIntervals.MINUTE));
sec -> CompressTo = sec60

var kijun60 = ctx.GetData("Kijun60", new string[] { PerKijun.ToString() }, delegate
{
var a = new KijunSen { Period = PerKijun, Context = ctx };
return sec60.Decompress(a.Execute(sec60));
});

для sec60 -> Kijun60 это a.Execute(sec60)

далее Decompres то что вышло из a.Execute(sec60) получили kijun60 , его выводим на график, получается не то!!

картинки приложил

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


Attachments
1й.jpg (240 downloads)
2.jpg (201 downloads)



Отредактировано chernikovd (Fri Jun 27 2014 06:42 PM)

Наверх
#62905 - Fri Jun 27 2014 07:44 PM Re: Сжатие - разжатие Ишимоку [Re: chernikovd]
chernikovd Offline
journeyman

Registered: Thu Sep 05 2013
Записи: 54
Короче понял, если делать на одном графике сжатый и не сжатый то фигня получается.. а как решить проблему что-то нет идей frown

Наверх
#62906 - Fri Jun 27 2014 08:12 PM Re: Сжатие - разжатие Ишимоку [Re: chernikovd]
chernikovd Offline
journeyman

Registered: Thu Sep 05 2013
Записи: 54
написал так
var sec60 = sec.CompressTo(new Interval(60, DataIntervals.MINUTE));
var color1 = new Color(System.Drawing.Color.Black.ToArgb());
var Sec60_kijun60 = ctx.GetData("Kijun60_", new string[] { PerKijun.ToString() }, delegate
{
var a = new vvTSLtools.KijunSen { Period = PerKijun, Context = ctx };
return sec60.Decompress(a.Execute(sec60));
});
var kijun = ctx.GetData("Kijun", new string[] { PerKijun.ToString()+"2" },delegate
{
var a = new TSLab.Community.Ichimoku.KijunSen { Period = PerKijun, Context = ctx };
return a.Execute(sec);
});

в итоге sec60.Bars.count = 6000 примерно , Sec60_kijun60.count = 33000
sec.Bars.count = 33000 примерно, kijun.count = 6000

я ниче не понял

Наверх
#62922 - Sat Jun 28 2014 05:10 PM Re: Сжатие - разжатие Ишимоку [Re: chernikovd]
jhgjrht Offline
writer

Registered: Sun Nov 21 2010
Записи: 428
Originally Posted By: chernikovd
написал так
...
var kijun = ctx.GetData("Kijun", new string[] { PerKijun.ToString()+"2" },delegate
...

А это "+2" еще зачем?

Quote:
в итоге sec60.Bars.count = 6000 примерно , Sec60_kijun60.count = 33000
sec.Bars.count = 33000 примерно, kijun.count = 6000

я ниче не понял

Я тоже не понял в чем тут у вас проблема. Обычно в одной часовой свече 6 десяти-минутных свечек. В вашем случае из 33 тысяч получилось 6 тысяч сжатых. Вполне допустимо.

"Sec60_kijun60.count = 33000" ну функцию Decompress же вы вызываете, вот и кол-во значений в результате получается как в исходном источнике.

А графики разные потому что индикаторы вы строите по разным свечам, да еще и с одинаковым "PerKijun".


Отредактировано jhgjrht (Sat Jun 28 2014 08:06 PM)
_________________________
Не пишите мне! Никому ничего делать не буду.

Наверх
#62947 - Sun Jun 29 2014 05:47 PM Re: Сжатие - разжатие Ишимоку [Re: jhgjrht]
chernikovd Offline
journeyman

Registered: Thu Sep 05 2013
Записи: 54
нене...
цифра 2 это так на всякий случай, и это не меняет дела...

дальше по 33000 и 6000 я не запомнил точные значения

но это не главное я скрипт прикреплю что было понятно, это самый последний вариант
dll здесь https://cloud.mail.ru/public/be8e62132dc9/TSLab.Community.Ichimoku.dll

суть в следующем хочу сжать 5, 10, 15 минутный тф в часовой и на двух тф получить ишимоку, но не получается..

да к стати если менять местами расчет индикаторов со сжатие м и без сжатия местами происходит как на рисунке


Attachments
ishimoku_Demo.cs (107 downloads)
3_.jpg (207 downloads)
4_.jpg (180 downloads)
ishimoku_Demo - 4.cs (72 downloads)



Отредактировано chernikovd (Sun Jun 29 2014 05:59 PM)

Наверх
#62949 - Sun Jun 29 2014 07:00 PM Re: Сжатие - разжатие Ишимоку [Re: chernikovd]
chernikovd Offline
journeyman

Registered: Thu Sep 05 2013
Записи: 54
я все понял, вот кусок кода из индикатора
var high = Context.GetData("Highest", new[] {Period.ToString()},
() => Series.Highest(source.HighPrices, Period));


то есть программа закэшировала в перем high с идентификатором new[] {Period.ToString()}, я два раза опрашиваю этот индикатор а он вместо того чтоб заново расчитать Series.Highest(source.HighPrices, Period) выдает мне старое значение из кэша !!!!

вот как надо
var high = Context.GetData("Highest", new[] {Period.ToString()+ source.Interval.ToString() },
() => Series.Highest(source.HighPrices, Period));

и все заработало на картинке то что я хотел получить


Attachments
5.jpg (199 downloads)



Отредактировано chernikovd (Mon Jun 30 2014 05:43 AM)

Наверх


Moderator:  ViL, sar