dart
|
Дата: 19.03.2010
Да, текущая свечка постоянно меняется - это видно, в соответствии с
ценой последних сделок.
На бирже, то есть в квике и на графике в S# время 19:50. Местное, то
которое на компьютере 22:50. Разница может быть плюс/минус секунд 20 .
|
|
|
|
Спасибо:
|
|
|
|
|
|
Mikhail Sukhov
|
Дата: 19.03.2010
Видимо в этом и причина - время не московское. Инициализируйте
MarketTimeOffset или подведите время.
|
|
|
|
Спасибо:
|
|
|
|
|
|
dart
|
Дата: 19.03.2010
Да я уж понял. В документации по 1.7 есть пунктик - биржевое время.
Может стоит MarkettimeOffset в текст примеров вставлять скажем с
нулем для Москвы, а каждый сам будет необходимый сдвиг подставлять?
А в 1.5 я что-то его не нашёл.
Вермя на компе не могу подвести, только на учебном квике. На боевом
дата в Глобалсервер записывается.
|
|
|
|
Спасибо:
|
|
|
|
|
|
denis
|
Дата: 20.03.2010
поставил бряк на последней строчке в SMA.cs
public void Add(TimeFrameCandle candle)
{
if (candle == null)
throw new ArgumentNullException("candle");
var value = this.Value;
// добавляем новое начало
value += candle.ClosePrice / this.Length;
_buffer.Add(candle);
и посмотрел буфер, сравнил this.Value с СМА в квик-джуниор, сходятся.
Сделок придется долго ждать, там все растет :)
Сейчас я ему мозги выключу, посмотрю чего выкинет.
а вот уже приехал еррор :) прикладываю скрин
https://docs.google.com/leaf?id=0Bw2gQDvf41vtN2RkZGZjNzItMjJhMC00Mjc4LWFmMjgtY2VkOWVkYzI3MTJh&sort=name&layout=list&num=50
т.е. симлСМА пытается чего-то делать.
|
|
|
|
Спасибо:
|
|
|
|
|
|
dart
|
Дата: 23.03.2010
Почему то MarketTime выдаёт не биржевое время, а локальное. Вот код:
// путь к Квик директории
const string quikPath = @"C:\BCS_Work\Учебный QUIK
БКС";
using (var waitHandle = new ManualResetEvent(false))
{
// создаем соединение с Quik-ом
using (var trader = new QuikTrader(quikPath))
{
// выводим текущее время биржи
Console.WriteLine(trader.MarketTime);
// устанавливаем смещение на +3 часа.
// Например, если выбрана биржа РТС (Москва) с
временной зоной +3, то в итоге получится временная зона +6
(Новосибирск).
trader.MarketTimeOffset =
TimeSpan.FromHours(3);
// выводим текущее время биржи с учетом
смещения
Console.WriteLine(trader.MarketTime);
Первый раз (до MarketTimeOffset) вывело локальное время (+3 к Москве).
Второй раз, (после MarketTimeOffset) к локальному ещё три часа
добавило. Причём самое интересное, после того совершения сделки время
сделки указывает московское.
|
|
|
|
Спасибо:
|
|
|
|
|
|
Mikhail Sukhov
|
Дата: 23.03.2010
QuikTrader не имеет возможности получать биржевое время. Поэтому
выводит DateTime.Now. Для корректировки я как раз и ввел
MarketTimeOffset.
Да, есть такое. Квик гонит данные только в московском времени. Создает
проблемы?
|
|
|
|
Спасибо:
|
|
|
|
|
|
dart
|
Дата: 23.03.2010
То есть, скажем для Новосибирска должно быть, биржевое время ( =
московскому = квиковскому) 17:00, локальное 20:00, Markettime (после
MarketTimeOffset) 23:00?
|
|
|
|
Спасибо:
|
|
|
|
|
|
Mikhail Sukhov
|
Дата: 23.03.2010
Не понял логики. Москва - это +3, Новосиб - это +6. Соответвенно, если
Вы в новосибе, нужно делать -3, а не +3. Иначе получится уже
Хабаровскй. Делать минус можно так (собственно как плюс, только там
знак минус =) ):
trader.MarketTimeOffset = TimeSpan.FromHours(-3);
|
|
|
|
Спасибо:
|
|
|
|
|
|
dart
|
Дата: 23.03.2010
|
|
|
|
|
Я так и делаю в SampleSMA:
private void Connect_Click(object sender, RoutedEventArgs e)
{
if (this.Path.Text.IsEmpty())
MessageBox.Show(this, "Путь к Quik не выбран");
else if (this.Account.Text.IsEmpty())
MessageBox.Show(this, "Счет не задан");
else
{
_trader = new QuikTrader(this.Path.Text);
_trader.MarketTimeOffset = TimeSpan.FromHours(-3);
_candleManager = new CandleManager(_trader);
_trader.NewSecurities += securities => this.Sync(() =>
выскакивает ошибка (не сразу, а спустя какое-то время):
System.InvalidOperationException: Последовательность не содержит
элементов
в System.Linq.Enumerable.First[TSource](IEnumerable ¶ source)
в Ecng.Trading.Algo.TraderHelper.GetFilteredQuotes(IEnumerable ¶
quotes,
ITrader trader, OrderCurrentOrder)
в Ecng.Trading.Algo.TraderHelper.GetFilteredQuotes(Security
security,
OrderDirections orderDirection, ITrader trader, OrderCurrentOrder)
в Ecng.Trading.Algo.QuotingStrategy.get_FilteredQuotes()
в Ecng.Trading.Algo.QuotingStrategy.GetBestPrice()
в Ecng.Trading.Algo.MarketQuotingStrategy.GetNewPrice()
в Ecng.Trading.Algo.QuotingStrategy.IsNeedReRegister()
в Ecng.Trading.Algo.QuotingStrategy.OnProcess()
в Ecng.Trading.Algo.Strategy.Process()
И в этом случае скользящие рисуются не до последней свечки , а до пред-
пред-последней, то есть третьей с конца свечки.
Без .MarketTimeOffset рисуются до последней.
|
|
|
|
Спасибо:
|
|
|
|
|
|
Mikhail Sukhov
|
Дата: 23.03.2010
Стакан нужно экспортировать для SampleSMA. Уже найдена эта бага в
примере ранее.
Насчет свечек. Странное поведение. Посмотрю.
|
|
|
|
Спасибо:
|
|
|
|
|