исключение в MarketQuotingStrategy
Atom
15.04.2010
dart


собственно текст:

System.ArgumentException: Транзакции 'CLASSCODE=SPBFUT;
SECCODE=RIM0;TRANS_ID=48817801;ACTION=KILL_ORDER;ORDER_KEY=562984869;'не
была зарегистрирована.Причина Вы не можете снять данную заявку'.
Имя параметра: transaction Txt
в ~. (String, OrderStatus&~,Int32&|,Double&*,String&-)
в Ecng.Trading.Quik.QuikTrader.(Order,
TransactionBuilder~,Boolean|,Boolean*)
в Ecng.Trading.Quik.QuikTrader.CancelOrder(Order order)
в Ecng.Trading.Algo.TraderHelper.GuarantyCancelOrder(ITrader trader,
Order order)
в Ecng.Trading.Algo.TraderHelper.ReRegisterOrder(ITrader trader, Order
oldOrder, Func~1 getNewPrice, Boolean isForts)
в Ecng.Trading.Algo.QuotingStrategy.OnProcess()
в Ecng.Trading.Algo.Strategy.-()

частота обновления котировок - 1 секунда


Теги:


Спасибо:


< 1 2 
Mikhail Sukhov

Фотография
Дата: 20.04.2010
Ответить


Да, это интересное поведение. А код бумаги поменять возможно через
настройки Квика? Например, прописать алиас.

Спасибо:

dart

Фотография
Дата: 20.04.2010
Ответить


Насколько знаю, код бумаги брокер задаёт. Насчёт того чтобы алиас
прописать в квике не знаю насколько это возможно.
По-крайней мере я с этим уже сталкивался, когда настраивал связку
Омега-квик. Человек, автор адаптера, в конце концов стал вместо тире
звёздочку использовать. Получился универсальный адаптер для всех
брокеров.

Спасибо:

Mikhail Sukhov

Фотография
Дата: 20.04.2010
Ответить


Ок, я сделаю это настраиваемым. Но оно будет только в следующей
версии.

Спасибо:

dart

Фотография
Дата: 05.05.2010
Ответить


Тишина какая-то в блоге, наверно все уже всё давно освоили, сейчас
прибыль молча считают.))
Такой вопрос задам. Если вызывать NewTrades в OnProcess, то данные
получатся рваные, так как онпроцесс вызывается дискретно.
Можно как-то сделать чтоб данные о всех сделках считывались
непрерывно, параллельно с течением программы, записывались в буфер
нужной мне длины, чтоб в любой момент времени мгновенно я имел бы к
нему доступ.

Спасибо:

Mikhail Sukhov

Фотография
Дата: 05.05.2010
Ответить


Блог зависит от меня. А вот форум - уже от пользователей.

А зачем вызывать NewTrades? Его Strategy сам вызывает. Про рваные не
понял.

Спасибо:

dart

Фотография
Дата: 06.05.2010
Ответить


У меня стратегия имеет ту же структуру что и SMASample. В onprocess
вызываю newtrades, набираю статистику нужной длины, на основе её
принимается решение buy, sell или ничего не делать. Понимаю что
корявая схема, но по-другому пока не получилось.
Вот и спрашиваю, как можно сделать чтобы статистика всех сделок
набиралась неперерывно и имелся к ней уже мгновенный доступ.

ЗЫ где-то есть форум? На мой взгляд, форум вещь нужная, так как
продукт хороший, но спросить можно только у первоисточника, то есть у
вас. Постоянно вас напрягать не совсем хорошо. Даже по Омеге, ВЛД есть
целые форумы, в S# же требуется квалификация как программиста, не ниже
а выше чем в популярных платформах, соответственно у людей вопросов
будет как минимум не меньше.
Сорри за много буковок.

Спасибо:

Mikhail Sukhov

Фотография
Дата: 06.05.2010
Ответить


Есть событие ITrader.NewTrades - по описанию оно то, что нужно.

А как Вы вызываете NewTrades из OnProcess? Приведите кусок кода.

Форум - а вот он, где мы сейчас переписываемся. Омега и ВЛД - это поп
софт. У меня пока уровень популярности не такой. Да и какой смысл во
множестве форумах. Там свои собственные языки. А у меня - .NET.
Форумов по нему - как все омеги велсы и мета трейдеры вместе взятые да
помноженные на 100 =) Книжек - тонна. Статей в интернете - столько же.
Неужели не хватает?

Спасибо:

dart

Фотография
Дата: 06.05.2010
Ответить


protected override bool OnProcess()
{
// если наша стратегия в процессе остановки
if (base.ProcessState == StrategyProcessStates.Stopping)
{
// отменяем стратегию
base.Orders.Where(o => o.State ==
OrderStates.Active).ForEach(base.Trader.GuarantyCancelOrder);
// так как все активные заявки гарантированно были
отменены, то возвращаем false
return false;
}
base.Trader.NewTrades += Trades =>
{
foreach (var Trade in Trades)
{
var trade = Trade;
if (trade.Security.Code == "RIM0")
{

Спасибо:

Mikhail Sukhov

Фотография
Дата: 06.05.2010
Ответить


А зачем Вы каждый раз подписываетесь на событие NewTrades? OnProcess
вызывается довольно часто, и внутри него не нужно подписываться на
события ITrader. Делайте это при старте программы. И при таком
раскладе у Вас приложение умрет от бесконечного события о поступивших
сделках.

Спасибо:
< 1 2 

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

loading
clippy