помогите со свечками
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 минуты. Просветите нуба!

Теги:


Спасибо:


1 2  >
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
Спасибо:
1 2  >

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

loading
clippy