Вопросы новичка в 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/do...a9-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