помогите со свечками
Atom Ответить
28.06.2012


я решительно не понимаю, как мне получить свечку за прошедшее время.
мой код
private QuikTrader _trader;
private readonly TimeSpan _timeFrame = TimeSpan.FromMinutes(1);

_candleManager_lkoh = new CandleManager(_trader);
series_lkoh = new CandleSeries(typeof(TimeFrameCandle), _lkoh, _timeFrame);
_candleManager_lkoh.Start(series_lkoh);
var candle_lkoh = series_lkoh.GetCandle(1);
MessageBox.Show(candle_lkoh.ClosePrice.ToString());
выдает неверные данные в течение 1 минуты. Просветите нуба!

Теги:


Спасибо:



Скидка 15% на все продукты до 5 апреля (осталось 3 дней).

16 Ответов
OvcharenkoVI

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


что то вопрос не понятен
Спасибо:

tantin

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


почему в candle_lkoh не записываеться историческая свечка?(в данном случае предпоследняя, то есть уже должна быть сформирована), может я вообще не понимаю принципов получения исторических свечей? такое ощущение что видит только свечки, которые сформировались за время работы программы.
Автор топика
Спасибо:

Доктор Сальватор

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


Дело в том, что для получения исторических свечей, необходимо сначала написать ваш код, а затем запустить экспорт таблицы всех сделок по DDE. В этом случае вы получите все исторические свечки с начала дня.
Если же вы сначала запустите экспорт таблицы всех сделок по DDE и только потом напишете ваш код, то часть свечей может не записаться в серию candle_lkoh.
Посмотрите в программе, когда вы запускаете экспорт?
Спасибо:

OvcharenkoVI

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


tantin Перейти
почему в candle_lkoh не записываеться историческая свечка?(в данном случае предпоследняя, то есть уже должна быть сформирована), может я вообще не понимаю принципов получения исторических свечей? такое ощущение что видит только свечки, которые сформировались за время работы программы.


Так и есть. Свечки строятся по сделкам в реал-тайме. В квике нет возможности получения исторических свечек с сервера. Пользуйтесь гидрой и примером SampleSMA(там показано, как из файла создать свечки)
Спасибо:

tantin

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


спасибо, заодно тогда по гидре вопрос, мне что нужно постоянно скачивать данные за последние несколько часов? Я думал гидра только для массовой выгрузки котировок, для удобности тестирования на больших временных промежутках. И вообще как вы, прожженные ребята, делаете в том случае, если вам нужны для робота котировки за последние несколько часов? Не ругайте меня, потому что манами гидры пока не знакомился даже, просто хочется побыстрее получить ответ.
Доктор Сальватор Перейти
Дело в том, что для получения исторических свечей, необходимо сначала написать ваш код, а затем запустить экспорт таблицы всех сделок по DDE. В этом случае вы получите все исторические свечки с начала дня.
Если же вы сначала запустите экспорт таблицы всех сделок по DDE и только потом напишете ваш код, то часть свечей может не записаться в серию candle_lkoh.
Посмотрите в программе, когда вы запускаете экспорт?

так можно или нельзя? Да и как я буду обращаться к тому чего еще нет? Во всех примерах сначала экспорт а потом уже работа с данными. Как это я сначала возьму свечу а потом экспорт запущу?
Автор топика
Спасибо:

OvcharenkoVI

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


Доктор Сальватор тоже истину глаголит. Я использую Альфа-Директ, тут можно выгрузить свечи с сервера. По поводу старта экспорта - он, наверно, имел ввиду старт серии до старта экспорта сделок, хотя метод корявый. Попробуйте со скриптом на qpile
Спасибо:

Доктор Сальватор

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


Цитата:
По поводу старта экспорта - он, наверно, имел ввиду старт серии до старта экспорта сделок

Да, это я и имел ввиду.
tantin, обратите внимание на пример SampleCandles. Вот как он работает:
1. Подключаемся
2. Запускаем экспорт DDE командой _trader.StartExport(new[] { _trader.SecuritiesTable, _trader.TradesTable }); То есть начинаем экспорт таблицы инструментов и таблицы всех сделок.
3. Выбираем инструмент, тип свечи и таймфрейм.
4. Вызываем окно с графиком.

Если время, прошедшее между действиями 2 и 4 составит секунд 5-10, то график, который начинается с 10:00, вы не увидите. Он начнётся с 11:00 или более позднего времени. Это происходит от того, что экспорт таблицы всех сделок начался до того, как вы дадите команду _candleManager.Start(series) в методе ShowChartClick.

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

Поэтому, если вы хотите получить свечку за сегодняшний день, то я бы сделал так:

_candleManager_lkoh = new CandleManager(_trader);
_trader.StartExport(new[] { _trader.SecuritiesTable });

/* Здесь надо разместить код, который присвоит переменной Instrument значение инструмента, с которым вы хотите работать.
Это значение можно получить из таблицы инструментов, экспорт которой вы запустили*/

series_lkoh = new CandleSeries(typeof(TimeFrameCandle), Instrument, _timeFrame);
_candleManager_lkoh.Start(series_lkoh);
_trader.StartExport(new[] { _trader.TradesTable });

var candle_lkoh = series_lkoh.GetCandle(1);
MessageBox.Show(candle_lkoh.ClosePrice.ToString());

Если же вы хотите получить свечку за вчерашний или позавчерашний день, то вам надо использовать либо Гидру - посмотрите в документации раздел Свечки/Склеивание свечек, история+реалтайм. Либо используйте текстовый файл с котировками как в примере SampleSma.

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

esper

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


Доктор Сальватор Перейти
Если время, прошедшее между действиями 2 и 4 составит секунд 5-10, то график, который начинается с 10:00, вы не увидите. Он начнётся с 11:00 или более позднего времени. Это происходит от того, что экспорт таблицы всех сделок начался до того, как вы дадите команду _candleManager.Start(series) в методе ShowChartClick.

Попробуйте вместо _candleManager.Start(series) вызвать _candleManager.Start(series, DateTime.Today, DateTime.Max), т.е. явно указать за какой период нужны свечки.
Спасибо:

Доктор Сальватор

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


esper Перейти
Попробуйте вместо _candleManager.Start(series) вызвать _candleManager.Start(series, DateTime.Today, DateTime.Max), т.е. явно указать за какой период нужны свечки.

Сегодня работает резервный сервер QUIK в Новосибирске, поэтому я попробовал сделать замену, предложенную вами, в примере SampleCandles. Не получилось. Котировки не закачиваются с 10:00.
Спасибо:

Alexander

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


используйте 4.1.2
Спасибо:

tantin

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


esper Перейти

Попробуйте вместо _candleManager.Start(series) вызвать _candleManager.Start(series, DateTime.Today, DateTime.Max), т.е. явно указать за какой период нужны свечки.

пробовал еще до того как к вам обратиться, никаких изменений.

По поводу экспорта,в моем коде он вызываеться так - _trader.StartExport(); а не
_trader.StartExport(new[] { _trader.SecuritiesTable, _trader.TradesTable });
возможно это и играет решающую роль, я проверю в понедельник. Даже скорее всего это и есть.
по поводу
Доктор Сальватор Перейти

tantin, обратите внимание на пример SampleCandles. Вот как он работает:
1. Подключаемся
2. Запускаем экспорт DDE командой _trader.StartExport(new[] { _trader.SecuritiesTable, _trader.TradesTable }); То есть начинаем экспорт таблицы инструментов и таблицы всех сделок.
3. Выбираем инструмент, тип свечи и таймфрейм.
4. Вызываем окно с графиком.

Если время, прошедшее между действиями 2 и 4 составит секунд 5-10, то график, который начинается с 10:00, вы не увидите. Он начнётся с 11:00 или более позднего времени. Это происходит от того, что экспорт таблицы всех сделок начался до того, как вы дадите команду _candleManager.Start(series) в методе ShowChartClick.

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

OvcharenkoVI Перейти
Доктор Сальватор тоже истину глаголит. Я использую Альфа-Директ, тут можно выгрузить свечи с сервера. По поводу старта экспорта - он, наверно, имел ввиду старт серии до старта экспорта сделок, хотя метод корявый. Попробуйте со скриптом на qpile


Я пока только с Квиком работаю.

Alexander Mukhanchikov Перейти
используйте 4.1.2

а где ее взять то? по ссылке, последнее обновление за 29 мая
Автор топика
Спасибо:

Доктор Сальватор

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


Цитата:
какбе он(экспорт) и в вашей последовательности действий стоит до вызова графика

Команда _trader.StartExport(new[] { _trader.SecuritiesTable }) экспортрует только таблицу инструментов. А свечки получают из таблицы всех сделок. Посмотрите ещё раз внимательно код, который я привёл.

Цитата:
и как влияют 5-10 секунд тоже непонятно

Запустите в понедельник этот пример и поэкспериментируйте с 5-10 секундами. Ведь свечки для графика берутся тоже из серии свечек. Просто вы вместо графика используете
MessageBox.Show(candle_lkoh.ClosePrice.ToString());

Цитата:
Я пока только с Квиком работаю.

Посмотрите по этой ссылке http://www.quik.ru/user/download/ в разделе "Прочее" ссылку "Краткая инструкция по языку QPILE ".
А также прочитайте раздел документации S# "QUIK/Экспорт произвольных таблиц"

Цитата:
а где ее взять то? по ссылке, последнее обновление за 29 мая

Сходите по ссылке http://stocksharp.codeplex.com/. Раздел "source code" содержит последние обновления.
Спасибо: tantin

tantin

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


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

tantin

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


все изменил как вы советовали - не помогло, пошел курить "экспорт произвольных таблиц", а вы то сами как свечки экспортите?
Ps все в порядке - разобрался, все работает, в ближайшее время выложу прогу на ваше суждение
Автор топика
Спасибо:

Arhn

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


Ребята, может я не в тему, но это потому что у меня уже мозги вскипели. Ни как не могу понять, что я делаю не так, вроде все по мануалу, но свечки не появляются, один пустой график.


XAML


КОД
Спасибо:

Arhn

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


Ребята, извините пожалуйста, оказывается все работает.
Просто я до этого проверял на ММВБ после закрытия и на демке.Blushing
Спасибо:


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

loading
clippy