stocksharp. StockSharphttps://stocksharp.ru/handlers/atom.ashx?category=tag&id=stocksharp&type=forum&page=36Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T14:03:53Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/topic/2496/v4.0.20 Trader.ProcessDataError: System.ArgumentOutOfRangeException2012-03-15T18:49:34Z2012-03-15T18:49:34Zsdahttps://stocksharp.ru/users/27731/info@stocksharp.ruДобрый день!<br /><br />Не знаю, куда правильно постить информацию о багах, опубликую здесь.<br /><br />Подключаюсь к торговой системе посредством SmartTrader'а.<br /><br />Сегодня на вечернем клиринге с моего счета списали мартовские опционы вне денег. Эти операции отдаются со стороны торговой системы как сделки с нулевым orderTransactionId. В результате при получении сделок возникает exception:<br /><br /><br />15.03.2012 21:21:32 err Trader.ProcessDataError: System.ArgumentOutOfRangeException: Номер транзакции должен быть отличен от нуля.<br />Parameter name: orderTransactionId<br />Actual value was 0.<br /> at StockSharp.Algo.BaseTrader.AddMyTrade(Security security, Int64 orderId, Int64 orderTransactionId, Int64 tradeId, Func`2 createTrade, Action`1 initMyTrade)<br /> at StockSharp.Smart.SmartTrader.#=qfzSH89$Mv8Ofzu2y$3js_kysbq$NiANKIBBTSpnvTGs=.#=q4mbFJ60V1bPbFeGAvyC1ibxEquGFFRHMAVcij6R3Spg=(Security #=qxrfNJbw0xpwzUWGXMStJHw==)<br /> at StockSharp.Algo.BaseTrader.GetSecurity(String id, Func`2 createSecurity, Action`1 changeSecurity, String nativeSecurityId)<br /> at StockSharp.Algo.BaseTrader.GetSecurity(String id, Action`1 changeSecurity, String nativeSecurityId)<br /> at StockSharp.Smart.SmartTrader.#=qwRaN51iZmc1S0J9GUiteXg==(Int32 #=qcKJ3I5IWFH9VGLCcFIxLWQ==, Int32 #=qd_HFLT8KhQdYPYrriX3Z0w==, String #=qA26HfIyr1Hp1awyY$ScCNw==, String #=q4kT6hRtHz0cB30gzvW2Uow==, String #=qxsnZ7xnxtOVt_x2Uv9kPPQ==, String #=q7F54ujMZTFZrOrnYJVfk4g==, Int32 #=qtR35YFeUwJZKl7$1hymQrw==, Int32 #=qLReP$4l4o5IgcNxSE8j0Vw==, Decimal #=qrciuxaDj5NbwitmG7x6PgQ==, Decimal #=qf54825kg7L9SdT_qlB4SKg==, String #=qtQxI15g5cUMatZ_YBKWP9w==, String #=q4MEPte6Q5ZnUsivjDz2KOQ==, Nullable`1 #=qekZ0Fn305HW0Pt3gP6Gk0Q==, Decimal #=qrrUBO3JMgQ6dy_R0YmVzQuFxkjDU6Vy_S_1hGd0cj2w=, Decimal #=qdaiuwzZ5XwfDPHIrdJ59ew==)<br /> at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15](Action`15 handler, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14, T15 arg15)<br /> at StockSharp.Smart.SmartComWrapper.#=qfzSH89$Mv8Ofzu2y$3js_qgdS7SCdhEpMj2tiPnQ2bQ=.#=qD19bRnre6gLZZNWHAbtsdbqqmA2tHEYXwNn2tuxYMQk=()<br /> at StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)<br /><br /><br />Upd. По этой ненорме создал тикет на codeplex:<br /><br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAAAbncQVTu8T5yVB2LlB47S-n4HKdS6BsOK8qgVcqacRL0luHWSDeaDFar7u575UGfQ" title="http://stocksharp.codeplex.com/workitem/952">http://stocksharp.codeplex.com/workitem/952</a>https://stocksharp.ru/topic/2487/Событие при изменении Order.State2012-03-15T10:38:50Z2012-03-15T10:38:50Zmaximv20https://stocksharp.ru/users/28027/info@stocksharp.ruМожно ли отследить изменения конкретно Order.State (а не вообще какой-то информации по ордеру)? У меня например приходит 2 OnOrderChanged с изменяющися CancelTime. Я же хочу отслеживать только Order.State. Как правильно это делать?<br /><br />14:01:05.577 | | PlazaTrader | RegisterOrder: TransactionId=50327216, Id=0, Price=174030, Balance=1, Security=RIH2@RTS, State=None <br />14:01:05.662 | | PlazaTrader | New order: TransactionId=50327216, Id=2722005545, Price=174030, Balance=1, Security=RIH2@RTS, State=Active <br />14:01:05.686 | | POStrategy | OnOrderChanged: TID=50327216; ID=2722005545; ST=Active/-; L=84; Buy 1/1@174030 RIH2@RTS; <br />14:01:05.687 | | POStrategy | OnOrderChanged: cancel<br />14:01:05.687 | | PlazaTrader | CancelOrder: TransactionId=50327216, Id=2722005545, Price=174030, Balance=1, Security=RIH2@RTS, State=Active <br />14:01:05.831 | | POStrategy | OnOrderChanged: TID=50327216; ID=2722005545; ST=Done/-; L=84; Buy 1/1@174030 RIH2@RTS; CT=2012-03-15 14:01:05.831; <br />14:01:05.909 | | POStrategy | OnOrderChanged: TID=50327216; ID=2722005545; ST=Done/-; L=84; Buy 1/1@174030 RIH2@RTS; CT=2012-03-15 14:01:05.788; https://stocksharp.ru/topic/2482/Обновился, появилась ошибка2012-03-14T12:37:58Z2012-03-14T12:37:58ZDaenurhttps://stocksharp.ru/users/28118/info@stocksharp.ruОбновился до последней версии (скачал все исходники, работаю с папкой trunk, которая, я так понимаю, и есть 4.0.22). Теперь в момент появления новой свечи возникает непонятная ошибка, которую не получается никак перехватить. Breakpoint'ы поставил везде где только можно, но ошибка выскакивает до перехвата любым из них.<br /><br />Мой краткий лог работы программы:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:plain">
16:09:40 : Запуск программы...
16:09:40 : Создается стратегия.
16:09:47 : Соединение.
16:09:50 : StartExport
16:09:56 : Выбор бумаги: RIH2@RTS
16:09:56 : InitCandleManager()
16:10:15 : Старт стратегии.
16:10:16 : Стратегия запущена.
16:10:16 : OnStarting
16:11:00 : System.ArgumentNullException: Значение не может быть неопределенным.
в System.Threading.Monitor.ReliableEnter(Object obj, Boolean& lockTaken)
в System.Threading.Monitor.Enter(Object obj, Boolean& lockTaken)
в StockSharp.Algo.Strategies.Strategy.#=qDeeaXVr7bQMyGhdBQLZyNg==(IStrategyRule #=qQoHSZZke5rtcuq2cM3YF6g==, Func`1 #=qjae_76DdiE$FGmntCIo7_g==)
16:11:00 : System.ArgumentNullException: Значение не может быть неопределенным.
в System.Threading.Monitor.ReliableEnter(Object obj, Boolean& lockTaken)
в System.Threading.Monitor.Enter(Object obj, Boolean& lockTaken)
в StockSharp.Algo.Strategies.Strategy.#=qDeeaXVr7bQMyGhdBQLZyNg==(IStrategyRule #=qQoHSZZke5rtcuq2cM3YF6g==, Func`1 #=qjae_76DdiE$FGmntCIo7_g==)
16:11:00 : Стратегия останавливается.
</pre>
</div></div><br /><br /><br />СмартКОМ или КВИК, фьюч или акция - значение не имеет. На предыдущей версии, которая у меня была (вроде 4.0.16) проблем не было. Мой код при переходе на новую версию не менялся.https://stocksharp.ru/topic/2481/EquityManager.NewEquityData не срабатывает в реальной торговле2012-03-14T07:02:44Z2012-03-14T07:02:44ZSupervisorhttps://stocksharp.ru/users/27975/info@stocksharp.ruS# 4.0.21<br />EquityManager хорошо работает на тестировании, но вот захотел чтобы он на реале рисовал прямо во время торговли график доходности - а оказалось что событие не вызывается в этом случае.<br />Проверял на ситуации когда стратегия запущена, но ничего не делает (по идее должна рисоваться прямая линия без изменений).<br />В чем может быть причина?<br />EquityManager.Interval = Timeframe попробовал, безрезультатноhttps://stocksharp.ru/topic/2472/OrderFails & Orders в Strategy2012-03-11T08:42:44Z2012-03-11T08:42:44ZSerghttps://stocksharp.ru/users/484/info@stocksharp.ruПриветствую. Подскажите плиз что должно происходить во время ошибки регистрации заявки. <br />Возникает непонятная для меня ситуация. При регистрации заявки в логе вижу сообщение типа "Заявка 41664289 не была принята по причине StockSharp.Quik.ApiException: Код ошибки Failed Сообщение Обработка кросс-заявок блокирована..". QuikTrader говорит "RegisterOrder: TransactionId=41664289, Id=0, Price=155115, Balance=1, Security=RIH2@RTS, State=None"<br />И все заявки как-будто и небыло) В Strategy.Orders она не попадает и в Strategy.OrderFails также пустота.<br /><br />Есть еще один очень странный нюанс. Кросс сделки как таковой быть не может, так как в момент регистрации заявки, встречных по направлению к регистрируемой просто нет. Но эт видимо косяк демосервера квик.<br /><br />update: да и еще заметил что после остановки стратегии ее Trader становиться null. Так и должно быть?https://stocksharp.ru/topic/2471/OnWriteMessage и WriteMessage2012-03-11T04:24:01Z2012-03-11T04:24:01ZBigBenhttps://stocksharp.ru/users/6302/info@stocksharp.ruПривет!<br />В классе LogListener существуют два метода OnWriteMessage и WriteMessage.<br />Объясните, плиз, зачем они дублируют друг друга, и в каких случаях их нужно использовать?<br />Спасибо.https://stocksharp.ru/topic/2468/Как использовать индикатор Ишимоку?2012-03-09T12:07:24Z2012-03-09T12:07:24Zzorranhttps://stocksharp.ru/users/28229/info@stocksharp.ruКак использовать индикатор Ишимоку?<br />Кто нибудь может выложить пример?<br /><br />Не могу понять, как с ним работать.<br />Делаю следующее -<br /><br />инициализация:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
ichimoku = new Ichimoku();
ichimoku.Kijun.Length = 5;
ichimoku.Tenkan.Length = 10;
ichimoku.SenkouA.Length = 20;
ichimoku.SenkouB.Length = 20;
ichimoku.Chinkou.Length = 10;</pre>
</div></div><br /><br />.....<br /><br />Далее, использование:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
ichimoku.Tenkan.Process((CandleIndicatorValue) candle);
ichimoku.Kijun.Process((CandleIndicatorValue) candle );
ichimoku.Chinkou.Process((CandleIndicatorValue) candle );
ichimoku.SenkouA.Process((CandleIndicatorValue) candle );
ichimoku.SenkouB.Process((CandleIndicatorValue) candle );</pre>
</div></div><br /><br />Пытаюсь потом получить значения индикатора, а они равны 0 !<br /><br />Получаю следующим образом:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
ichimoku.Tenkan.LastValue
ichimoku.Kijun.LastValue
ichimoku.SenkouA.LastValue
ichimoku.SenkouB.LastValue
ichimoku.Chinkou.LastValue</pre>
</div></div><br />https://stocksharp.ru/topic/2466/v4.20 - не генерятся отчеты Excel2012-03-07T13:10:54Z2012-03-07T13:10:54ZKiruhinhttps://stocksharp.ru/users/6067/info@stocksharp.ruv4.16 - работает<br />v4.19 и v4.20 - <br />код:<br /> ExcelStrategyReport report = new ExcelStrategyReport(_strategy, "sma.xls");<br /> report.Generate();<br /><br />выдает исключение:<br />NullReferenceException - "Ссылка на объект не указывает на экземпляр объекта."<br />StackTrace:<br /> в Ecng.Interop.ExcelExporter.SetCell(Int32 col, Int32 row, Object value)<br /> в StockSharp.Algo.Reporting.ExcelStrategyReport.Generate()<br /> в SampleHistoryTesting.MainWindow.Report_Click(Object sender, RoutedEventArgs e) в D:\svalka\invest\_info\_sSharp\lib\StockSharp_4.0.20\Samples\Testing\SampleHistoryTesting\MainWindow.xaml.cs:строка 213<br /> в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)<br /> в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)<br /> в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)<br /> в System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)<br /> в System.Windows.Controls.Primitives.ButtonBase.OnClick()<br /> в System.Windows.Controls.Button.OnClick()<br /> в System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)<br /> в System.Windows.UIElement.OnMouseLeftButtonUpThunk(Object sender, MouseButtonEventArgs e)<br /> в System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)<br /> в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)<br /> в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)<br /> в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)<br /> в System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)<br /> в System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e)<br /> в System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)<br /> в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)<br /> в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)<br /> в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)<br /> в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)<br /> в System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)<br /> в System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)<br /> в System.Windows.Input.InputManager.ProcessStagingArea()<br /> в System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)<br /> в System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)<br /> в System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)<br /> в System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)<br /> в System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)<br /> в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)<br /> в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)<br /> в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)<br /> в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)<br /><br />похоже на багу. если написал в неправильную ветку - извините.https://stocksharp.ru/topic/2463/Событие order.CancelFailed().Once() было активировано дважды.2012-03-07T07:53:20Z2012-03-07T07:53:20Zvaderhttps://stocksharp.ru/users/28223/info@stocksharp.ruЯ подписываюсь на событие CancelFailed в методе ReplaceOrder и только в нем. <br />Правило одноразовое.<br />К сожалению количество вызывов ReplaceOrder и CancelFailed не совпадают.<br />Работаю на Quik, версия S# - исправленная 4.0.20<br /><br />18:45:02.230 | | CRBR | ReplaceOrder 67306126<br />18:45:02.232 | | CRBR | CancelOrder 67306126<br />18:45:02.421 | | CRBR | Правило 'Ошибка снятия заявки 67306126' активировано.<br />18:45:02.422 | | CRBR | OnCancelFailed Код ошибки Failed Сообщение Ошибка снятия заявки. [FORTS] "Сейчас эта сессия не идет".67306126<br />18:45:02.429 | | CRBR | Правило 'Ошибка снятия заявки 67306126' удалено.<br />18:45:02.446 | | CRBR | ex Транзакция 'CLASSCODE=SPBFUT; SECCODE=RIH2; TRANS_ID=67306127; ORDER_KEY=1393448849; ACTION=KILL_ORDER;' не была зарегистрирована. Причина 'Ошибка снятия заявки. [FORTS] "Сейчас эта сессия не идет".'.<br />18:45:14.100 | | CRBR | ReplaceOrder 67306126<br />18:45:14.102 | | CRBR | CancelOrder 67306126<br />18:45:14.337 | | CRBR | ex Транзакция 'CLASSCODE=SPBFUT; SECCODE=RIH2; TRANS_ID=67306128; ORDER_KEY=1393448849; ACTION=KILL_ORDER;' не была зарегистрирована. Причина 'Ошибка снятия заявки. [FORTS] "Сейчас эта сессия не идет".'.<br />18:45:14.339 | | CRBR | Правило 'Ошибка снятия заявки 67306126' активировано.<br />18:45:14.339 | | CRBR | OnCancelFailed Код ошибки Failed Сообщение Ошибка снятия заявки. [FORTS] "Сейчас эта сессия не идет".67306126<br />18:45:14.342 | | CRBR | Правило 'Ошибка снятия заявки 67306126' удалено.<br />18:45:14.342 | | CRBR | Правило 'Ошибка снятия заявки 67306126' активировано.<br />18:45:14.342 | | CRBR | OnCancelFailed Код ошибки Failed Сообщение Ошибка снятия заявки. [FORTS] "Сейчас эта сессия не идет".67306126<br />18:45:14.344 | | CRBR | Правило 'Ошибка снятия заявки 67306126' удалено.https://stocksharp.ru/topic/2460/Проблемы со стратегией2012-03-05T17:49:53Z2012-03-05T17:49:53Ztmthttps://stocksharp.ru/users/6032/info@stocksharp.ruВот пытаюсь переписать код грамотно, создать отдельный Stratagy.cs, где будет сама стратегия, но не получается.. Вызывал, вызывал эту стратегию, проверял все ли данные получаю (портфель, инструмент, стакан и тп..) все нормально слава Богу))<br /><br />Подскажите пожалуйста, как из другого класса вызвать окошко с ошибкой <div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
MessageBox.Show(this, "тра та та");</pre>
</div></div> чтоб узнать, вызывается тот класс со стратегией вообще или нет, пробовал по всякому + ссылки добавлял, но писал ошибки!<br /><br />И посмотрите пожалуйста кто нить, в чем же ошибка может быть, там всего путь поменять, да счет)) версия последняя 4.0.20 и терменал квикhttps://stocksharp.ru/topic/2458/Как в контейнер индикатора поместить индикатор? (решено, прошлые значения индикаторов)2012-03-05T11:32:49Z2012-03-05T11:32:49ZSpiritschaserhttps://stocksharp.ru/users/1927/info@stocksharp.ruЗдравствуйте!<br /><br />Для моей стратегии нужны некоторые прошлые значения индикаторов. У меня опыт программирования c/c++, без особо объектных моделей.<br /><br />В описании S# посмотрел описания всех членов, связанных с контейнерами, но не совсем понял, как они связываются с индикаторами.<br /><br />Вот, создаю я контейнер. Что дальше с ним сделать, чтобы он сохранял значения?https://stocksharp.ru/topic/2455/Не работают правила BestAskPriceMore и BestAskPriceLess2012-03-02T12:31:02Z2012-03-02T12:31:02Zvaderhttps://stocksharp.ru/users/28223/info@stocksharp.ruНе работают правила BestAskPriceMore и BestAskPriceLess.<br />Создал их относительно одной цены - ни одно из них не сработало.<br />При этом MarketDepthChanged.<br /><br />Версия S# - исправленная версия 4.0.20.https://stocksharp.ru/topic/2453/Order.Matched вызывается несколько раз2012-03-02T09:54:29Z2012-03-02T09:54:29Zrusshttps://stocksharp.ru/users/567/info@stocksharp.ruЗдравствуйте, есть проблема с вызовом события на Order.Matched.<br />Версия 4.0.19<br />Создаю заявку:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
var order = this.CreateOrder(direction, dealPrice, lotSize);
base.RegisterOrder(order);</pre>
</div></div><br /><br />потом создаю событие на исполнение заявки:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
StrategyRule stopRule = this.When(order.Matched());
stopRule.Do
(() =>
{
...
});</pre>
</div></div><br /><br />Т.е. если сделка выполнилась, заходим в правило и выставляем стоп, но на деле происходит так.<br />Например я покупаю 50 лотов, но покупка произошла не одной сделкой а допустим 3-мя, в итоге событие order.Matched отрабатывается 3 раза. <br />В документации написано что Matched это событие полного исполнения заявки, вопрос почему оно отрабатывается по ходу несколько раз, а не один раз в конце?https://stocksharp.ru/topic/2449/тиковые свечи по факту секундные2012-03-01T01:17:10Z2012-03-01T01:17:10ZKiruhinhttps://stocksharp.ru/users/6067/info@stocksharp.ruесли есть необходимость на каждую сделку свою свечку рисовать, то это нужно что-то ручками допиливать?https://stocksharp.ru/topic/2447/Как использовать класс IndicatorManager?2012-02-29T14:52:55Z2012-02-29T14:52:55Zhttps://stocksharp.ru/users/682/info@stocksharp.ruНе пойму работу IndicatorManager. Хочу добавить в него индикатор и потом получить значение Индикатора. <br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
// Регистрирую индикатор в менеджере
CandleToken token;
IndM = new IndicatorManager();
token = candleManager.RegisterTimeFrameCandles(SelectedSecurity, _timeFrame);
var PriceSource = new CandleTokenIndicatorSource(token, BaseCandleIndicatorSource.ByClose);
indTokenADX = IndM.RegisterIndicator(_Mystrategy.ADX, PriceSource);
</pre>
</div></div><br /><br />Теперь вопрос: как получить последнее или любое значение индикатораhttps://stocksharp.ru/topic/2439/CandleBuilder.CandleStarted вызывается несколько раз для одной свечки2012-02-27T08:45:32Z2012-02-27T08:45:32ZSupervisorhttps://stocksharp.ru/users/27975/info@stocksharp.ruДля построения графиков по сделкам использую следующий код:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:plain">
var trades = Core.Storage.GetTradeStorage(Security).Load(Core.Yesterday, Core.Yesterday + TimeSpan.FromTicks(TimeSpan.TicksPerDay - 1));
var bld = new CandleBuilder(new RawConvertableCandleBuilderSource<Trade>(trades)) { IsSyncRegister = true };
bld.CandlesStarted += (t, c) =>
{
var candles = c.Cast<TimeFrameCandle>();
Storage.Save(candles);
Core.LogMessage(candles.Count() + " свечек построено для " + this);
bld.Dispose();
};
bld.RegisterTimeFrameCandles(Security, TimeFrame);
</pre>
</div></div><br />Через событие CandlesStarted отдается массив сразу всех свечек за день.<br />Всегда работал хорошо, но сегодня обнаружил что для RIH2 за 24.02.12 с минутным таймфреймом почему-то косячит - свечки 12:32 и 12:33 в возвращаемом CandlesStarted массиве присутствуют много раз:<br /><div class="code"><strong>Код</strong><div class="innercode"><br />...<br />candleStarted candle time: 24.02.2012 12:30:00<br />candleStarted candle time: 24.02.2012 12:31:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:32:00<br />candleStarted candle time: 24.02.2012 12:33:00<br />candleStarted candle time: 24.02.2012 12:34:00<br /></div></div><br /><br />Обновился до 4.0.20v2, качал сделки заново, строил заново - ничего не помогает.<br />Сделки качаю с финама, в получаемом текстовом файле смотрел - сделки по вермени расположены без нарушений, вроде все в порядке...https://stocksharp.ru/topic/2433/MQS реверс2012-02-24T10:48:05Z2012-02-24T10:48:05Zkot99https://stocksharp.ru/users/777/info@stocksharp.ruДобрый день!<br />Можно реализовать фичу, чтобы MQS сам "переворачивал" позицию ?<br />Я понимаю, что можно в коде и самостоятельно сделать, но было бы удобнее если котирование само имело такую фишку :)<br />Спасибо.https://stocksharp.ru/topic/2432/Где тестируете опционные стратегии?2012-02-24T09:38:41Z2012-02-24T09:38:41ZSerghttps://stocksharp.ru/users/484/info@stocksharp.ruВозникла проблема с тестированием опционных стратегий. Демо квик в стаканах рисует цены по которым и заявки выставить нельзя. Пишет что премия опциона вне лимита((( Вот и возник вопрос как потестить правильность работы алгоритма с учетом реакции на свои заявки/сделки?https://stocksharp.ru/topic/2426/MarketQuotingStrategy набирает лишнее2012-02-22T07:21:14Z2012-02-22T07:21:14Zvfreemanhttps://stocksharp.ru/users/773/info@stocksharp.ruКоллеги, а в чем может быть дело и как лечить? Вчера (21.02.2012) повторилось несколько раз - сегодня опять.<br />Что делаю? Пытаюсь продать 1 контракт GZH2 с помощью стратегии MarketQuotingStrategy<br />Что на выходе? В итоге продается 2 контракта.<br />В процессе работы стратегии возникает событие Error - с текстом сообщения<br />"Код ошибки Failed Сообщение Вы не можете снять данную заявку"<br /><br />QUIK 6.01.0.17<br />S# 4.0.17<br />IsSupportAtomicReRegister = False<br /><br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:plain">
10:10:03.569 | | my strat | Запускаем MQS Security=GZH2@RTS Direction=Sell Volume=1
10:10:03.600 | | MQS GZH2 | Стратегия запущена.
10:10:03.600 | | MQS GZH2 | Котирование на Sell объема 1.
10:10:03.725 | | MQS GZH2 | Цена текущей NULL и лучшей 19063.
10:10:03.725 | | MQS GZH2 | Лучший бид 19061 и лучший аск 19063.
10:10:03.756 | | MQS GZH2 | Регистрация новой заявки на Sell с ценой 19063 и объемом 1.
10:10:03.850 | | QuikTrader | RegisterOrder: TransactionId=36159993, Id=0, Price=19063, Balance=1, Security=GZH2@RTS, State=None
10:10:04.334 | | MQS GZH2 | Заявка 36159993 на Sell отправлена с ценой 19063 объемом 1.
10:10:04.506 | Warning | MQS GZH2 | Заявка 36159993 в процессе регистрации.
10:10:05.022 | | QuikTrader | New order: TransactionId=36159993, Id=6876916871, Price=19063, Balance=0, Security=GZH2@RTS, State=Done
10:10:05.037 | | MQS GZH2 | Заявка 36159993 полностью исполнилась. Оставшийся объем 1.
10:10:05.069 | | MQS GZH2 | Цена текущей NULL и лучшей 19066.
10:10:05.100 | | MQS GZH2 | Новая Sell сделка 509016655 по цене 19063 на 1 заявки 36159993.
10:10:05.147 | | MQS GZH2 | Лучший бид 19062 и лучший аск 19066.
10:10:05.209 | | MQS GZH2 | Регистрация новой заявки на Sell с ценой 19066 и объемом 1.
10:10:05.209 | | my strat | Новая Sell сделка 509016655 по цене 19063 на 1 заявки 36159993.
10:10:05.209 | | MQS GZH2 | Новая позиция -1.
10:10:05.287 | | QuikTrader | RegisterOrder: TransactionId=36159996, Id=0, Price=19066, Balance=1, Security=GZH2@RTS, State=None
10:10:05.287 | | my strat | NewMyTrades сделка Security=GZH2@RTS Vol=1 Direction=Sell TradePrice=19063
10:10:05.319 | | MQS GZH2 | Заявка 36159996 на Sell отправлена с ценой 19066 объемом 1.
10:10:05.412 | | MQS GZH2 | Позиция изменилась на -1. Оставшийся объем 0.
10:10:05.647 | | MQS GZH2 | Заканчиваем котирование.
10:10:05.850 | | MQS GZH2 | Стратегия останавливается.
10:10:05.897 | | MQS GZH2 | Стратегия остановлена.
</pre>
</div></div>https://stocksharp.ru/topic/2422/работа с алгоритмом котирования по нескольким инстументам2012-02-20T19:10:36Z2012-02-20T19:10:36ZEThttps://stocksharp.ru/users/5992/info@stocksharp.ruСуть в том что мне необходимо скотировать в рамках одной стратегии несколько инструментов<br /><br />так создаю стратегию в MainWindow<br /><br />_strategy = new _Strategy(SECURITY_Call_1, SECURITY_Call_2, SECURITY_Call_3, SECURITY_Call_4,<br /> SECURITY_Put_1, SECURITY_Put_2, SECURITY_Put_3, SECURITY_Put_4, SECURITY_future)<br /> {<br /> Volume = 1,<br /> Security = SECURITY_Call_1,<br /> _SECURITY_future = SECURITY_future,<br /> _SECURITY_Call_1 = SECURITY_Call_1,<br /> _SECURITY_Call_2 = SECURITY_Call_2,<br /> _SECURITY_Call_3 = SECURITY_Call_3,<br /> _SECURITY_Call_4 = SECURITY_Call_4,<br /> _SECURITY_Put_1 = SECURITY_Put_1,<br /> _SECURITY_Put_2 = SECURITY_Put_2,<br /> _SECURITY_Put_3 = SECURITY_Put_3,<br /> _SECURITY_Put_4 = SECURITY_Put_4,<br /> Portfolio = this.Portfolios.SelectedPortfolio,<br /> Trader = Trader,<br /> };<br /><br />в коде самой стратегии<br /><br />1. объявляю переменные<br />public Security _SECURITY_Call_1, _SECURITY_Call_2, _SECURITY_Call_3, _SECURITY_Call_4;<br />public Security _SECURITY_Put_1, _SECURITY_Put_2, _SECURITY_Put_3, _SECURITY_Put_4;<br /><br />2. конструктор<br />public _Strategy(Security SECURITY_future, Security SECURITY_Call_1, Security SECURITY_Call_2, Security SECURITY_Call_3, Security SECURITY_Call_4, Security SECURITY_Put_1, Security SECURITY_Put_2, Security SECURITY_Put_3, Security SECURITY_Put_4)<br /> {<br /> _SECURITY_future = SECURITY_future;<br /> _SECURITY_Call_1 = SECURITY_Call_1;<br /> _SECURITY_Call_2 = SECURITY_Call_2;<br /> _SECURITY_Call_3 = SECURITY_Call_3;<br /> _SECURITY_Call_4 = SECURITY_Call_4;<br /> _SECURITY_Put_1 = SECURITY_Put_1;<br /> _SECURITY_Put_2 = SECURITY_Put_2;<br /> _SECURITY_Put_3 = SECURITY_Put_3;<br /> _SECURITY_Put_4 = SECURITY_Put_4;<br /><br /> }<br /><br /><br />При этом получается выставить ордер по любому инструменту<br /><br />вот к примеру метод выставления, получается войти по любому инструменту<br /><br /> private void Future_orderMarket(decimal volume, OrderDirections dir_FutureMarket)<br /> {<br /> var orderMarket_Future = new Order<br /> {<br /> Type = OrderTypes.Market,<br /> Volume = 1,<br /> Portfolio = base.Portfolio,<br /> Security = _SECURITY_Call_3,<br /> Direction = dir_FutureMarket,<br /> };<br /><br /> base.RegisterOrder(orderMarket_Future);<br /> }<br /><br />вот так вхожу в позицию по инструменту _SECURITY_Call_3<br /><br />Future_orderMarket(Volume, OrderDirections.Buy);<br /><br />но вот не могу понять почему не работают алгоритмы котирования для любого инструмента, а только для инструмента:<br />Security = SECURITY_Call_1,<br /><br />т.е. к примеру когда я включаю котирование по _SECURITY_Call_3, он котирует SECURITY_Call_1.<br /><br />Перепробовал много вариантов, но никак не могу решить эту проблему.<br />Подскажите как мне решить данный вопрос!<br /><br /><br /><br />