Не работают правила BestAskPriceMore и BestAskPriceLess
Atom Ответить
02.03.2012


Не работают правила BestAskPriceMore и BestAskPriceLess.
Создал их относительно одной цены - ни одно из них не сработало.
При этом MarketDepthChanged.

Версия S# - исправленная версия 4.0.20.

Теги:


Спасибо:




39 Ответов
1 2  >
Alexander

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


SecuritiesChanged приходит?
Отследите по нему когда срабатывает условие с Security.BestAsk \ security.BestBid
Спасибо:

vader

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


Нет, SecurityChanged не приходит.
Автор топика
Спасибо:

Alexander

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


vader Перейти
Нет, SecurityChanged не приходит.


потому и правило не работает.
какой шлюз?

Раньше работало?
Спасибо:

vader

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


Шлюз - QuikTrader.

Раньше работало? - не знаю, я им раньше не пользовался.
Автор топика
Спасибо:

Alexander

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


Довольно странно что не приходит SecuritiesChanged.
Вы как проверяли? Как подписывались на событие?
Как запускается экспорт и что говорит Verifier?
Спасибо:

Alexander

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


И самое главное - стакан экспортируется?
Спасибо:

vader

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


Стакан экспортируется.
Verifier говорит что все настроено правильно.
На событие подписываюсь так - this.SecurityChanged += AggressiveRegimeByRules_SecurityChanged;
Не очень понял вопрос про то, как запускается экспорт. Как запускается экспорт чего? Если стакана, то так - Trader.RegisterQuotes(security);
Автор топика
Спасибо:

Alexander

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


Вопрос был о SecuritiesChanged, а не о SecurityChanged
Это событие у Trader.

Какие таблицы экспортируются? Покажите кусок кода где запускается экспорт.
Чему равно Security.BestAsk \ Security.BestBid? стакан какой получаете по инструменту через GetMarketDepth тоже покажите.
Спасибо:

vader

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


"Какие таблицы экспортируются?"
Все настройки таблиц взяты из wnd файла. Добавлены только два столбца.
_trader.MyTradesTable.Columns.Add(DdeMyTradeColumns.Commission);
_trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.MinStepPrice);

"Покажите кусок кода где запускается экспорт"
_trader.Connect();
_trader.StartExport();

"Чему равно Security.BestAsk \ Security.BestBid"
Объекты существуют, обращение к ним работает.
Log.WriteGeneralDiagnostics("security " + Security.BestAsk.Price.ToString());

"Вопрос был о SecuritiesChanged, а не о SecurityChanged
Это событие у Trader."
Это событие не вызывается SecuritiesChanged.
ТАкой код ничего не выводит.
Trader.SecuritiesChanged +=(Trader_SecuritiesChanged);
private void Trader_SecuritiesChanged(IEnumerable<StockSharp.BusinessEntities.Security> securitys)
{
foreach(Security p in securitys) {
Log.WriteGeneralDiagnostics("securitys " + p.BestAsk.Price.ToString());
}
}

"стакан какой получаете по инструменту через GetMarketDepth тоже покажите."
Как это сделать?
Автор топика
Спасибо:

Alexander

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


и чему равно BestAsk.Price что вы распечатали?

по стакану - получите через метод, далее можете хоть через дебагер показать аски \ биды.
Спасибо:

vader

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


"и чему равно BestBid что вы распечатали?"
С BestBid тоже все в порядке.

"по стакану - получите через метод, далее можете хоть через дебагер показать аски \ биды."
Сделано так - сначала стакан я получаю стакан через метод Trader.GetMarketDepth(security), сохраняю ссылку на него и когда мне нужно я поучаю его таким образом - _marketDepth.GetTopQuotes(20)
В дебаге видно что стакан заполнен бидами и асками.
Автор топика
Спасибо:

Alexander

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


В 4.0.21 будет фикс
Спасибо:

vader

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


К сожалению правила BestBidPriceMore и BestAskPriceLess не работают.
Автор топика
Спасибо:

Alexander

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


Security.Trader.SecuritiesChanged вызывается?
И посмотрите по этому событию последовательно как у вас меняется BestAsk \ BestBid
Спасибо:

vader

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


С некотрой периодичностью такой код говорит, что BestAsk и BestBid одновременно являются null.
Код

TraderWorker.GetInstance().Trader.SecuritiesChanged +=(Trader_SecuritiesChanged);

private void Trader_SecuritiesChanged(IEnumerable<StockSharp.BusinessEntities.Security> securitys)
        {
            foreach(Security p in securitys) {
                if(p == null) {
                    Log.WriteGeneralDiagnostics("p == null");
                }
                if(p.BestAsk == null) {
                    Log.WriteGeneralDiagnostics("p.BestAsk == null");
                }
                if(p.BestBid == null) {
                    Log.WriteGeneralDiagnostics("p.BestBid == null");
                }
                Log.WriteGeneralDiagnostics("securitys " + p.BestAsk.Price.ToString() + " " + p.BestBid.Price.ToString());
            }
        }


Log securitys 171230 171165
Log securitys 171230 171165
Log securitys 171230 171165
Log securitys 171230 171165
Log securitys 171195 171180
Log securitys 171220 171165
Log securitys 171220 171180
Log securitys 171220 171165
Log securitys 171220 171175
Log securitys 171220 171175
Log securitys 171220 171165
Log securitys 171220 171175
Log p.BestAsk == null
Log p.BestBid == null
Log System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в BSPB.Partizan.Robot.Trader_SecuritiesChanged(IEnumerable`1 securitys) в C:\vb\General\PartizanV2\source\v.2.0\Robot.xaml.cs:строка 1944
в System.Action`1.Invoke(T obj)
в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
в StockSharp.Algo.BaseTrader.#=qepDkskvfBznv_TxRF4yrHrSmn6GO3w$xqR1CIq0ckKQ=.#=qA2uCed6RkDY$ALG9UmQnSg==(IEnumerable`1 #=qPGXNlOeGBVUabNWOLh_DvA==)
Log securitys 171220 171180
Log p.BestAsk == null
Log securitys 171220 171180
Log p.BestBid == null
Log securitys 171220 171180
Log System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в BSPB.Partizan.Robot.Trader_SecuritiesChanged(IEnumerable`1 securitys) в C:\vb\General\PartizanV2\source\v.2.0\Robot.xaml.cs:строка 1944
в System.Action`1.Invoke(T obj)
в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
в StockSharp.Algo.BaseTrader.#=qepDkskvfBznv_TxRF4yrHrSmn6GO3w$xqR1CIq0ckKQ=.#=qA2uCed6RkDY$ALG9UmQnSg==(IEnumerable`1 #=qPGXNlOeGBVUabNWOLh_DvA==)
Log securitys 171200 171180
Log p.BestAsk == null
Log p.BestBid == null
Log System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в BSPB.Partizan.Robot.Trader_SecuritiesChanged(IEnumerable`1 securitys) в C:\vb\General\PartizanV2\source\v.2.0\Robot.xaml.cs:строка 1944
в System.Action`1.Invoke(T obj)
в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
в StockSharp.Algo.BaseTrader.#=qepDkskvfBznv_TxRF4yrHrSmn6GO3w$xqR1CIq0ckKQ=.#=qA2uCed6RkDY$ALG9UmQnSg==(IEnumerable`1 #=qPGXNlOeGBVUabNWOLh_DvA==)
Log securitys 171200 171180
Log securitys 171200 171180
Log securitys 171200 171180
Log securitys 171200 171180
Log securitys 171200 171180
Log securitys 171200 171180
Log securitys 171200 171175
Log securitys 171195 171175
Log securitys 171195 171175
Log securitys 171195 171175
Log securitys 171190 171160
Log securitys 171190 171165
Log securitys 171190 171180
Log securitys 171190 171180
Log p.BestAsk == null
Log p.BestBid == null
Log securitys 171190 171180
Log System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в BSPB.Partizan.Robot.Trader_SecuritiesChanged(IEnumerable`1 securitys) в C:\vb\General\PartizanV2\source\v.2.0\Robot.xaml.cs:строка 1944
в System.Action`1.Invoke(T obj)
в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
в StockSharp.Algo.BaseTrader.#=qepDkskvfBznv_TxRF4yrHrSmn6GO3w$xqR1CIq0ckKQ=.#=qA2uCed6RkDY$ALG9UmQnSg==(IEnumerable`1 #=qPGXNlOeGBVUabNWOLh_DvA==)
Log securitys 171195 171180
Log securitys 171195 171180
Log securitys 171195 171180
Log securitys 171195 171180
Log securitys 171195 171180
Log securitys 171195 171180
Log securitys 171190 171180
Log securitys 171190 171180
Log securitys 171190 171180
Log securitys 171190 171180
Log securitys 171190 171180
Log securitys 171190 171180
Log securitys 171190 171180
Log p.BestAsk == null
Log p.BestBid == null
Автор топика
Спасибо:

Alexander

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


И с какой ценой вы запускаете правило BestBidPriceMore что оно у вас ни разу не срабатывает?
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 11.03.2012
Ответить


Что-то вы с QuikTrader плохое понаделали в своем коде.
Спасибо:

vader

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


"И с какой ценой вы запускаете правило BestBidPriceMore что оно у вас ни разу не срабатывает?"

Log securitys 171255 171250
Log securitys 171255 171250
ARBR Buy RIH2 11.03.2012 13:33:19 Создали правило BestBidPriceMore с ценой 171240
ARBR Buy RIH2 11.03.2012 13:33:19 OnStarting1
Log securitys 171255 171250
Log securitys 171255 171250

"Что-то вы с QuikTrader плохое понаделали в своем коде."
отнаследовался от него.
Автор топика
Спасибо:

Alexander

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


Сделайте правило без наследника от QuikTrader, стандартный Trader.
По срабатыванию правила добавьте просто распечатку что правило сработало.
Спасибо:

vader

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


"Сделайте правило без наследника от QuikTrader, стандартный Trader."
Сделаю.
"По срабатыванию правила добавьте просто распечатку что правило сработало."
Правило то не срабатывает.
Как я по нему распечатку дам?
Автор топика
Спасибо:

Alexander

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


Что у вас сейчас в обработчике правила? Если есть какая-то распечатка при вызове его - ок. Если идут какие-то if вначале - вставьте распечатку до них.
Спасибо:

vader

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


"Сделайте правило без наследника от QuikTrader, стандартный Trader."
Сделаю."
Стал использовать стандартный Trader - QuikTrader - ситуация не улучшилась, правила не работают.

"Что у вас сейчас в обработчике правила? Если есть какая-то распечатка при вызове его - ок. Если идут какие-то if вначале - вставьте распечатку до них."
Обработчик правила сейчас выглядит так -
Код

private void DoBestBidPriceMore()
        {
            WriteDiagnostics("DoBestBidPriceMore " + Security.BestAsk.Price.ToString());
        }

Он не был ни раз вызван.

Само правило создается так
Код

this.When(Security.BestBidPriceMore(GetCurPrice()))
                    .Do(DoBestBidPriceMore);
            WriteDiagnostics("Создали правило BestBidPriceMore с ценой " + GetCurPrice().ToString());


Лог
Log securitys 171245 171235
Log securitys 171245 171235
Log securitys 171245 171235
Log p.BestAsk == null
Log p.BestBid == null
Log securitys 171245 171235
Log System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в BSPB.Partizan.Robot.Trader_SecuritiesChanged(IEnumerable`1 securitys) в C:\vb\General\PartizanV2\source\v.2.0\Robot.xaml.cs:строка 1943
в System.Action`1.Invoke(T obj)
в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
в StockSharp.Algo.BaseTrader.#=qepDkskvfBznv_TxRF4yrHrSmn6GO3w$xqR1CIq0ckKQ=.#=qA2uCed6RkDY$ALG9UmQnSg==(IEnumerable`1 #=qPGXNlOeGBVUabNWOLh_DvA==)
Log securitys 171245 171235
Log securitys 171245 171235
Log securitys 171245 171235
Log securitys 171245 171235
Log securitys 171245 171235
Log securitys 171245 171235
Log securitys 171245 171235
ARBR Buy RIH2 11.03.2012 17:21:13 Создали правило BestBidPriceMore с ценой 171200
Log p.BestAsk == null
Log p.BestBid == null
Log securitys 171245 171235
Log System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в BSPB.Partizan.Robot.Trader_SecuritiesChanged(IEnumerable`1 securitys) в C:\vb\General\PartizanV2\source\v.2.0\Robot.xaml.cs:строка 1943
в System.Action`1.Invoke(T obj)
в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
в StockSharp.Algo.BaseTrader.#=qepDkskvfBznv_TxRF4yrHrSmn6GO3w$xqR1CIq0ckKQ=.#=qA2uCed6RkDY$ALG9UmQnSg==(IEnumerable`1 #=qPGXNlOeGBVUabNWOLh_DvA==)
Log securitys 171245 171235
Log securitys 171245 171240
Log securitys 171245 171240
Log securitys 171245 171240
Log securitys 171260 171240
Log securitys 171260 171245
Log securitys 171260 171240
Log securitys 171260 171240
Log securitys 171260 171240
Log securitys 171260 171240
Log securitys 171260 171240
Log securitys 171260 171240
Log securitys 171260 171240
Log securitys 171260 171240
Log p.BestAsk == null
Log p.BestBid == null
Log securitys 171260 171240
Log System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в BSPB.Partizan.Robot.Trader_SecuritiesChanged(IEnumerable`1 securitys) в C:\vb\General\PartizanV2\source\v.2.0\Robot.xaml.cs:строка 1943
в System.Action`1.Invoke(T obj)
в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
в StockSharp.Algo.BaseTrader.#=qepDkskvfBznv_TxRF4yrHrSmn6GO3w$xqR1CIq0ckKQ=.#=qA2uCed6RkDY$ALG9UmQnSg==(IEnumerable`1 #=qPGXNlOeGBVUabNWOLh_DvA==)
Log securitys 171255 171240
Log securitys 171255 171240
Автор топика
Спасибо:

Alexander

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


Покажите свой квик. Дополнительные колонки из таблицы инструментов экспортируются?
Спасибо:

vader

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


Показать Квик - в плане? Вас интересует как настроены таблицы?
Настройка таблиц произведена загреузкой Вашего wnd.

"Дополнительные колонки из таблицы инструментов экспортируются?"
Да - DdeSecurityColumns.MinStepPrice.
Автор топика
Спасибо:

vader

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


Не могу прикрепить скрин.

<a href='http://www.pictureshack.ru/view_9937Novyi_tochechnyi_risunok.jpg'><img src='http://www.pictureshack.ru/thumbs/9937Novyi_tochechnyi_risunok.jpg' border='0'></a>
Автор топика
Спасибо:
1 2  >

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

loading
clippy