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


Добрый день. Очень понравилась идея использования Вашей библиотеки для реализации роботов. Подскажите, пожалуйста:

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

Теги:


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


<< < 4 5 6 7 8  > >>
a.dobryn

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


в классе Trade есть член ExtensionInfo типа IDictionary<TKey, TValue>. А как узнать, какие ключи там есть? Конкретно мне нужно узнать, по какому лимиту была выставлена сделка

Спасибо:

Mikhail Sukhov

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


D_Alex: в классе Trade есть член ExtensionInfo типа IDictionary<TKey, TValue>. А как узнать, какие ключи там есть? Конкретно мне нужно узнать, по какому лимиту была выставлена сделка

Значение в ExtensionInfo так просто не попадают. Необходимо заранее настраивать ДДЕ метаданные через QuikTrader.TradesTable. Здесь это рассказывается как сделать. И обращаться в последствии нужно так:

var someValue = someTrade.ExtensionInfo[DdeTradeColumns.SomeColumn];
Спасибо: a.dobryn

Mikhail Sukhov

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


Valdis: я что то не пойму , почему событие Trader.PositionsChanged вызывается и при выставлении заявок и при исполнении их и даже просто, когда ни чего с позициями/заявками не происходит ?

События вызываются всегда, когда Квик через ДДЕ посылает обновление таблицы с позициями. А происходит это не только тогда, когда происходит сделка. В этой таблице есть и поля, которые изменяются постоянно.

Спасибо:

gs

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


У меня вопрос к знатокам C# и Trans2Quik.

У меня автомат работает с квиком через файловый ввод заявок и работают три разных Квика. Я решил попробовать использовать Trans2Quik. Правильно ли я понимаю, что при этом мне нужно писать разные классы-врапперы Trans2Quik для каждой TRans2Quik.dll ? Ну, например, что то вроде такого:

public interface ITrans2Quik { // члены интерфейса }

// TRANS2QUIK_1.DLL public class Trans2Quik_1 : ITrans2Quik {
private readonly string _pathToQuik;

    [DllImport("TRANS2QUIK_1.DLL", EntryPoint = "_TRANS2QUIK_CONNECT@16", CallingConvention = 					CallingConvention.StdCall)]
    public static extern long connect(string lpcstrConnectionParamsString, ref long pnExtendedErrorCode,
       byte[] lpstrErrorMessage, UInt32 dwErrorMessageSize);

// и т.д. }

// TRANS2QUIK_2.DLL public class Trans2Quik_2 : ITrans2Quik {
private readonly string _pathToQuik;

    [DllImport("TRANS2QUIK_2.DLL", EntryPoint = "_TRANS2QUIK_CONNECT@16", CallingConvention = 				CallingConvention.StdCall)]
    public static extern long connect(string lpcstrConnectionParamsString, ref long pnExtendedErrorCode,
       byte[] lpstrErrorMessage, UInt32 dwErrorMessageSize); 

// и т.д.
}

Таким образом, в данной реализации для добавления нового Квика, работающего со своей TRans2Quik.dll мне нужно создавать и новый класс Trans2Quik_N. Дело в том, что 1-ый параметр DllImport это const string.

Вопрос: Нельзя ли как то на С# динамически создавать тип Trans2Quik, но с разными значениями поля где храниться значение "TRANS2QUIK.DLL" ?

Или подскажите идею реализации добавления нового враппера при помощи создания нового экземпляра без создания нового класса.

Спасибо:

Mikhail Sukhov

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


gs: Или подскажите идею реализации добавления нового враппера при помощи создания нового экземпляра без создания нового класса.

http://stocksharp.com/doc/help/html/9fb00dd4-4f0a-42a9-ab0f-9946b7acf6fe.htm

Спасибо:

a.dobryn

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


Mikhail Sukhov:

D_Alex: в классе Trade есть член ExtensionInfo типа IDictionary<TKey, TValue>. А как узнать, какие ключи там есть? Конкретно мне нужно узнать, по какому лимиту была выставлена сделка

Значение в ExtensionInfo так просто не попадают. Необходимо заранее настраивать ДДЕ метаданные через QuikTrader.TradesTable. Здесь это рассказывается как сделать. И обращаться в последствии нужно так:

var someValue = someTrade.ExtensionInfo[DdeTradeColumns.SomeColumn];


понятно, спасибо =)


еще вопрос: мне нужно заменять заявку после того, как она частично исполнена. У меня есть сейчас событие NewMyTrades, но там есть данные типа Trade, а для замены заявки нужно получить тип Order. Можно ли как-то найти по сделке заявку?
Спасибо:

Serg

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


В Trade есть данные о сделке и об ордере.

Спасибо: a.dobryn

a.dobryn

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


Serg: В Trade есть данные о сделке и об ордере. http://stocksharp.com/doc/Default.aspx тут нет

а, все, поняла =) спасибо =)

Спасибо:

a.dobryn

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


как использовать trader.GuarantyCancelOrder(registeredOrder)? написано, что trader должен быть типа TraderHelper, откуда его взять?

Спасибо:

a.dobryn

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


еще вопрос - как определить, что заявка была именно исполнена, а не снята? State будет Done, а что еще посмотреть? При снятии заявки Balance в Order обнуляется или остается?

upd: все, глупый вопрос, есть метод IsMatched() upd2: а у меня нет такого метода для order

Спасибо:
<< < 4 5 6 7 8  > >>

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

loading
clippy