Вопросы новичка в S#

Вопросы новичка в S# (Locked)
Atom
12/1/2010


ttt

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


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

Avatar
Date: 5/14/2011


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

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


OrdersFailed
Thanks:

crapulent

Avatar
Date: 5/14/2011


пробовал. не работае.
кусок кода:
Code
...
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);

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

crapulent

Avatar
Date: 5/14/2011


в догонку еще вопрос.
Code
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

Quote:
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


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

Stanislav121

Avatar
Date: 5/16/2011


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


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

Почему?
Thanks:

Mikhail Sukhov

Avatar
Date: 5/16/2011


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


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

Почему?


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

Stanislav121

Avatar
Date: 5/16/2011


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


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

Почему?


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


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

Mikhail Sukhov

Avatar
Date: 5/16/2011


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


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

Alexander

Avatar
Date: 5/17/2011


crapulent Go to
в догонку еще вопрос.
Code
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

Quote:
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?
Thanks:

Stanislav121

Avatar
Date: 5/17/2011


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


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


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

Stanislav121

Avatar
Date: 5/17/2011


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

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy