исключение в 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