Не работают правила BestAskPriceMore и BestAskPriceLess~/topic/2455/ne-rabotayut-pravila-bestaskpricemore-i-bestaskpriceless/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-28T15:34:54Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/17184/Александр, спасибо за помощь и за разъяснение.2012-03-13T08:31:47Z2012-03-13T08:31:47Zvaderhttps://stocksharp.ru/users/28223/info@stocksharp.ruАлександр, спасибо за помощь и за разъяснение.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17182/Да, я понял, что у меня неправило было. Я делал либо так. this.When(Security.BestAskPriceLess(new Un...2012-03-13T08:18:15Z2012-03-13T08:18:15ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ru<div class="quote"><span class="quotetitle">vader <a href="https://stocksharp.ru/posts/m/17181/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Да, я понял, что у меня неправило было.<br />Я делал либо так.<br />this.When(Security.BestAskPriceLess(new Unit(_priceOfTask)))<br /> .Do(SayPrice);<br />либо так<br />this.When(Security.BestAskPriceLess((_priceOfTask)))<br /> .Do(SayPrice);<br /><br />decimal _priceOfTask.</div></div><br /><br />Это равносильно :)<br />По умолчанию и там и там у вас создаётся Unit с типом Absolute, т.е. смотрится превышение на эту величину.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17181/Да, я понял, что у меня неправило было. Я делал либо так. this.When(Security.BestAskPriceLess(new Un...2012-03-13T08:14:19Z2012-03-13T08:14:19Zvaderhttps://stocksharp.ru/users/28223/info@stocksharp.ruДа, я понял, что у меня неправило было.<br />Я делал либо так.<br />this.When(Security.BestAskPriceLess(new Unit(_priceOfTask)))<br /> .Do(SayPrice);<br />либо так<br />this.When(Security.BestAskPriceLess((_priceOfTask)))<br /> .Do(SayPrice);<br /><br />decimal _priceOfTask.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17178/Далее. Переписал код класса стратегии Quik\SampleSma, сделал его таким class SmaStrategy : Strategy ...2012-03-13T07:34:27Z2012-03-13T07:34:51ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ruДалее. Переписал код класса стратегии Quik\SampleSma, сделал его таким<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
class SmaStrategy : Strategy
{
public SmaStrategy(CandleManager candleManager, SimpleMovingAverage longSma, SimpleMovingAverage shortSma, TimeSpan timeFrame)
{
LongSma = longSma;
ShortSma = shortSma;
}
public SimpleMovingAverage LongSma { get; private set; }
public SimpleMovingAverage ShortSma { get; private set; }
protected override void OnStarting()
{
this.When(Security.BestBidPriceMore(0.0001)).Do(OnProcess);
this.When(Security.BestBidPriceMore(new Unit(1800, UnitTypes.Limit))).Do(OnProcess2);
base.OnStarting();
}
protected void OnProcess()
{
System.Diagnostics.Debug.WriteLine("Rule succeeded");
}
protected void OnProcess2()
{
System.Diagnostics.Debug.WriteLine("Rule2 succeeded");
}
}</pre>
</div></div><br /><br />всё сработало, правило успешно сработало при повышении лучшего бида на 0.0001 и лучшего бида значения 1800 (пример работает с лукойлом).<br /><br />Собственно возникает вопрос в связи с чем это всё не работает у вас.<br />Может вы не так работаете с типом Unit, который передаётся в правило?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17177/Гоняю полчаса после старта экспорта стакана - ни разу не возникло сообщения что либо bid, либо ask р...2012-03-13T06:40:20Z2012-03-13T06:40:20ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ruГоняю полчаса после старта экспорта стакана - ни разу не возникло сообщения что либо bid, либо ask равен null.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17171/Правильно, экспорт по стакану не запущен ведь у вас, потому там и идут null Попробовал в последние 5...2012-03-12T20:05:52Z2012-03-12T20:05:52ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ruПравильно, экспорт по стакану не запущен ведь у вас, потому там и идут null<br /><br />Попробовал в последние 5 минут вечерней сессии - запустил экспорт стакана (просто его открыв из Sample -> инструменты -> стакан) - ни разу не пришло null в биде или аске.<br /><br />Завтра попробую с утра минут 10-15 погонять. Удивлюсь, если возникнет хоть 1 null.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17136/К сожадению не обладаю возможностью использовать скайп. Касательно SampleQuik. Модифицировал его так...2012-03-12T09:21:47Z2012-03-12T09:21:47Zvaderhttps://stocksharp.ru/users/28223/info@stocksharp.ruК сожадению не обладаю возможностью использовать скайп.<br /><br />Касательно SampleQuik.<br />Модифицировал его таким образом.<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
Trader.Connected += () => this.GuiAsync(() => ExportDde.IsEnabled = true);
Trader.SecuritiesChanged += (Trader_SecuritiesChanged); // мой код
ShowSecurities.IsEnabled = ShowTrades.IsEnabled =
...
private void Trader_SecuritiesChanged(IEnumerable<Security> securitys)
{
foreach(Security p in securitys) {
if(p == null) {
System.Diagnostics.Debug.WriteLine("p == null");
}
if(p.BestAsk == null) {
System.Diagnostics.Debug.WriteLine("p.BestAsk == null");
}
if(p.BestBid == null) {
System.Diagnostics.Debug.WriteLine("p.BestBid == null");
}
//System.Diagnostics.Debug.WriteLine("securitys " + p.BestAsk.Price.ToString() + " " + p.BestBid.Price.ToString());
}
}
</pre>
</div></div><br /><br />Результат такой.<br />p.BestAsk == null<br />p.BestBid == null<br />p.BestAsk == null<br />p.BestBid == null<br />p.BestAsk == null<br />p.BestBid == null<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17093/ну и как с SampleQuik? Давайте через скайп (amukhanchikov), быстрее будет.2012-03-11T15:27:39Z2012-03-11T15:27:39ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ruну и как с SampleQuik?<br />Давайте через скайп (amukhanchikov), быстрее будет.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17092/"Quik\Sample попробовали?" Да попробовал. "И что у вас на 167 строке что он так ругается? :)" System...2012-03-11T15:24:16Z2012-03-11T15:25:12Zvaderhttps://stocksharp.ru/users/28223/info@stocksharp.ru"Quik\Sample попробовали?"<br />Да попробовал.<br /><br />"И что у вас на 167 строке что он так ругается? :)"<br />System.Diagnostics.Debug.WriteLine("securitys " + p.BestAsk.Price.ToString() + " " + p.BestBid.Price.ToString());<br /><br />Я просто перенес обработку событи туда, без изменений. <br />BestAsk оказался null, вот и ругается.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17091/Quik\Sample попробовали? И что у вас на 167 строке что он так ругается? :)2012-03-11T14:52:41Z2012-03-11T14:54:39ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ruQuik\Sample попробовали?<br />И что у вас на 167 строке что он так ругается? :)Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17090/Сделал как Вы сказали - результат тот же p.BestAsk == null p.BestAsk == null p.BestBid == null p.Bes...2012-03-11T14:46:54Z2012-03-11T14:47:14Zvaderhttps://stocksharp.ru/users/28223/info@stocksharp.ruСделал как Вы сказали - результат тот же<br />p.BestAsk == null<br />p.BestAsk == null<br />p.BestBid == null<br />p.BestBid == null<br />System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.<br /> в Sample.MainWindow.Trader_SecuritiesChanged(IEnumerable`1 securitys) в C:\Lib StockSharp\StockSharp_4.0.21_Sources\Samples\Quik\Sample\MainWindow.xaml.cs:строка 167<br /> в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)<br /> в StockSharp.Algo.BaseTrader.#=qepDkskvfBznv_TxRF4yrHrSmn6GO3w$xqR1CIq0ckKQ=.#=qA2uCed6RkDY$ALG9UmQnSg==(IEnumerable`1 #=qPGXNlOeGBVUabNWOLh_DvA==)<br />System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.<br /> в Sample.MainWindow.Trader_SecuritiesChanged(IEnumerable`1 securitys) в C:\Lib StockSharp\StockSharp_4.0.21_Sources\Samples\Quik\Sample\MainWindow.xaml.cs:строка 167<br /> в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)<br /> в StockSharp.Algo.BaseTrader.#=qepDkskvfBznv_TxRF4yrHrSmn6GO3w$xqR1CIq0ckKQ=.#=qA2uCed6RkDY$ALG9UmQnSg==(IEnumerable`1 #=qPGXNlOeGBVUabNWOLh_DvA==)<br /><br />Картинка<br /><a href='http://imagepost.ru/images/t/oc/tochechnyj_risunok_24.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="http://imagepost.ru/images/t/oc/tochechnyj_risunok_24.jpg" style='max-width: 600px;' alt=""/></a>Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17089/Сделал как Вы сказали - увы. p.BestAsk == null p.BestBid == null System.NullReferenceException: Ссыл...2012-03-11T14:24:35Z2012-03-11T14:24:35Zvaderhttps://stocksharp.ru/users/28223/info@stocksharp.ruСделал как Вы сказали - увы.<br />p.BestAsk == null<br />p.BestBid == null<br />System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.<br /> в Sample.MainWindow.Trader_SecuritiesChanged(IEnumerable`1 securitys) в C:\Lib StockSharp\StockSharp_4.0.21_Sources\Samples\Quik\Sample\MainWindow.xaml.cs:строка 167<br /> в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)<br /> в StockSharp.Algo.BaseTrader.#=qepDkskvfBznv_TxRF4yrHrSmn6GO3w$xqR1CIq0ckKQ=.#=qA2uCed6RkDY$ALG9UmQnSg==(IEnumerable`1 #=qPGXNlOeGBVUabNWOLh_DvA==)<br />p.BestAsk == null<br />p.BestBid == null<br />System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.<br /> в Sample.MainWindow.Trader_SecuritiesChanged(IEnumerable`1 securitys) в C:\Lib StockSharp\StockSharp_4.0.21_Sources\Samples\Quik\Sample\MainWindow.xaml.cs:строка 167<br /> в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)<br /> в StockSharp.Algo.BaseTrader.#=qepDkskvfBznv_TxRF4yrHrSmn6GO3w$xqR1CIq0ckKQ=.#=qA2uCed6RkDY$ALG9UmQnSg==(IEnumerable`1 #=qPGXNlOeGBVUabNWOLh_DvA==)<br />p.BestAsk == null<br />p.BestBid == null<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17088/По прикреплённому скриншоту: 1) У вас дополнительные колонки в стакане. Как вы их экспортируете? Соз...2012-03-11T14:11:39Z2012-03-11T14:16:34ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ruПо прикреплённому скриншоту:<br />1) У вас дополнительные колонки в стакане. Как вы их экспортируете? Создайте стандартный стакан, без доп. колонок, как по документации. Попробуйте с ним.<br />2) В документации сказано про стакан что внизу офера, вверху биды. У вас наоборот. Сделайте согласно документации.<br />3) Вы дополнительно экспортируете DdeSecurityColumns.MinStepPrice. Где оно у вас на скриншоте?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17086/Не могу прикрепить скрин. 2012-03-11T14:02:06Z2012-03-11T14:09:43Zvaderhttps://stocksharp.ru/users/28223/info@stocksharp.ruНе могу прикрепить скрин.<br /><br /><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>Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17087/Вы сами нигде не обнуляете BestBid\BestAsk случайно? А то мягко говоря что-то странное происходит. П...2012-03-11T14:09:14Z2012-03-11T14:09:14ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ruВы сами нигде не обнуляете BestBid\BestAsk случайно?<br />А то мягко говоря что-то странное происходит.<br /><br /><br />Предлагаю сделать следующее. Берёте Quik\Sample, в котором точно не будет изменений.<br />Далее подписываетесь на событие Trader.SecuritiesChanged и выводите BestBid \ BestAskCopyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17085/Показать Квик - в плане? Вас интересует как настроены таблицы? Настройка таблиц произведена загреузк...2012-03-11T13:52:59Z2012-03-11T13:52:59Zvaderhttps://stocksharp.ru/users/28223/info@stocksharp.ruПоказать Квик - в плане? Вас интересует как настроены таблицы?<br />Настройка таблиц произведена загреузкой Вашего wnd.<br /><br />"Дополнительные колонки из таблицы инструментов экспортируются?"<br />Да - DdeSecurityColumns.MinStepPrice.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17084/Покажите свой квик. Дополнительные колонки из таблицы инструментов экспортируются?2012-03-11T13:34:28Z2012-03-11T13:34:28ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ruПокажите свой квик. Дополнительные колонки из таблицы инструментов экспортируются?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17083/"Сделайте правило без наследника от QuikTrader, стандартный Trader." Сделаю." Стал использовать стан...2012-03-11T13:30:29Z2012-03-11T13:30:29Zvaderhttps://stocksharp.ru/users/28223/info@stocksharp.ru"Сделайте правило без наследника от QuikTrader, стандартный Trader."<br />Сделаю."<br />Стал использовать стандартный Trader - QuikTrader - ситуация не улучшилась, правила не работают.<br /><br />"Что у вас сейчас в обработчике правила? Если есть какая-то распечатка при вызове его - ок. Если идут какие-то if вначале - вставьте распечатку до них."<br />Обработчик правила сейчас выглядит так - <br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
private void DoBestBidPriceMore()
{
WriteDiagnostics("DoBestBidPriceMore " + Security.BestAsk.Price.ToString());
}
</pre>
</div></div><br />Он не был ни раз вызван.<br /><br />Само правило создается так<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
this.When(Security.BestBidPriceMore(GetCurPrice()))
.Do(DoBestBidPriceMore);
WriteDiagnostics("Создали правило BestBidPriceMore с ценой " + GetCurPrice().ToString());
</pre>
</div></div><br /><br />Лог<br />Log securitys 171245 171235<br />Log securitys 171245 171235<br />Log securitys 171245 171235<br />Log p.BestAsk == null<br />Log p.BestBid == null<br />Log securitys 171245 171235<br />Log System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.<br /> в BSPB.Partizan.Robot.Trader_SecuritiesChanged(IEnumerable`1 securitys) в C:\vb\General\PartizanV2\source\v.2.0\Robot.xaml.cs:строка 1943<br /> в System.Action`1.Invoke(T obj)<br /> в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)<br /> в StockSharp.Algo.BaseTrader.#=qepDkskvfBznv_TxRF4yrHrSmn6GO3w$xqR1CIq0ckKQ=.#=qA2uCed6RkDY$ALG9UmQnSg==(IEnumerable`1 #=qPGXNlOeGBVUabNWOLh_DvA==)<br />Log securitys 171245 171235<br />Log securitys 171245 171235<br />Log securitys 171245 171235<br />Log securitys 171245 171235<br />Log securitys 171245 171235<br />Log securitys 171245 171235<br />Log securitys 171245 171235<br />ARBR Buy RIH2 11.03.2012 17:21:13 Создали правило BestBidPriceMore с ценой 171200<br />Log p.BestAsk == null<br />Log p.BestBid == null<br />Log securitys 171245 171235<br />Log System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.<br /> в BSPB.Partizan.Robot.Trader_SecuritiesChanged(IEnumerable`1 securitys) в C:\vb\General\PartizanV2\source\v.2.0\Robot.xaml.cs:строка 1943<br /> в System.Action`1.Invoke(T obj)<br /> в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)<br /> в StockSharp.Algo.BaseTrader.#=qepDkskvfBznv_TxRF4yrHrSmn6GO3w$xqR1CIq0ckKQ=.#=qA2uCed6RkDY$ALG9UmQnSg==(IEnumerable`1 #=qPGXNlOeGBVUabNWOLh_DvA==)<br />Log securitys 171245 171235<br />Log securitys 171245 171240<br />Log securitys 171245 171240<br />Log securitys 171245 171240<br />Log securitys 171260 171240<br />Log securitys 171260 171245<br />Log securitys 171260 171240<br />Log securitys 171260 171240<br />Log securitys 171260 171240<br />Log securitys 171260 171240<br />Log securitys 171260 171240<br />Log securitys 171260 171240<br />Log securitys 171260 171240<br />Log securitys 171260 171240<br />Log p.BestAsk == null<br />Log p.BestBid == null<br />Log securitys 171260 171240<br />Log System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.<br /> в BSPB.Partizan.Robot.Trader_SecuritiesChanged(IEnumerable`1 securitys) в C:\vb\General\PartizanV2\source\v.2.0\Robot.xaml.cs:строка 1943<br /> в System.Action`1.Invoke(T obj)<br /> в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)<br /> в StockSharp.Algo.BaseTrader.#=qepDkskvfBznv_TxRF4yrHrSmn6GO3w$xqR1CIq0ckKQ=.#=qA2uCed6RkDY$ALG9UmQnSg==(IEnumerable`1 #=qPGXNlOeGBVUabNWOLh_DvA==)<br />Log securitys 171255 171240<br />Log securitys 171255 171240Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17078/Что у вас сейчас в обработчике правила? Если есть какая-то распечатка при вызове его - ок. Если идут...2012-03-11T10:11:59Z2012-03-11T10:11:59ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ruЧто у вас сейчас в обработчике правила? Если есть какая-то распечатка при вызове его - ок. Если идут какие-то if вначале - вставьте распечатку до них.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17077/"Сделайте правило без наследника от QuikTrader, стандартный Trader." Сделаю. "По срабатыванию правил...2012-03-11T10:03:36Z2012-03-11T10:03:36Zvaderhttps://stocksharp.ru/users/28223/info@stocksharp.ru"Сделайте правило без наследника от QuikTrader, стандартный Trader."<br />Сделаю.<br />"По срабатыванию правила добавьте просто распечатку что правило сработало."<br />Правило то не срабатывает.<br />Как я по нему распечатку дам?Copyright @ StockSharp Platform LLC 2010 - 2024