Не идут сделки в SampleSMA
Atom Ответить
19.03.2010


Сегодня открыл учебный квик в БКС (он там 5.15) чтобы версию S#1.7
попробовать.
Приложенный wnd файл не открылся. Пишет ошибку переполнение памяти и
квик вылетает.
Вобщем вручную настроил. Единственное в таблице стоп-заявки нескольких
полей не нашёл (время действия, активна с, активны по и т.д.). Ну да
бог с ним. Всё работает нормально Sample, SampleConsole, SampleCandle.
В SampleSMA строятся свечки, скользящие средние пересекаются вверх,
вниз - а сделки не идут.
Может потому что в OnProcess после Gettimeframecandle алгоритм доходит
до строк
if (candle == null)
return true;
а дальше не идёт?

Теги:


Спасибо:




21 Ответов
denis

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


Поставьте бряк и посмотрите что там.
Только таймфрейм нужно уменьшить, а то ждать придется.

Спасибо:

dart

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


if (candle == null)
return true;
break;
Так? Так не дает, пишет отсутствует внешний цикл для прерывания или
продолжения
А ТФ я давно до 1 минуты уменьшил

Автор топика
Спасибо:

denis

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


брейк пойнт - точка останова для отладки. Нажать на левый край окна,
будет красная точка

Спасибо:

dart

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


Ну да, так и есть. Код выполняется до строчки return true , а до
следующей this.LongSma.Add(candle) уже не доходит.

Автор топика
Спасибо:

denis

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


Нет свечек, искать почему нет. Можно попробовать подождать пару сек,
чтобы была хотя бы одна свечка и несколько сделок после нее. Потом
ставить бряк, смотреть что поймали, если ничего, то жать Ф5.

Спасибо:

dart

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


Интересно, это у меня одного только такие глюки, а у всех остальных в
СМА сделки идут?
Поставил Thread.Sleep(2000) перед GetTimeFrameCandle с тем же
результатом.
Денис, даже твоя экзешка (которая без Визифайр) тотже результат
выдаёт.

Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 19.03.2010
Ответить


А сделки экспортируются? QuikTrader.DdeError ничего не пишет плохого?

Спасибо:

dart

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


Да, экспорт идёт. Да иначе бы графики не строились (графики строятся
отлично)..
У меня один боевой квик 5.14 с S#1.5, второй учебный на другом компе
5.15 c S#1.7.
И там и там результат один и тот же что на RIM0, что на LKOH.
Таймфрейм 1 мин.

Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 19.03.2010
Ответить


А текущая свечка на графике рисуется (она должна изменятся). Какое по
ней время? Текушее?

У Вас время совпадает с биржей? CandleManager.GetTimeFrameCandles до
if (candle == null) return true; какую свечку с наибольшей датой
возвращает? Какое время в данный момент на машине?

Спасибо:

denis

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


Сейчас пытался воспроизвести ситуацию,
запустил квик-джуниор, выбрал лук, приехали 147 тыс сделок и увидел
загруз по процу. Сейчас уже 173т. а таск менеджер рисует пики на все
ядро при быстром режиме показа. Это еще сделки редкие, не каждую
секунду.

Продолжаю копать дальше :)

Спасибо:

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

Фотография
Дата: 19.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. Уже найдена эта бага в
примере ранее.

Насчет свечек. Странное поведение. Посмотрю.

Спасибо:

dart

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


Спасибо. Добавил экспорт стакана - сделки пошли.

Автор топика
Спасибо:


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

loading
clippy