Первый робот
Atom Ответить
20.06.2013


День добры всем!
У меня возникла проблема, изучаю S# (и параллельно C#, может поэтому до чего то не догоняю).
Есть простой код:
Код
namespace SampleSmartConsole
{
	using System;
	using System.Linq;
	using System.Threading;

	using Ecng.Collections;
	using Ecng.Common;

	using StockSharp.BusinessEntities;
	using StockSharp.Smart;
	using StockSharp.Algo;
        using MainSms;

	class Program
	{
		private static Security _rts;
		private static Portfolio _portfolio;
                private static Security _instrument;
                private static MarketDepth _depth;
                private static Position _position;

        
 
		static void Main()
		{
			try
			{
				сonst string secCode = "RIU3";

				var login = "*****";

				var password = "*****";

				var account = "*********";

				using (var waitHandle = new AutoResetEvent(false))
				{
					// создаем шлюз к Smart-у
                                        using (var trader = new SmartTrader(login, password))
					{
						// подписываемся на событие успешного подключения
						// все действия необходимо производить только после подключения
						trader.Connected += () =>
						{
							Console.WriteLine("Подключение было произведено успешно.");

							// извещаем об успешном соединени
							waitHandle.Set();
						};

						Console.WriteLine("Производим подключение...");

						trader.Connect();

						// дожидаемся события об успешном соединении
						waitHandle.WaitOne();

						// подписываемся на все портфели-счета
						trader.NewPortfolios += portfolios =>
						{
							// необходимое условие работы в SmartCOM
							portfolios.ForEach(trader.RegisterPortfolio);

							if (_portfolio == null)
							{
								// находим нужный портфель и присваиваем его переменной _portfolio
								_portfolio = portfolios.FirstOrDefault(p => p.Name == account);

								if (_portfolio != null)
								{
									Console.WriteLine("Портфель {0} появился.", account);

									if (_rts != null)
									waitHandle.Set();
								}
							}
						};

						// подписываемся на событие появление инструментов
						trader.NewSecurities += securities =>
						{
                                                  if (_rts == null)
							{
						          // находим RTS и присваиваем ее переменной _rts
                                                          _rts = securities.FirstOrDefault(sec => sec.Code == secCode && sec.Type == SecurityTypes.Future);

                                                           if (_rts != null)
								{
									Console.WriteLine("Инструмент RTS появился.");

                                                                       // запускаем экспорт стакана
                                                                        trader.RegisterMarketDepth(_rts);

									if (_portfolio != null)
										waitHandle.Set();
								}
							}
						};
                        // подписываемся на событие обновления стакана
                        trader.MarketDepthsChanged += depths =>
                        {
                            if (_depth == null && _instrument != null)
                            {
                                _depth = depths.FirstOrDefault(d => d.Security == _instrument);

                                if (_depth != null)
                                {
                                    Console.WriteLine("Стакан появился.");

                                    if (_portfolio != null && _position != null)
                                        waitHandle.Set();
                                }
                            }
                        };
                        
						// подписываемся на событие появления моих новых сделок
						trader.NewMyTrades += myTrades =>
						{
							foreach (var myTrade in myTrades)
							{
							  var trade = myTrade.Trade;
							  Console.WriteLine("Сделка {0} по цене {1} по бумаге {2} по объему {3} в {4}.", trade.Id, trade.Price, trade.Security.Code, trade.Volume, trade.Time);
							}
						};

						Console.WriteLine("Дожидаемся появления в программе инструмента RTS и портфеля {0}...".Put(account));

						// запускаем экспорт по инструментам и портфелям
						trader.StartExport();

						// дожидаемся появления портфеля и инструмента
						waitHandle.WaitOne();

						trader.SecuritiesChanged += securities =>
						{
							// если инструмент хоть раз изменился (по нему пришли актуальные данные)
                                                                if (securities.Contains(_rts))
								waitHandle.Set();
						};

						Console.WriteLine("Дожидаемся обновления данных по инструменту RTS...");

						// запускаем обновление по инструменту
                                                trader.RegisterSecurity(_rts);
                                              
						waitHandle.WaitOne();

                        while (true)
                        {
                            MarketDepth x = new MarketDepth (_rts);

                            var totb = x.TotalBidsVolume;
                            var tota = x.TotalAsksVolume;
                         

                            Console.WriteLine("общий объем bid {0}", totb);
                            Console.WriteLine("общий объем ask {0}", tota);

                            Thread.Sleep(1000);
                        }
                        // останавливаем экспорт
                        trader.StopExport();
                        Console.WriteLine("StopExport");
                        Console.ReadKey();

						}
					}
				}
		    catch (Exception ex)
            {
                Console.WriteLine(ex);
                Console.WriteLine("catch");
                Console.ReadKey();
            }

		}
	}
}

Но он не работает, вроде все на месте, но выдает сплошные нули. Помогите разобраться, а то уже 3 день из головы кактусы....

Теги:


Спасибо:




0 Ответов


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

loading
clippy