﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Инициализация стратегии в тестировании на истории</title>
  <id>~/topic/3156/initsializatsiya-strategii-v-testirovanii-na-istorii/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-16T14:30:51Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=3156" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/48378/</id>
    <title type="text">Получилось разобраться?</title>
    <published>2019-09-08T17:00:31Z</published>
    <updated>2019-09-08T17:00:31Z</updated>
    <author>
      <name>komaranton</name>
      <uri>https://stocksharp.com/users/104641/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Получилось разобраться?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/22452/</id>
    <title type="text">Дебаггер, рефлектор.деобфускатор? ) Да я про ваш код имел ввиду. Хотя конечно я бы начал с основ - ч...</title>
    <published>2012-11-12T21:09:16Z</published>
    <updated>2012-11-12T21:09:16Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;vk37 &lt;a href="https://stocksharp.com/posts/m/22451/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.com/posts/m/22449/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Дебаггер, рефлектор.&lt;/div&gt;&lt;/div&gt;деобфускатор? )&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Да я про ваш код имел ввиду. Хотя конечно я бы начал с основ - что такое исключение и что такое стектрейс. Но я так понял вы не из тех, кто любит на всякие разности отвлекаться.[rolleyes] </content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/22451/</id>
    <title type="text">Дебаггер, рефлектор.деобфускатор? ) </title>
    <published>2012-11-12T21:05:55Z</published>
    <updated>2012-11-12T21:05:55Z</updated>
    <author>
      <name>vk37</name>
      <uri>https://stocksharp.com/users/6296/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.com/posts/m/22449/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Дебаггер, рефлектор.&lt;/div&gt;&lt;/div&gt;деобфускатор? )&lt;br /&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/22449/</id>
    <title type="text">Может неявно как-то вызывается. Могу выслать код стратегии котирования. Для ревью ) Если только Миха...</title>
    <published>2012-11-12T20:23:05Z</published>
    <updated>2012-11-12T20:23:05Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;vk37 &lt;a href="https://stocksharp.com/posts/m/22446/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Может неявно как-то вызывается. Могу выслать код стратегии котирования. Для ревью )&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Если только Михаил заинтересуется[biggrin] Мне и своего кода для ревьирования хватает, спасибо. Надо поднтянуть матчасть связанную с отладкой ошибок. Дебаггер, рефлектор.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/22446/</id>
    <title type="text">System.InvalidOperationException: Operation is not valid due to the current state of the object. at ...</title>
    <published>2012-11-12T20:08:06Z</published>
    <updated>2012-11-12T20:08:06Z</updated>
    <author>
      <name>vk37</name>
      <uri>https://stocksharp.com/users/6296/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.com/posts/m/22442/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Quote:&lt;/span&gt;&lt;div class="innerquote"&gt;System.InvalidOperationException: Operation is not valid due to the current state of the object.&lt;br /&gt;   at StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)&lt;br /&gt;   at AlgoTrading.HistoryTesting.Optimizer.&amp;lt;&amp;gt;c__DisplayClassb.&amp;lt;Optimize&amp;gt;b__5(ParamsDto period) in c:\ActiveProjects\AlgoTrading3\trunk\SourceCode\HistoryTesting\Optimizer.cs:line 83&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;По стек трейсу видно, что напрямую вызывается BaseTrader.ProcessEvents. Зачем?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Даже не знаю что это такое. Строка 83 - инициализация стратегии.&lt;br /&gt;Упрощенный код моей стратегии:&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_58eced10a11d4a23bf6bf8dc51db5564');" title='Show spoiler' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_58eced10a11d4a23bf6bf8dc51db5564' style='display:none'&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
    public sealed class MyStrategy : AbstractStrategy
    {
        private bool _canProcess = true;
        private readonly object _locker = new object();
        public CsvLogManager CsvLogManager { get; set; }
        
        protected override void OnStarted()
        {
            Security
                .WhenMarketDepthChanged()
                .Do(ProcessDepth)
                .Sync(_locker)
                .Apply(this);

            this.WhenNewMyTrades()
                .Do(myTrades =&amp;gt;
                    {
                        foreach (var myTrade in myTrades)
                        {
                            CsvLogManager.WriteLine(new MyTradeLogItem()
                            {
                                Now = DateTime.Now,
                                CurrentTime = CurrentTime,
                                TradeId = myTrade.Trade.Id,
                                TransactionId = myTrade.Order.TransactionId,
                                Time = myTrade.Trade.Time,
                                TradePrice = myTrade.Trade.Price,
                                OrderPrice = myTrade.Order.Price,
                                TradeVolume = myTrade.Trade.Volume,
                                Direction = myTrade.Order.Direction,
                                OrderId = myTrade.Order.Id,
                                Slippage = myTrade.GetSlippage(true),
                                SlippageQuoting = SlippageManager.GetSlippage(myTrade),
                                Comment = comment,
                            });

                            CsvLogManager.WriteLine(new MyTradeWmsLogItem()
                            {
                                Time = myTrade.Trade.Time,
                                SecurityCode = Security.Id == Securities.Instance.RtsF.Id ? &amp;quot;RTS&amp;quot; : Security.Code,
                                Direction = myTrade.Order.Direction,
                                Price = myTrade.Trade.Price,
                                Volume = myTrade.Trade.Volume,
                                Comission = myTrade.Trade.Volume * 2,
                            });
                        } 
                    })
                .Apply(this);

            base.OnStarted();
        }

        protected override void OnStopped()
        {
            base.OnStopped();
            CsvLogManager.Dispose();
        }

        private void ProcessDepth(MarketDepth depth)
        {
            if (!Security.Exchange.IsTradeTime(depth.LastChangeTime))
                return;

            if (CsvLogManager.MarketDepthLogEnabled)
                CsvLogManager.WriteLine(new MarketDepthLogItem()
                    {
                        Now = DateTime.Now,
                        CurrentTime = CurrentTime,
                        MarketDepthTime = depth.LastChangeTime,
                        Ratio = ratio,
                        CanProcess = Convert.ToInt32(_canProcess),
                        CurrentPrice = price,
                        BestAsk = depth.BestAsk == null ? 0 : depth.BestAsk.Price,
                        BestBid = depth.BestBid == null ? 0 : depth.BestBid.Price,
                        PnL = PnL,
                        PortfolioBeginValue = Portfolio.BeginValue,
                        PortfolioCurrentValue = Portfolio.CurrentValue,
                        PortfolioVariationMargin = Portfolio.VariationMargin,
                        PortfolioComission = Portfolio.Commission,
                        PortfolioGetPrice = Portfolio.GetPrice(),
                    });

            if (!_canProcess)
                return;

            var closePosition = ShouldClose();
            var openPosition = ShouldOpen();;

            if (closePosition || openPosition)
            {
                _canProcess = false;
                var volume = 0m;

                if (closePosition)
                    volume += Math.Abs(Position);
                
                if (openPosition)
                   volume += Volume;

                var strategy = new MyQuotingStrategy(orderDirection,
                                                     new Unit(price, UnitTypes.Absolute, Security),
                                                     new Unit(1, UnitTypes.Step, Security),
                                                     comment) { Volume = volume };
                strategy
                    .WhenStopped()
                    .Do(() =&amp;gt;
                    {
                        _canProcess = true;
                    })
                    .Once()
                    .Sync(_locker)
                    .Apply(this);

                ChildStrategies.Add(strategy);
            }
        }
    }&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;Может неявно как-то вызывается. Могу выслать код стратегии котирования. Для ревью )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/22442/</id>
    <title type="text">System.InvalidOperationException: Operation is not valid due to the current state of the object. at ...</title>
    <published>2012-11-12T19:36:21Z</published>
    <updated>2012-11-12T19:36:21Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Quote:&lt;/span&gt;&lt;div class="innerquote"&gt;System.InvalidOperationException: Operation is not valid due to the current state of the object.&lt;br /&gt;   at StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)&lt;br /&gt;   at AlgoTrading.HistoryTesting.Optimizer.&amp;lt;&amp;gt;c__DisplayClassb.&amp;lt;Optimize&amp;gt;b__5(ParamsDto period) in c:\ActiveProjects\AlgoTrading3\trunk\SourceCode\HistoryTesting\Optimizer.cs:line 83&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;По стек трейсу видно, что напрямую вызывается BaseTrader.ProcessEvents. Зачем?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/22439/</id>
    <title type="text">В упрощенном виде код оптимизации такой: public class Optimizer { private IStorageRegistry _storageR...</title>
    <published>2012-11-12T17:16:55Z</published>
    <updated>2012-11-12T17:17:20Z</updated>
    <author>
      <name>vk37</name>
      <uri>https://stocksharp.com/users/6296/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">В упрощенном виде код оптимизации такой:&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_d5c6140517bf4450b159166ad189e9db');" title='Show spoiler' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_d5c6140517bf4450b159166ad189e9db' style='display:none'&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
    public class Optimizer
    {
        private IStorageRegistry _storageRegistry;
        private LocalMarketDataDrive _defaultDrive;

        public void Optimize()
        {
            var startTime = new DateTime(2012, 9, 10);
            var stopTime = new DateTime(2012, 11, 8);
            _storageRegistry = new StorageRegistry();
            _defaultDrive = (LocalMarketDataDrive)_storageRegistry.DefaultDrive;
            _defaultDrive.Path = @&amp;quot;D:\DBs\HydraData\Smart&amp;quot;;
            var security = Securities.Instance.RtsF;
            var periods = MyStrategy.GetParamCombinations();

            Parallel.ForEach(periods, new ParallelOptions { MaxDegreeOfParallelism = 8 }, period =&amp;gt;
                {
                    using (var waitHandle = new AutoResetEvent(false))
                    {
                        var rts = security.Clone();
                        var portfolio = new Portfolio { Name = &amp;quot;test account&amp;quot;, BeginValue = 100000m };
                        var trader = new EmulationTrader(
                            new[] { rts },
                            new[] { portfolio },
                            _storageRegistry)
                            {
                                UseMarketDepth = true,
                                StorageRegistry = _storageRegistry,
                            };

                        trader.MarketEmulator.Settings.Latency = TimeSpan.FromSeconds(1);
                        trader.RegisterMarketDepth(rts);
                        trader.Connect();
                        trader.StartExport();
                        var strategy = new MyStrategy(period)
                        {
                            Volume = 1,
                            Security = rts,
                            Portfolio = portfolio,
                            Trader = trader,
                            CommissionManager = rts.GetComissionManager(),
                        };

                        trader.StateChanged += (oldState, newState) =&amp;gt;
                            {
                                if (trader.State == EmulationStates.Started)
                                    strategy.Start();
                                else if (trader.State == EmulationStates.Stopped)
                                {
                                    new ExcelStrategyReport(strategy, path).Generate();
                                    waitHandle.Set();
                                }
                            };

                        trader.Start(startTime, stopTime);
                        waitHandle.WaitOne();
                    }
                });
        }
    }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;Вроде EmulationTrader на правильном месте. Не знаю как правильно )</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/22436/</id>
    <title type="text">судя по колстаку у вас Parallel.For или что-то в этом духе. Там точно нет ситуации что EmulationTrad...</title>
    <published>2012-11-12T16:16:21Z</published>
    <updated>2012-11-12T16:16:21Z</updated>
    <author>
      <name>pyhta4og</name>
      <uri>https://stocksharp.com/users/497/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">судя по колстаку у вас Parallel.For или что-то в этом духе. Там точно нет ситуации что EmulationTrader дергается из двух разных потоков? Он вполне может быть не потокобезопасным.&lt;br /&gt;&lt;br /&gt;если вам надо сделать оптимизацию гораздо быстрее будет сделать кучу экземпляров стратегии с разными параметрами и всю кучу прогнать в одном эмуляйшн-трейдере.&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/22393/</id>
    <title type="text">Ошибка, в общем, возникает при инициализации старетгии. Вне зависимости в каком месте ее инициализир...</title>
    <published>2012-11-09T20:27:34Z</published>
    <updated>2012-11-09T20:31:00Z</updated>
    <author>
      <name>vk37</name>
      <uri>https://stocksharp.com/users/6296/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Ошибка, в общем, возникает при инициализации старетгии. Вне зависимости в каком месте ее инициализировать. Возникает не при каждом запуске. Одна и та же сборка иногда нормально сработает, а иногда с ошибкой. Может кто сталкивался?&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_46e0ec8161cd478f82e71ac5c831ed1a');" title='Show spoiler' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_46e0ec8161cd478f82e71ac5c831ed1a' style='display:none'&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:plain"&gt;
System.AggregateException: One or more errors occurred. ---&amp;gt; System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)
   at AlgoTrading.HistoryTesting.Optimizer.&amp;lt;&amp;gt;c__DisplayClassb.&amp;lt;Optimize&amp;gt;b__5(ParamsDto period) in c:\ActiveProjects\AlgoTrading3\trunk\SourceCode\HistoryTesting\Optimizer.cs:line 83
   at System.Threading.Tasks.Parallel.&amp;lt;&amp;gt;c__DisplayClassf`1.&amp;lt;ForWorker&amp;gt;b__c()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.&amp;lt;&amp;gt;c__DisplayClass10.&amp;lt;ExecuteSelfReplicating&amp;gt;b__f(Object param0)
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at System.Threading.Tasks.Task.Wait()
   at System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body)
   at AlgoTrading.HistoryTesting.Optimizer.Optimize() in c:\ActiveProjects\AlgoTrading3\trunk\SourceCode\HistoryTesting\Optimizer.cs:line 129
   at AlgoTrading.HistoryTesting.Program.Main() in c:\ActiveProjects\AlgoTrading3\trunk\SourceCode\HistoryTesting\Program.cs:line 29
---&amp;gt; (Inner Exception #0) System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)
   at AlgoTrading.HistoryTesting.Optimizer.&amp;lt;&amp;gt;c__DisplayClassb.&amp;lt;Optimize&amp;gt;b__5(ParamsDto period) in c:\ActiveProjects\AlgoTrading3\trunk\SourceCode\HistoryTesting\Optimizer.cs:line 83
   at System.Threading.Tasks.Parallel.&amp;lt;&amp;gt;c__DisplayClassf`1.&amp;lt;ForWorker&amp;gt;b__c()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.&amp;lt;&amp;gt;c__DisplayClass10.&amp;lt;ExecuteSelfReplicating&amp;gt;b__f(Object param0)&amp;lt;---

---&amp;gt; (Inner Exception #1) System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)
   at AlgoTrading.HistoryTesting.Optimizer.&amp;lt;&amp;gt;c__DisplayClassb.&amp;lt;Optimize&amp;gt;b__5(ParamsDto period) in c:\ActiveProjects\AlgoTrading3\trunk\SourceCode\HistoryTesting\Optimizer.cs:line 83
   at System.Threading.Tasks.Parallel.&amp;lt;&amp;gt;c__DisplayClassf`1.&amp;lt;ForWorker&amp;gt;b__c()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.&amp;lt;&amp;gt;c__DisplayClass10.&amp;lt;ExecuteSelfReplicating&amp;gt;b__f(Object param0)&amp;lt;---

---&amp;gt; (Inner Exception #2) System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)
   at AlgoTrading.HistoryTesting.Optimizer.&amp;lt;&amp;gt;c__DisplayClassb.&amp;lt;Optimize&amp;gt;b__5(ParamsDto period) in c:\ActiveProjects\AlgoTrading3\trunk\SourceCode\HistoryTesting\Optimizer.cs:line 83
   at System.Threading.Tasks.Parallel.&amp;lt;&amp;gt;c__DisplayClassf`1.&amp;lt;ForWorker&amp;gt;b__c()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.&amp;lt;&amp;gt;c__DisplayClass10.&amp;lt;ExecuteSelfReplicating&amp;gt;b__f(Object param0)&amp;lt;---

---&amp;gt; (Inner Exception #3) System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)
   at AlgoTrading.HistoryTesting.Optimizer.&amp;lt;&amp;gt;c__DisplayClassb.&amp;lt;Optimize&amp;gt;b__5(ParamsDto period) in c:\ActiveProjects\AlgoTrading3\trunk\SourceCode\HistoryTesting\Optimizer.cs:line 83
   at System.Threading.Tasks.Parallel.&amp;lt;&amp;gt;c__DisplayClassf`1.&amp;lt;ForWorker&amp;gt;b__c()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.&amp;lt;&amp;gt;c__DisplayClass10.&amp;lt;ExecuteSelfReplicating&amp;gt;b__f(Object param0)&amp;lt;---

---&amp;gt; (Inner Exception #4) System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)
   at AlgoTrading.HistoryTesting.Optimizer.&amp;lt;&amp;gt;c__DisplayClassb.&amp;lt;Optimize&amp;gt;b__5(ParamsDto period) in c:\ActiveProjects\AlgoTrading3\trunk\SourceCode\HistoryTesting\Optimizer.cs:line 83
   at System.Threading.Tasks.Parallel.&amp;lt;&amp;gt;c__DisplayClassf`1.&amp;lt;ForWorker&amp;gt;b__c()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.&amp;lt;&amp;gt;c__DisplayClass10.&amp;lt;ExecuteSelfReplicating&amp;gt;b__f(Object param0)&amp;lt;---

---&amp;gt; (Inner Exception #5) System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)
   at AlgoTrading.HistoryTesting.Optimizer.&amp;lt;&amp;gt;c__DisplayClassb.&amp;lt;Optimize&amp;gt;b__5(ParamsDto period) in c:\ActiveProjects\AlgoTrading3\trunk\SourceCode\HistoryTesting\Optimizer.cs:line 83
   at System.Threading.Tasks.Parallel.&amp;lt;&amp;gt;c__DisplayClassf`1.&amp;lt;ForWorker&amp;gt;b__c()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.&amp;lt;&amp;gt;c__DisplayClass10.&amp;lt;ExecuteSelfReplicating&amp;gt;b__f(Object param0)&amp;lt;---

---&amp;gt; (Inner Exception #6) System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)
   at AlgoTrading.HistoryTesting.Optimizer.&amp;lt;&amp;gt;c__DisplayClassb.&amp;lt;Optimize&amp;gt;b__5(ParamsDto period) in c:\ActiveProjects\AlgoTrading3\trunk\SourceCode\HistoryTesting\Optimizer.cs:line 83
   at System.Threading.Tasks.Parallel.&amp;lt;&amp;gt;c__DisplayClassf`1.&amp;lt;ForWorker&amp;gt;b__c()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.&amp;lt;&amp;gt;c__DisplayClass10.&amp;lt;ExecuteSelfReplicating&amp;gt;b__f(Object param0)&amp;lt;---

---&amp;gt; (Inner Exception #7) System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)
   at AlgoTrading.HistoryTesting.Optimizer.&amp;lt;&amp;gt;c__DisplayClassb.&amp;lt;Optimize&amp;gt;b__5(ParamsDto period) in c:\ActiveProjects\AlgoTrading3\trunk\SourceCode\HistoryTesting\Optimizer.cs:line 83
   at System.Threading.Tasks.Parallel.&amp;lt;&amp;gt;c__DisplayClassf`1.&amp;lt;ForWorker&amp;gt;b__c()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.&amp;lt;&amp;gt;c__DisplayClass10.&amp;lt;ExecuteSelfReplicating&amp;gt;b__f(Object param0)&amp;lt;---&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/22389/</id>
    <title type="text">Я бы инициализацию стратегии перенес сюда. А то ошибка происходит, про состояние объекта что-то. _tr...</title>
    <published>2012-11-09T14:33:32Z</published>
    <updated>2012-11-09T14:33:32Z</updated>
    <author>
      <name>pyhta4og</name>
      <uri>https://stocksharp.com/users/497/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;vk37 &lt;a href="https://stocksharp.com/posts/m/22371/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Я бы инициализацию стратегии перенес сюда. А то ошибка происходит, про состояние объекта что-то.&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
_trader.StateChanged += (oldState, newState) =&amp;gt;
{
	if (_trader.State == EmulationStates.Stopped)
	{
		this.GuiAsync(() =&amp;gt;
		{
			StartBtn.IsEnabled = true;

			if (_trader.IsFinished)
			{
				TestingProcess.Value = TestingProcess.Maximum;
				MessageBox.Show(this, &amp;quot;Закончено за &amp;quot; + (DateTime.Now - _startEmulationTime));
			}
			else
				MessageBox.Show(this, &amp;quot;Отменено&amp;quot;);
		});
	}
	else if (_trader.State == EmulationStates.Started)
	{
        //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        // создаем торговую стратегию, скользящие средние на 80 5-минуток и 10 5-минуток
        _strategy = new SmaStrategy(series, new SimpleMovingAverage { Length = 80 }, new SimpleMovingAverage { Length = 10 })
        {
            Volume = 1,
            Portfolio = portfolio,
            Security = security,
            Trader = _trader
        };
        //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		// запускаем стратегию когда эмулятор запустился
		_strategy.Start();
	}
};&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;тогда у вас стратегия не факт что запустится с начала данных - эмулятор уедет вперед &lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/22371/</id>
    <title type="text">Я бы инициализацию стратегии перенес сюда. А то ошибка происходит, про состояние объекта что-то. _tr...</title>
    <published>2012-11-09T10:49:09Z</published>
    <updated>2012-11-09T10:49:09Z</updated>
    <author>
      <name>vk37</name>
      <uri>https://stocksharp.com/users/6296/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Я бы инициализацию стратегии перенес сюда. А то ошибка происходит, про состояние объекта что-то.&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
_trader.StateChanged += (oldState, newState) =&amp;gt;
{
	if (_trader.State == EmulationStates.Stopped)
	{
		this.GuiAsync(() =&amp;gt;
		{
			StartBtn.IsEnabled = true;

			if (_trader.IsFinished)
			{
				TestingProcess.Value = TestingProcess.Maximum;
				MessageBox.Show(this, &amp;quot;Закончено за &amp;quot; + (DateTime.Now - _startEmulationTime));
			}
			else
				MessageBox.Show(this, &amp;quot;Отменено&amp;quot;);
		});
	}
	else if (_trader.State == EmulationStates.Started)
	{
        //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        // создаем торговую стратегию, скользящие средние на 80 5-минуток и 10 5-минуток
        _strategy = new SmaStrategy(series, new SimpleMovingAverage { Length = 80 }, new SimpleMovingAverage { Length = 10 })
        {
            Volume = 1,
            Portfolio = portfolio,
            Security = security,
            Trader = _trader
        };
        //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		// запускаем стратегию когда эмулятор запустился
		_strategy.Start();
	}
};&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>