Вопросы новичка в S# (Закрыта)
Atom
01.12.2010


ttt

Фотография
Добрый день.
Очень понравилась идея использования Вашей библиотеки для реализации роботов.
Подскажите, пожалуйста:
1) Как идентифицировать заявку?
//например, выставляю заявку buy RIZ0 4 контракта по цене 160500. Каким образом далее смогу ее отслеживать?
Вариант с использованием таблицы сделок не подходит - необходимо реализовать контроль исполнения заявок пользуясь исключительно информацией из таблицы заявок.
С языком C# только начал разбираться, возможно поэтому не нашел в представленных в дистрибутиве S# проектах примеров контроля состояния заявки по ее уникальному признаку.
2) Верно ли я понимаю суть работы с Квиком: для реализации автономного робота необходимо организовать два потока на C#:
- первый: выполняет функции получения данных из Квика через DDE сервер (используя библиотеку S#);
- второй: непосредственно реализует алгоритм выставления и снятия заявок.
Можно ли обойтись одним потоком?

Теги:


Спасибо: Николай_Флёров




506 Ответов
<< < 5 6 7 8 9  > >>
Alexander

Фотография
Дата: 16.03.2011


Igor_B Перейти
Михаил. доброе время.
Создали и экспортируем собственную таблицу из Квик. Данные по ДДЕ получаем (код, цена последней сделки, время посл.сделки...), сейчас пробуем экспорт стакана.
Работаем в своем приложении.
1.Можно ли экспортировать данные стакана (и/или любые другие) без открытия в Квике таблиц Инструменты...
2.Пробовали создавать таблицу инструменты в Квике (пример LKOH), при выполнении
lkoh = new Security();
Trader.RegisterQuotes(lkoh); - ошибка
"Для инструмента не было найдено информации в таблице инструменты.
Parameter name: security"
В чем м.б. ошибка?
Спасибо.





1) При экспорте стакана необходимо указать инструмент => нельзя, его необходимо получить.
2) Инструмент надо не создавать, а брать - он придёт как раз при экспорте таблицы инструментов.
Спасибо:

Igor_B

Фотография
Дата: 16.03.2011


Alexander Перейти
Igor_B Перейти
Михаил. доброе время.
Создали и экспортируем собственную таблицу из Квик. Данные по ДДЕ получаем (код, цена последней сделки, время посл.сделки...), сейчас пробуем экспорт стакана.
Работаем в своем приложении.
1.Можно ли экспортировать данные стакана (и/или любые другие) без открытия в Квике таблиц Инструменты...
2.Пробовали создавать таблицу инструменты в Квике (пример LKOH), при выполнении
lkoh = new Security();
Trader.RegisterQuotes(lkoh); - ошибка
"Для инструмента не было найдено информации в таблице инструменты.
Parameter name: security"
В чем м.б. ошибка?
Спасибо.





1) При экспорте стакана необходимо указать инструмент => нельзя, его необходимо получить.
2) Инструмент надо не создавать, а брать - он придёт как раз при экспорте таблицы инструментов.


Александр,

Мы хотим получать инструменты не из таблицы "Инструменты", а из нашей собственной таблицы, чтобы не привязываться к встроенным таблицам. Возможно ли такое?
Спасибо:

Mikhail Sukhov

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


Igor_B Перейти

2.Пробовали создавать таблицу инструменты в Квике (пример LKOH), при выполнении
lkoh = new Security();
Trader.RegisterQuotes(lkoh); - ошибка
"Для инструмента не было найдено информации в таблице инструменты.
Parameter name: security"
В чем м.б. ошибка?
Спасибо.


А все основные поля у инструмента заполнили (код класс идентификатор имя)?
Спасибо:

Zachard

Фотография
Дата: 16.03.2011


Добрый день!
Я только начал разбираться с библиотекой, скачал последнюю бету, запустил проект в Visual C# 2010 Express и тут же получил сообщение об ошибке: "Папки решений не поддерживаются в этой версии приложения. Папка решения "Hydra" будет отображаться как недоступная"
И то же самое - для "Plugins" и "Solution Items"

Пожалуйста, подскажите, в какую сторону копать? Может быть, Экспресс-выпуск не поддерживает папки? Или проблема в другом? Более ранние версии открываются нормально.
Спасибо:

VsevolodG

Фотография
Дата: 16.03.2011


VsevolodG Перейти
Подскажите, пожалуйста, по какой причине может не отрабатывать событие MyNewTrades?
Сделка в Quik появляется, а код, привязанный к событию MyNewTrades не отрабатывает.

Вот мой код:

this.Trader.NewMyTrades += myTrades =>
{
foreach (var myTrade in myTrades)
{
var trade = myTrade.Trade;
MessageBox.Show(String.Format("Сделка {0} по цене {1} по бумаге {2} по объему {3} в {4}.", trade.Id, trade.Price, trade.Security.Code, trade.Volume, trade.Time));
}
};

this.Trader.Terminal.StartDde(Trader.SecuritiesTable, Trader.MyTradesTable, Trader.EquityPositionsTable);


Эксперименты показали, что в случае если происходит сделка по тейк-профиту, событие NewMyTrades не вызывается
А в случае если я создаю простую заявку, событие отрабатывает.

Подскажите, пожалуйста, в чем подвох? Мне необходимо отслеживать любые новые "мои сделки"
Спасибо:

Mikhail Sukhov

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


Zachard Перейти
Может быть, Экспресс-выпуск не поддерживает папки?


Верно. Это ограничение бесплатной версии студии.
Спасибо:

Mikhail Sukhov

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


VsevolodG Перейти

Эксперименты показали, что в случае если происходит сделка по тейк-профиту, событие NewMyTrades не вызывается


Как именно создаете тейк? Какие параметры указываете? Что говорит пример Sample?
Спасибо:

VsevolodG

Фотография
Дата: 16.03.2011


Mikhail Sukhov Перейти
VsevolodG Перейти

Эксперименты показали, что в случае если происходит сделка по тейк-профиту, событие NewMyTrades не вызывается


Как именно создаете тейк? Какие параметры указываете? Что говорит пример Sample?


Тейк создаю вот так:

private void RegisterTakeProfit(Security Security, OrderDirections Direction, double price)
{
this.GuiAsync(() =>
{
var order = new Order
{
Portfolio = (Portfolio)this.cbBill.SelectedItem,
Type = OrderTypes.Conditional,
Volume = 1,
Security = Security,
Direction = Direction,
StopCondition = new QuikStopCondition
{
Type = QuikStopConditionTypes.TakeProfit,
StopPrice = price,
Offset = this._step,
Spread = this._step
}
};
this.Trader.RegisterOrder(order);
});
}


Насчет примера Sample, не совсем понял вопрос.
Попытался догадаться -) Запустил пример sample вручную создал тейк, он отработал - sample ничего не сказал
Спасибо:

Mikhail Sukhov

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


VsevolodG Перейти

Попытался догадаться -) Запустил пример sample вручную создал тейк, он отработал - sample ничего не сказал


Заявки Sample вывел? Сделки?
Спасибо:

VsevolodG

Фотография
Дата: 17.03.2011


Mikhail Sukhov Перейти
VsevolodG Перейти

Попытался догадаться -) Запустил пример sample вручную создал тейк, он отработал - sample ничего не сказал


Заявки Sample вывел? Сделки?


Да, в Sample работает нормально. Все выводит
Спасибо:

VsevolodG

Фотография
Дата: 17.03.2011


VsevolodG Перейти
Mikhail Sukhov Перейти
VsevolodG Перейти

Попытался догадаться -) Запустил пример sample вручную создал тейк, он отработал - sample ничего не сказал


Заявки Sample вывел? Сделки?


Да, в Sample работает нормально. Все выводит


Разница в примере и в моем коде заключается в способе запуска обмена данными:

//мой код
this.Trader.Terminal.StartDde(Trader.SecuritiesTable, Trader.MyTradesTable, Trader.EquityPositionsTable);

//код в примере
this.Trader.StartExport();

В случае если я использую StartExport, проблема решается.
Объясните, пожалуйста, в чем разница между этими методами?
Спасибо:

Mikhail Sukhov

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


VsevolodG Перейти
Разница в примере и в моем коде заключается в способе запуска обмена данными:

//мой код
this.Trader.Terminal.StartDde(Trader.SecuritiesTable, Trader.MyTradesTable, Trader.EquityPositionsTable);

//код в примере
this.Trader.StartExport();

В случае если я использую StartExport, проблема решается.
Объясните, пожалуйста, в чем разница между этими методами?


Вы забыли самое главное - экспорт заявок Trader.OrdersTable. Плюс не отслеживается состояние стоп-заявки, так как и эта таблица не экспортируется.

По стоп заявкам сделок не существует. Стоп заявки выставляют обычные и уже по ним происходит сделки. QuikTrader нужна информация о заявке, так как MyTrade (не путаем с известным блоггеромSmile) - это лишь объединение заявки и тиковой сделки.
Спасибо:

MCTuTeJ|19951995

Фотография
Дата: 17.03.2011


Михаил, а что нужно чтобы работал метод Trader.Terminal.OpenQuotes(Security) ? Насколько я понял этот метод должен открывать окно со стаканом по переданному инструменту, но он не делает нечего. Метод Trader.RegisterQutes(Security) окно со стаканом не открывает, но очень весело прочесывает таблицу "инструменты" (я даже испугался когда первый раз это увидел :D), после чего выдает ошибку "окно с заголовком не найдено". Мне нужно в коде открыть окно и подписаться на котировки по инструменту.
Спасибо:

MCTuTeJ|19951995

Фотография
Дата: 17.03.2011


Версия s# 2.6
Спасибо:

VsevolodG

Фотография
Дата: 17.03.2011


Mikhail Sukhov Перейти

Вы забыли самое главное - экспорт заявок Trader.OrdersTable. Плюс не отслеживается состояние стоп-заявки, так как и эта таблица не экспортируется.

По стоп заявкам сделок не существует. Стоп заявки выставляют обычные и уже по ним происходит сделки. QuikTrader нужна информация о заявке, так как MyTrade (не путаем с известным блоггеромSmile) - это лишь объединение заявки и тиковой сделки.


Понял, спасибо!
Спасибо:

Mikhail Sukhov

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


MCTuTeJ|19951995 Перейти
Версия s# 2.6


Ошибка исправлена в 3.0
Спасибо:

Igor_B

Фотография
Дата: 17.03.2011


Mikhail Sukhov Перейти
Igor_B Перейти

2.Пробовали создавать таблицу инструменты в Квике (пример LKOH), при выполнении
lkoh = new Security();
Trader.RegisterQuotes(lkoh); - ошибка
"Для инструмента не было найдено информации в таблице инструменты.
Parameter name: security"
В чем м.б. ошибка?
Спасибо.


А все основные поля у инструмента заполнили (код класс идентификатор имя)?

Михаил, доброе время.
Создали таблицу инструменты для ЛУКОЙЛа. Вывели все поля в таблицу (бумага, бумага сокращ, код бумаги.....).
В приложении
lkoh.ShortName = "ЛУКОЙЛ";
lkoh.Code = "LKOH";
lkoh.Class = "EQBR";
lkoh.Id = "LKOH";//ЛУКОЙЛ [А1-Акции]";
Затем

Trader.RegisterQuotes(lkoh); - выдает ошибку
Для инструмента LKOH не было найдено информации в таблице инструменты.
Parameter name: security

Правильно ли указали Id - ?
Спасибо.
Спасибо:

Mikhail Sukhov

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


Igor_B Перейти

lkoh.ShortName = "ЛУКОЙЛ";
lkoh.Code = "LKOH";
lkoh.Class = "EQBR";
lkoh.Id = "LKOH@EQBR";//ЛУКОЙЛ [А1-Акции]";
Затем

Trader.RegisterQuotes(lkoh); - выдает ошибку
Для инструмента LKOH не было найдено информации в таблице инструменты.
Parameter name: security



А версия какая?
Спасибо:

Igor_B

Фотография
Дата: 17.03.2011


Mikhail Sukhov Перейти
Igor_B Перейти

lkoh.ShortName = "ЛУКОЙЛ";
lkoh.Code = "LKOH";
lkoh.Class = "EQBR";
lkoh.Id = "LKOH@EQBR";//ЛУКОЙЛ [А1-Акции]";
Затем

Trader.RegisterQuotes(lkoh); - выдает ошибку
Для инструмента LKOH не было найдено информации в таблице инструменты.
Parameter name: security



А версия какая?

Версия 3. Id = "LKOH@EQBR" - пробовали так - такая же ошибка. Может ли быть ошибка из-за того,
что настройка столбцов таблицы отличается от настройки таблицы "инструменты" в Sample.
Спасибо:

Mikhail Sukhov

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


Igor_B Перейти
Версия 3. Id = "LKOH@EQBR" - пробовали так - такая же ошибка. Может ли быть ошибка из-за того,
что настройка столбцов таблицы отличается от настройки таблицы "инструменты" в Sample.


А они у вас отличаются? Приведите список колонок... Кстати, а в чем эта сакраментальная идея не экспортировать инструменты?
Спасибо:

Igor_B

Фотография
Дата: 17.03.2011


Mikhail Sukhov Перейти
Igor_B Перейти
Версия 3. Id = "LKOH@EQBR" - пробовали так - такая же ошибка. Может ли быть ошибка из-за того,
что настройка столбцов таблицы отличается от настройки таблицы "инструменты" в Sample.


А они у вас отличаются? Приведите список колонок... Кстати, а в чем эта сакраментальная идея не экспортировать инструменты?

Михаил,
мы пока не хотим создавать весь набор таблиц (Сделки, Портфель, Деривативы...), создаем таблицу инструменты, хотим из нее экспортировать данные, создать стакан для какого-либо инструмента.
Данные из customTable - мы успешно экспортируем, но хотели бы и задействовать стакан.

Как правильнее сделать?
Спасибо.
Спасибо:

Mikhail Sukhov

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


Igor_B Перейти

Как правильнее сделать?
Спасибо.


Правильнее будет создать таблицу Инструменты. Ее одной на первое время хватит. Думаю, 8 колонок - это не так уж много.
Спасибо:

Igor_B

Фотография
Дата: 17.03.2011


Mikhail Sukhov Перейти
Igor_B Перейти

Как правильнее сделать?
Спасибо.


Правильнее будет создать таблицу Инструменты. Ее одной на первое время хватит. Думаю, 8 колонок - это не так уж много.

Михаил, спасибо за ответ.
След.вопрос - решили сделать экспорт через метод StartExport. Все необходимые таблицы создали. Стакан создали в Квик. DDE -
стартовал.
далее
Trader.RegisterQuotes(lkoh); - прошло+
Сделали Sleep(2000);
Далее из примера
foreach (var qoute in Trader.GetMarketDepth(lkoh))
{
MessageBox.Show("Dir="+qoute.OrderDirection.ToString() + " V="+qoute.Volume.ToString() +" $="+ qoute.Price.ToString());
}
- проходит минуя блок Confused
В чем м.б. причина. Надо ли подписываться на какое-либо событие
Спасибо:

Mikhail Sukhov

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


Igor_B Перейти

В чем м.б. причина. Надо ли подписываться на какое-либо событие


Конечно. ITrader.QuotesChanged.
Спасибо: Igor_B

VsevolodG

Фотография
Дата: 18.03.2011


Уточните, пожалуйста:
1. 1951.1 + 1.5 (защ. спрэд) = 1952,6. Почему заявка выставлена по большей цене и откуда она взялась?
2. Почему цена сделки отличается от цены заявки?

Тэйк-профит на покупку:
Цена <= 1951.1
Отступ от мин min: 1.5
Защитный спрэд: 1.5

По тэйк-профиту выставлена заявка на покупку:
Цена: 1953,5

По заявке появилась сделка:
Цена: 1952,3
Спасибо:
<< < 5 6 7 8 9  > >>

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

loading
clippy