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


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

Теги:


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


<< < 29 30 31 32 33  > >>
Alexander

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


crapulent
приветсвую
спасибо огромное за удобную библиотеку

возник вопрос:
использую квик.
регистрирую заявку через trader.registerOrder
возможно ли отследить неудачу при посылке транзакции на биржу (например если интернет падал, но квик еще не прислал Disconnected)?


OrdersFailed
Спасибо:

crapulent

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


пробовал. не работае.
кусок кода:
Код
...
trader.OrdersFailed += fails =>
{
foreach (var fail in fails)
{
Console.WriteLine("E: " + fail.Error);
}
};
Security sec = trader.Securities.First(s => s.Code == "LKOH");
trader.IsAsyncMode = true;
Order order = new Order()
{
Security = sec,
Volume = 1,
Direction = OrderDirections.Buy,
Price = price,
Portfolio = port,
};

Console.Write(">");
Console.ReadKey();
trader.RegisterOrder(order);

дожидаюсь ">", отключаю интернет, жмакаю.
ордерзфэйлд не приходит.
Спасибо:

crapulent

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


в догонку еще вопрос.
Код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Ecng.Trading.Quik;
using System.IO;

namespace MultiQuikTest
{
class Program
{
static void Main(string[] args)
{
try
{
foreach (var t in QuikTerminal.Terminals)
{
File.AppendAllText("output", t.DirectoryName + "\r\n");
}
}
catch (Exception ex)
{
File.AppendAllText("output", ex.ToString());
}
Console.ReadKey();
}
}
}


если запущено больше одного квика получаю эксепшн, если 1, то все ок.
windows 7

Цитата:
System.InvalidCastException: Заданное приведение является недопустимым.
в System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
в System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(Int32 errorCode)
в System.Management.ManagementScope.InitializeGuts(Object o)
в System.Management.ManagementScope.Initialize()
в System.Management.ManagementObjectSearcher.Initialize()
в System.Management.ManagementObjectSearcher.Get()
в Ecng.Interop.WinApi.GetOwner(Process process)
в Ecng.Trading.Quik.QuikTerminal.#=qMfrcg9BqoX_SrZ_PniRSkM_HjG66XqOI62YKPEESM$8=.#=q2Ey9GcWR9id72injkpK63zAr0R9wXuqBWricx3tkazE=(Process #=qkq4$1ICccTWVLKEFpo7ccw==, Process #=qzKCUSHcFINff4MoQJ2AUZA==)
в Ecng.Collections.CollectionHelper.Comparer`1.Compare(T x, T y)
в System.Linq.EnumerableSorter`2.CompareKeys(Int32 index1, Int32 index2)
в System.Linq.EnumerableSorter`1.QuickSort(Int32[] map, Int32 left, Int32 right)
в System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count)
в System.Linq.OrderedEnumerable`1.<GetEnumerator>d__0.MoveNext()
в System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
в System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
в System.Linq.Buffer`1..ctor(IEnumerable`1 source)
в System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
в Ecng.Trading.Quik.QuikTerminal.get_Terminals()
в MultiQuikTest.Program.Main(String[] args) в D:\root\workspace\rts\csharpsolutions\revision_3_2011_05_10\MultiQuikTest\MultiQuikTest\Program.cs:строка 17


не подскажете, с чем может быть связано?
Спасибо:

Stanislav121

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


Mikhail Sukhov
Stanislav121
Какова может быть максимальная скорость работы робота(выставление заявок) ?
От чего это зависит?


Если вы задаете подобные вопросы, то скорее всего идете по неправильному пути. (с) жизненный опыт.[smile]

Почему?
Спасибо:

Mikhail Sukhov

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


Stanislav121
Mikhail Sukhov
Stanislav121
Какова может быть максимальная скорость работы робота(выставление заявок) ?
От чего это зависит?


Если вы задаете подобные вопросы, то скорее всего идете по неправильному пути. (с) жизненный опыт.[smile]

Почему?


Если вы задаете подобные вопросы, значит у вас стратегия зависит от скорости выставления заявок. Квик - это не тот терминал, который бы подобное мог обеспечить. Он конечно может выставить хоть 10000 заявок в минуту (главное чтобы брокер не зарубил), но задержка в получении маркет данных (ситуация в стакане меняется намного чаще, чем это транслирует Квик) и проскальзывание на бирже сведет на нет всю быстроту (или вы будете лепить заявки по невыгодным ценам).
Спасибо:

Stanislav121

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


Mikhail Sukhov
Stanislav121
Mikhail Sukhov
Stanislav121
Какова может быть максимальная скорость работы робота(выставление заявок) ?
От чего это зависит?


Если вы задаете подобные вопросы, то скорее всего идете по неправильному пути. (с) жизненный опыт.[smile]

Почему?


Если вы задаете подобные вопросы, значит у вас стратегия зависит от скорости выставления заявок. Квик - это не тот терминал, который бы подобное мог обеспечить. Он конечно может выставить хоть 10000 заявок в минуту (главное чтобы брокер не зарубил), но задержка в получении маркет данных (ситуация в стакане меняется намного чаще, чем это транслирует Квик) и проскальзывание на бирже сведет на нет всю быстроту (или вы будете лепить заявки по невыгодным ценам).


Да, стратегия зависит от скорости выставления заявок.
Не очень Вас понимаю.
Задержка получения данных характерна для quik или для других серверов тоже(TSLab там или TRANSAQ Connector)?
Ну и 10k заявок в минуту не нужно.
Спасибо:

Mikhail Sukhov

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


Stanislav121
Задержка получения данных характерна для quik или для других серверов тоже(TSLab там или TRANSAQ Connector)?


Задержка есть везде. У всех она примерно одинаковая. Если скорости Квика не хватает, переходите на прямое подключение.
Спасибо:

Alexander

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


crapulent
в догонку еще вопрос.
Код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Ecng.Trading.Quik;
using System.IO;

namespace MultiQuikTest
{
class Program
{
static void Main(string[] args)
{
try
{
foreach (var t in QuikTerminal.Terminals)
{
File.AppendAllText("output", t.DirectoryName + "\r\n");
}
}
catch (Exception ex)
{
File.AppendAllText("output", ex.ToString());
}
Console.ReadKey();
}
}
}


если запущено больше одного квика получаю эксепшн, если 1, то все ок.
windows 7

Цитата:
System.InvalidCastException: Заданное приведение является недопустимым.
в System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
в System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(Int32 errorCode)
в System.Management.ManagementScope.InitializeGuts(Object o)
в System.Management.ManagementScope.Initialize()
в System.Management.ManagementObjectSearcher.Initialize()
в System.Management.ManagementObjectSearcher.Get()
в Ecng.Interop.WinApi.GetOwner(Process process)
в Ecng.Trading.Quik.QuikTerminal.#=qMfrcg9BqoX_SrZ_PniRSkM_HjG66XqOI62YKPEESM$8=.#=q2Ey9GcWR9id72injkpK63zAr0R9wXuqBWricx3tkazE=(Process #=qkq4$1ICccTWVLKEFpo7ccw==, Process #=qzKCUSHcFINff4MoQJ2AUZA==)
в Ecng.Collections.CollectionHelper.Comparer`1.Compare(T x, T y)
в System.Linq.EnumerableSorter`2.CompareKeys(Int32 index1, Int32 index2)
в System.Linq.EnumerableSorter`1.QuickSort(Int32[] map, Int32 left, Int32 right)
в System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count)
в System.Linq.OrderedEnumerable`1.<GetEnumerator>d__0.MoveNext()
в System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
в System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
в System.Linq.Buffer`1..ctor(IEnumerable`1 source)
в System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
в Ecng.Trading.Quik.QuikTerminal.get_Terminals()
в MultiQuikTest.Program.Main(String[] args) в D:\root\workspace\rts\csharpsolutions\revision_3_2011_05_10\MultiQuikTest\MultiQuikTest\Program.cs:строка 17


не подскажете, с чем может быть связано?



Потестировал у себя - всё работает, с несколькими квиками в том числе.
Все квики запускаются с локального диска, не с сетевого \ flash?
Какие права установлены для текущего пользователя?

Версия Windows и версия установленного .Net Framework?
Спасибо:

Stanislav121

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


Mikhail Sukhov
Stanislav121
Задержка получения данных характерна для quik или для других серверов тоже(TSLab там или TRANSAQ Connector)?


Задержка есть везде. У всех она примерно одинаковая. Если скорости Квика не хватает, переходите на прямое подключение.


Прямое подключение - это через Plaza 2?
А Stock# работает с Plaza 2?
Спасибо:

Stanislav121

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


"Потому как на Купели HFT делать можно, но не так эффективно"
Что такое Купель?
Спасибо:
<< < 29 30 31 32 33  > >>

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

loading
clippy