← Назад

Фичи/Баги/Пожелания для AlfaConnector

Основная функциональность в альфа-коннекторе завершена.

Код свободно доступен на http://stocksharpconnectors.codeplex.com/SourceControl/list/changesets

Из основных явных недоделок можно выделить:

  • отсутствие поддержки опционов
  • отсутствие поддержки стоп-ордеров.

В связи с этим, если есть активные пользователи данного коннектора, буду рад услышать замечаниях о багах, фичах и пожеланиях.

Комментарии (145)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

Sergey Masyura
Sergey Masyura Автор

sergey.masyura: Основная функциональность в альфа-коннекторе завершена.

Код свободно доступен на http://stocksharpconnectors.codeplex.com/SourceControl/list/changesets

Из основных явных недоделок можно выделить:

  • отсутствие поддержки опционов
  • отсутствие поддержки стоп-ордеров.

В связи с этим, если есть активные пользователи данного коннектора, буду рад услышать замечаниях о багах, фичах и пожеланиях.

Несколько идей для доработки:

  • Добавить заявки типа следящий стоп (trailing stop)
  • Добавить открытый интерес
  • Добавить поддержку загрузки исторических данных.

У кого еще какие будут варианты?

Doctor
Doctor

sergey.masyura:

sergey.masyura: Основная функциональность в альфа-коннекторе завершена.

Код свободно доступен на http://stocksharpconnectors.codeplex.com/SourceControl/list/changesets

Из основных явных недоделок можно выделить:

  • отсутствие поддержки опционов
  • отсутствие поддержки стоп-ордеров.

В связи с этим, если есть активные пользователи данного коннектора, буду рад услышать замечаниях о багах, фичах и пожеланиях.

Несколько идей для доработки:

  • Добавить заявки типа следящий стоп (trailing stop)
  • Добавить открытый интерес
  • Добавить поддержку загрузки исторических данных.

У кого еще какие будут варианты?

Добрый День Сергей,

А открытый интерес поддеживается альфа-коннектором? Или эти идеи пока для будущих фич?

Спасибо,

Mikhail Sukhov
Mikhail Sukhov

Doctor: А открытый интерес поддеживается альфа-коннектором? Или эти идеи пока для будущих фич?

Исходники все на http://stocksharp.codeplex.com/ Открытый интерес ждет вас.😂

Sergey Masyura
Sergey Masyura Автор

Doctor:

sergey.masyura:

sergey.masyura: Основная функциональность в альфа-коннекторе завершена.

Код свободно доступен на http://stocksharpconnectors.codeplex.com/SourceControl/list/changesets

Из основных явных недоделок можно выделить:

  • отсутствие поддержки опционов
  • отсутствие поддержки стоп-ордеров.

В связи с этим, если есть активные пользователи данного коннектора, буду рад услышать замечаниях о багах, фичах и пожеланиях.

Несколько идей для доработки:

  • Добавить заявки типа следящий стоп (trailing stop)
  • Добавить открытый интерес
  • Добавить поддержку загрузки исторических данных.

У кого еще какие будут варианты?

Добрый День Сергей,

А открытый интерес поддеживается альфа-коннектором? Или эти идеи пока для будущих фич?

Спасибо,

ОИ добавить делов на 10 минут. Последнее время в основном занимаюсь разработкой роботов на заказ. Как будет время обязательно добавлю.

Doctor
Doctor

sergey.masyura:

Doctor:

sergey.masyura:

sergey.masyura: Основная функциональность в альфа-коннекторе завершена.

Код свободно доступен на http://stocksharpconnectors.codeplex.com/SourceControl/list/changesets

Из основных явных недоделок можно выделить:

  • отсутствие поддержки опционов
  • отсутствие поддержки стоп-ордеров.

В связи с этим, если есть активные пользователи данного коннектора, буду рад услышать замечаниях о багах, фичах и пожеланиях.

Несколько идей для доработки:

  • Добавить заявки типа следящий стоп (trailing stop)
  • Добавить открытый интерес
  • Добавить поддержку загрузки исторических данных.

У кого еще какие будут варианты?

Добрый День Сергей,

А открытый интерес поддеживается альфа-коннектором? Или эти идеи пока для будущих фич?

Спасибо,

ОИ добавить делов на 10 минут. Последнее время в основном занимаюсь разработкой роботов на заказ. Как будет время обязательно добавлю.

Да, глянул код, похоже надо open_pos_qty добавить в фильтр и сохранить его в свойствах security во время OnProcessSecurities. Попробую.

Sergey Masyura
Sergey Masyura Автор

Doctor:

sergey.masyura:

Doctor:

sergey.masyura:

sergey.masyura: Основная функциональность в альфа-коннекторе завершена.

Код свободно доступен на http://stocksharpconnectors.codeplex.com/SourceControl/list/changesets

Из основных явных недоделок можно выделить:

  • отсутствие поддержки опционов
  • отсутствие поддержки стоп-ордеров.

В связи с этим, если есть активные пользователи данного коннектора, буду рад услышать замечаниях о багах, фичах и пожеланиях.

Несколько идей для доработки:

  • Добавить заявки типа следящий стоп (trailing stop)
  • Добавить открытый интерес
  • Добавить поддержку загрузки исторических данных.

У кого еще какие будут варианты?

Добрый День Сергей,

А открытый интерес поддеживается альфа-коннектором? Или эти идеи пока для будущих фич?

Спасибо,

ОИ добавить делов на 10 минут. Последнее время в основном занимаюсь разработкой роботов на заказ. Как будет время обязательно добавлю.

Да, глянул код, похоже надо open_pos_qty добавить в фильтр и сохранить его в свойствах security во время OnProcessSecurities. Попробую.

Добавил открытый интерес для инструментов.

watashi
watashi

Уважаемые коллеги, доброго времени суток!

У меня Alfa/SampleGUI не отображает сделки и мои сделки на демо-версии альфадиректа? Какие таблицы в альфе должны быть для этого открыты? Таблица "мои сделки" открыта.

В AlfaConnector работает candleManager? Пробую создавать candleManager - свечи не приходят.

Спасибо.

Sergey Masyura
Sergey Masyura Автор

watashi: Уважаемые коллеги, доброго времени суток!

У меня Alfa/SampleGUI не отображает сделки и мои сделки на демо-версии альфадиректа? Какие таблицы в альфе должны быть для этого открыты? Таблица "мои сделки" открыта.

В AlfaConnector работает candleManager? Пробую создавать candleManager - свечи не приходят.

Спасибо.

Привет.

Настройка терминала описана на http://stocksharp.com/doc/ в Альфа-Директ -> Настройка терминала.

Если проблемы с примером, надо смотреть логи. Как подключить логи - http://stocksharp.com/doc/ в Альфа-Директ -> Отладка.

По поводу свечек - выложите сюда исходник и логи.

watashi
watashi

sergey.masyura: Настройка терминала описана на http://stocksharp.com/doc/ в Альфа-Директ -> Настройка терминала.

Если проблемы с примером, надо смотреть логи. Как подключить логи - http://stocksharp.com/doc/ в Альфа-Директ -> Отладка.

Вот логи:

Жму "Подключиться":


16:29:26 | Debug | AlfaTrader      | OnConnect()
16:29:26 | Info  | AlfaTrader      | AlfaDirect v.3.5.2.7
16:29:26 | Debug | AlfaTrader      | StartExport()
16:29:26 | Debug | AlfaWrapper     | ReadPortfolios()
16:29:26 | Debug | AlfaTrader      | OnProcessPortfolios()
16:29:26 | Debug | AlfaTrader      | 148397|1000000,28|1000000,28|
16:29:27 | Debug | AlfaWrapper     | ReadSecurities()
16:29:27 | Debug | AlfaTrader      | OnProcessSecurities
16:29:27 | Debug | AlfaTrader      | 291|Лукойл а.о.|04.08.2011|6|LKOH|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
1119|ММВБ Индекс акций|31.12.9999|6|MICEXINDEXCF|INDEX|RUR|0|0|INDEX|
2317|РТС Индекс|31.12.9999|6|RTSI|INDEX|RUR|0|0|INDEX|
2734|Сургутнефтегаз а.о.|04.08.2011|6|SNGS|MICEX_SHR|RUR|0|0|MCX_SHR_NLST|
2862|Ростелеком а.о.|31.12.9999|6|RTKM|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
5859|Газпром а.о.|04.08.2011|6|GAZP|MICEX_SHR|RUR|0|0|MCX_SHR_NLST|
9838|ГМК НорНикель а.о.|04.08.2011|6|GMKN|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
12910|Сбербанк а.о. 3 в.|04.08.2011|6|SBER3|MICEX_SHR|RUR|0|0|MCX_SHR_LST|

16:29:27 | Debug | AlfaTrader      | Security create : 291|Лукойл а.о.|04.08.2011|6|LKOH|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
16:29:27 | Debug | AlfaTrader      | Security create : 1119|ММВБ Индекс акций|31.12.9999|6|MICEXINDEXCF|INDEX|RUR|0|0|INDEX|
16:29:27 | Debug | AlfaTrader      | Security create : 2317|РТС Индекс|31.12.9999|6|RTSI|INDEX|RUR|0|0|INDEX|
16:29:27 | Debug | AlfaTrader      | Security create : 2734|Сургутнефтегаз а.о.|04.08.2011|6|SNGS|MICEX_SHR|RUR|0|0|MCX_SHR_NLST|
16:29:27 | Debug | AlfaTrader      | Security create : 2862|Ростелеком а.о.|31.12.9999|6|RTKM|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
16:29:27 | Debug | AlfaTrader      | Security create : 5859|Газпром а.о.|04.08.2011|6|GAZP|MICEX_SHR|RUR|0|0|MCX_SHR_NLST|
16:29:27 | Debug | AlfaTrader      | Security create : 9838|ГМК НорНикель а.о.|04.08.2011|6|GMKN|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
16:29:27 | Debug | AlfaTrader      | Security create : 12910|Сбербанк а.о. 3 в.|04.08.2011|6|SBER3|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
16:29:27 | Debug | AlfaWrapper     | ReadOrders()
16:29:27 | Debug | AlfaTrader      | OnProcessOrders()
16:29:27 | Debug |                 | 73810718|148397-000|291|M|B|1865,1|1|1|29.07.2011 10:33:50||
73812220|148397-000|291|M|S|1839|1|1|29.07.2011 10:41:43|38476122|

16:29:27 | Debug | AlfaTrader      | create order: id = 73810718
16:29:29 | Debug | AlfaTrader      | update order: id = 73810718
16:29:30 | Debug | AlfaTrader      | create order: id = 73812220
16:29:30 | Debug | AlfaTrader      | update order: id = 73812220
16:29:30 | Debug | AlfaWrapper     | ReadMyTrades()
16:29:30 | Debug | AlfaTrader      | OnProcessMyTrades()
16:29:30 | Debug |                 | 110812747|73810718|148397|291|1846,5|1|B|29.07.2011 10:33:50|
110813833|73812220|148397|291|1849|1|S|29.07.2011 10:41:43|

16:29:30 | Debug | AlfaTrader      | OnProcessPositions()
16:29:30 | Debug |                 | 148397|291|0|LKOH|
148397|331|1000000,28|money|

Жму "Сделки": В лог ничего не выводится. Окно "Сделки" пустое.

sergey.masyura: По поводу свечек - выложите сюда исходник и логи.

Выкладываю. Лог:


16:56:42 | Debug | AlfaTrader      | OnConnect()
16:56:43 | Info  | AlfaTrader      | AlfaDirect v.3.5.2.7
16:56:43 | Debug | AlfaTrader      | StartExport()
16:56:43 | Debug | AlfaWrapper     | ReadPortfolios()
16:56:43 | Debug | AlfaTrader      | OnProcessPortfolios()
16:56:43 | Debug | AlfaTrader      | 148397|1000000,28|1000000,28|

16:56:43 | Debug | AlfaWrapper     | ReadSecurities()
16:56:43 | Debug | AlfaTrader      | OnProcessSecurities
16:56:43 | Debug | AlfaTrader      | 291|Лукойл а.о.|04.08.2011|6|LKOH|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
1119|ММВБ Индекс акций|31.12.9999|6|MICEXINDEXCF|INDEX|RUR|0|0|INDEX|
2317|РТС Индекс|31.12.9999|6|RTSI|INDEX|RUR|0|0|INDEX|
2734|Сургутнефтегаз а.о.|04.08.2011|6|SNGS|MICEX_SHR|RUR|0|0|MCX_SHR_NLST|
2862|Ростелеком а.о.|31.12.9999|6|RTKM|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
5859|Газпром а.о.|04.08.2011|6|GAZP|MICEX_SHR|RUR|0|0|MCX_SHR_NLST|
9838|ГМК НорНикель а.о.|04.08.2011|6|GMKN|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
12910|Сбербанк а.о. 3 в.|04.08.2011|6|SBER3|MICEX_SHR|RUR|0|0|MCX_SHR_LST|

16:56:43 | Debug | AlfaTrader      | Security create : 291|Лукойл а.о.|04.08.2011|6|LKOH|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
16:56:43 | Debug | AlfaTrader      | Security create : 1119|ММВБ Индекс акций|31.12.9999|6|MICEXINDEXCF|INDEX|RUR|0|0|INDEX|
16:56:43 | Debug | AlfaTrader      | Security create : 2317|РТС Индекс|31.12.9999|6|RTSI|INDEX|RUR|0|0|INDEX|
16:56:43 | Debug | AlfaTrader      | Security create : 2734|Сургутнефтегаз а.о.|04.08.2011|6|SNGS|MICEX_SHR|RUR|0|0|MCX_SHR_NLST|
16:56:43 | Debug | AlfaTrader      | Security create : 2862|Ростелеком а.о.|31.12.9999|6|RTKM|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
16:56:44 | Debug | AlfaTrader      | Security create : 5859|Газпром а.о.|04.08.2011|6|GAZP|MICEX_SHR|RUR|0|0|MCX_SHR_NLST|
16:56:44 | Debug | AlfaTrader      | Security create : 9838|ГМК НорНикель а.о.|04.08.2011|6|GMKN|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
16:56:44 | Debug | AlfaTrader      | Security create : 12910|Сбербанк а.о. 3 в.|04.08.2011|6|SBER3|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
16:56:44 | Debug | AlfaWrapper     | ReadOrders()
16:56:44 | Debug | AlfaTrader      | OnProcessOrders()
16:56:44 | Debug |                 | 73810718|148397-000|291|M|B|1865,1|1|1|29.07.2011 10:33:50||
73812220|148397-000|291|M|S|1839|1|1|29.07.2011 10:41:43|38476122|

16:56:44 | Debug | AlfaTrader      | create order: id = 73810718
16:56:46 | Debug | AlfaTrader      | update order: id = 73810718
16:56:46 | Debug | AlfaTrader      | create order: id = 73812220
16:56:46 | Debug | AlfaTrader      | update order: id = 73812220
16:56:46 | Debug | AlfaWrapper     | ReadMyTrades()
16:56:46 | Debug | AlfaTrader      | OnProcessMyTrades()
16:56:46 | Debug |                 | 110812747|73810718|148397|291|1846,5|1|B|29.07.2011 10:33:50|
110813833|73812220|148397|291|1849|1|S|29.07.2011 10:41:43|

16:56:46 | Debug | AlfaTrader      | OnProcessPositions()
16:56:46 | Debug |                 | 148397|291|0|LKOH|
148397|331|1000000,28|money|

Исходник:


namespace SampleGUI
{
	using System;
	using System.Collections.Generic;
	using System.ComponentModel;
	using System.Diagnostics;
	using System.Windows;
	using System.Windows.Media;

	using MessageBox = System.Windows.MessageBox;

	using Ecng.Collections;
	using Ecng.Xaml;

	using StockSharp.BusinessEntities;
	using StockSharp.AlfaDirect;
    using StockSharp.Algo.Candles;

	public partial class MainWindow
	{
		private bool _isConnected;

		public AlfaTrader Trader;

		private readonly SecuritiesWindow _securitiesWindow = new SecuritiesWindow();
		private readonly TradesWindow _tradesWindow = new TradesWindow();
		private readonly MyTradesWindow _myTradesWindow = new MyTradesWindow();
		private readonly OrdersWindow _ordersWindow = new OrdersWindow();
		private readonly PortfoliosWindow _portfoliosWindow = new PortfoliosWindow();
		private readonly PositionsWindow _positionsWindow = new PositionsWindow();

        private CandleManager _candleManager;
        private readonly TimeSpan _timeFrame = TimeSpan.FromMinutes(1);
        private Security _lkoh;

        public MainWindow()
		{
			InitializeComponent();
			MainWindow.Instance = this;

			Logger.Instance().Updated += UpdateLog;
		}

		private static void UpdateLog()
		{
			var entries = Logger.Instance().NewEntries;

			if (entries.Count == 0)
				return;

			foreach (var entry in entries)
			{
				var text = String.Format("{0:HH:mm:ss} | {1,-5} | {2,-15} | {3}",
					DateTime.Now, entry.Level, entry.Source, entry.Message);

                Trace.WriteLine(text);
                Trace.Flush();
            }
		}

		protected override void OnClosing(CancelEventArgs e)
		{
			_ordersWindow.RealClose = _myTradesWindow.RealClose =
			_tradesWindow.RealClose = _securitiesWindow.RealClose =
			_portfoliosWindow.RealClose = _positionsWindow.RealClose = true;
			
			_securitiesWindow.Close();
			_tradesWindow.Close();
			_myTradesWindow.Close();
			_ordersWindow.Close();
			_portfoliosWindow.Close();
			_positionsWindow.Close();

			if (this.Trader != null)
				this.Trader.Dispose();

			base.OnClosing(e);
		}

		public static MainWindow Instance { get; private set; }

		private void Connect_Click(object sender, RoutedEventArgs e)
		{
			try
			{
				if (!_isConnected)
				{
					if (this.Trader == null)
					{
						// создаем шлюз
						this.Trader = new AlfaTrader();

						// инициализируем механизм переподключения (будет автоматически соединяться
						// каждые 10 секунд, если шлюз потеряется связь с сервером)
						this.Trader.ReConnectionSettings.Interval = TimeSpan.FromSeconds(10);
						//this.Trader.ReConnectionSettings.WorkingTime = Exchange.Rts.WorkingTime;
						this.Trader.ReConnectionSettings.ConnectionRestored += () => this.GuiAsync(() =>
						{
							// разблокируем кнопку Экспорт (соединение было восстановлено)
							ChangeConnectStatus(true);
							MessageBox.Show(this, "Соединение восстановлено.");
						});

						// подписываемся на событие успешного соединения
						this.Trader.Connected += () =>
						{
							// возводим флаг, что соединение установлено
							_isConnected = true;

							// разблокируем кнопку Экспорт
							this.GuiAsync(() => ChangeConnectStatus(true));
						};

						// подписываемся на событие разрыва соединения
						this.Trader.ConnectionError += error => this.GuiAsync(() =>
						{
							// заблокируем кнопку Экспорт (так как соединение было потеряно)
							ChangeConnectStatus(false);

							MessageBox.Show(this, error.ToString(), "Ошибка соединения");
						});

						this.Trader.ProcessDataError += error => this.GuiAsync(() => MessageBox.Show(this, error.ToString(), "Ошибка обработки данных"));

						this.Trader.NewSecurities += securities => 
                            {
                                this.GuiAsync(() => _securitiesWindow.AddSecurities(securities));
                                foreach (Security security in securities)
                                    {
                                        if (security.Code == "LKOH") {_lkoh = security; break; };
                                    };
                                if (_lkoh != null)
                                {
                                    this.GuiAsync(() => logTextBox.AppendText("Инструмент " + _lkoh.Code + " найден." + System.Environment.NewLine));
                                }
                            };
						this.Trader.NewMyTrades += trades => this.GuiAsync(() => _myTradesWindow.Trades.AddRange(trades));
                        this.Trader.NewTrades += trades => this.GuiAsync(() => _tradesWindow.Trades.AddRange(trades));
						this.Trader.NewOrders += orders => this.GuiAsync(() => _ordersWindow.Orders.AddRange(orders));
						this.Trader.NewPortfolios += portfolios => _portfoliosWindow.Portfolios.AddRange(portfolios);
						this.Trader.NewPositions += positions => this.GuiAsync(() => _positionsWindow.Positions.AddRange(positions));

						// подписываемся на событие о неудачной регистрации заявок
						this.Trader.OrdersFailed += OrdersFailed;

						// подписываемся на событие о неудачной регистрации стоп-заявок
						this.Trader.StopOrdersFailed += OrdersFailed;

						this.ShowSecurities.IsEnabled = this.ShowTrades.IsEnabled =
						this.ShowMyTrades.IsEnabled = this.ShowOrders.IsEnabled =
						this.ShowPortfolios.IsEnabled = this.ShowPositions.IsEnabled = true;

						this.Trader.Connected += this.Trader.StartExport;

                        _candleManager = new CandleManager(Trader);
                        
                        _candleManager.CandlesFinished += (token, candles) =>
                        {
                            foreach (Candle candle in candles)
                            {
                                this.GuiAsync(() => logTextBox.AppendText(DateTime.Now.ToString("HH:mm:ss fff") + " candle finished "
                                    + candle.Time + " " + candle.OpenPrice + " " + candle.HighPrice + " " + candle.LowPrice + " "
                                    + candle.ClosePrice + System.Environment.NewLine));
                            }
                        };

                        _candleManager.CandlesChanged += (token, candles) =>
                        {
                            foreach (Candle candle in candles)
                            {
                                    this.GuiAsync(() => logTextBox.AppendText(DateTime.Now.ToString("HH:mm:ss fff") + " candle changed "
                                        + candle.Time + " " + candle.OpenPrice + " " + candle.HighPrice + " " + candle.LowPrice + " "
                                        + candle.ClosePrice + System.Environment.NewLine));
                            }

                        };

					}

					this.Trader.Connect();

                    _candleManager.RegisterTimeFrameCandles(_lkoh, _timeFrame);

				}
				else
				{
					this.Trader.Disconnect();
				}
			}
			catch (Exception ex)
			{
				MessageBox.Show(this, ex.Message, "Ошибка");
			}
		}

		private void OrdersFailed(IEnumerable<OrderFail> fails)
		{
			this.GuiAsync(() =>
			{
				foreach (var fail in fails)
					MessageBox.Show(this, fail.Error.ToString(), "Ошибка регистрации заявки");
			});
		}

		private void ChangeConnectStatus(bool isConnected)
		{
			_isConnected = isConnected;
			this.ConnectBtn.Content = isConnected ? "Отключиться" : "Подключиться";
			this.connectionStatus.Content = isConnected ? "Подключен" : "Не подключен";
			connectionStatus.Background = new SolidColorBrush(isConnected ? Colors.LightGreen : Colors.LightPink);
		}

		private void ShowSecurities_Click(object sender, RoutedEventArgs e)
		{
			ShowOrHide(_securitiesWindow);
		}

		private void ShowTrades_Click(object sender, RoutedEventArgs e)
		{
			ShowOrHide(_tradesWindow);
		}

		private void ShowMyTrades_Click(object sender, RoutedEventArgs e)
		{
			ShowOrHide(_myTradesWindow);
		}

		private void ShowOrders_Click(object sender, RoutedEventArgs e)
		{
			ShowOrHide(_ordersWindow);
		}

		private void ShowPortfolios_Click(object sender, RoutedEventArgs e)
		{
			ShowOrHide(_portfoliosWindow);
		}

		private void ShowPositions_Click(object sender, RoutedEventArgs e)
		{
			ShowOrHide(_positionsWindow);
		}

		private static void ShowOrHide(Window window)
		{
			if (window == null)
				throw new ArgumentNullException("window");

			if (window.Visibility == Visibility.Visible)
				window.Hide();
			else
				window.Show();
		}

        private void logTextBox_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
        {
            logTextBox.ScrollToEnd();
        }
	}
}

Спасибо!

Sergey Masyura
Sergey Masyura Автор

watashi:

sergey.masyura: Настройка терминала описана на http://stocksharp.com/doc/ в Альфа-Директ -> Настройка терминала.

Если проблемы с примером, надо смотреть логи. Как подключить логи - http://stocksharp.com/doc/ в Альфа-Директ -> Отладка.

Вот логи:

...

Спасибо!

Спасибо за описание. Проблема воспроизводится.

http://stocksharp.codeplex.com/workitem/483

Как будет время поправлю.

Sergey Masyura
Sergey Masyura Автор

sergey.masyura:

watashi:

sergey.masyura: Настройка терминала описана на http://stocksharp.com/doc/ в Альфа-Директ -> Настройка терминала.

Если проблемы с примером, надо смотреть логи. Как подключить логи - http://stocksharp.com/doc/ в Альфа-Директ -> Отладка.

Вот логи:

...

Спасибо!

Спасибо за описание. Проблема воспроизводится.

http://stocksharp.codeplex.com/workitem/483

Как будет время поправлю.

Исправлено. Проверьте, пожалуйста.

watashi
watashi

sergey.masyura: Исправлено. Проверьте, пожалуйста.

Проверил. По-прежнему не работает (в окне Сделки сделок нет).

watashi
watashi

Еще, когда нажимаю "Отключиться" такая ошибка возникает:


---------------------------
Ошибка соединения
---------------------------
System.TimeoutException: Соединение не было разорвано в отведенный отрезок времени.
---------------------------
ОК   
---------------------------

Вот логи:


12:13:03 | Debug | AlfaTrader      | OnConnect()
12:13:03 | Info  | AlfaTrader      | AlfaDirect v.3.5.2.7
12:13:03 | Debug | AlfaTrader      | StartExport()
12:13:03 | Debug | AlfaWrapper     | ReadPortfolios()
12:13:03 | Debug | AlfaTrader      | OnProcessPortfolios()
12:13:03 | Debug | AlfaTrader      | 148397|1000000,28|1000000,28|

12:13:04 | Debug | AlfaWrapper     | ReadSecurities()
12:13:04 | Debug | AlfaTrader      | OnProcessSecurities
12:13:04 | Debug | AlfaTrader      | 291|Лукойл а.о.|05.08.2011|6|LKOH|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
1119|ММВБ Индекс акций|31.12.9999|6|MICEXINDEXCF|INDEX|RUR|0|0|INDEX|
2317|РТС Индекс|31.12.9999|6|RTSI|INDEX|RUR|0|0|INDEX|
2734|Сургутнефтегаз а.о.|05.08.2011|6|SNGS|MICEX_SHR|RUR|0|0|MCX_SHR_NLST|
2862|Ростелеком а.о.|31.12.9999|6|RTKM|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
5859|Газпром а.о.|05.08.2011|6|GAZP|MICEX_SHR|RUR|0|0|MCX_SHR_NLST|
9838|ГМК НорНикель а.о.|05.08.2011|6|GMKN|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
12910|Сбербанк а.о. 3 в.|05.08.2011|6|SBER3|MICEX_SHR|RUR|0|0|MCX_SHR_LST|

12:13:04 | Debug | AlfaTrader      | Security create : 291|Лукойл а.о.|05.08.2011|6|LKOH|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
12:13:04 | Debug | AlfaTrader      | Security create : 1119|ММВБ Индекс акций|31.12.9999|6|MICEXINDEXCF|INDEX|RUR|0|0|INDEX|
12:13:04 | Debug | AlfaTrader      | Security create : 2317|РТС Индекс|31.12.9999|6|RTSI|INDEX|RUR|0|0|INDEX|
12:13:04 | Debug | AlfaTrader      | Security create : 2734|Сургутнефтегаз а.о.|05.08.2011|6|SNGS|MICEX_SHR|RUR|0|0|MCX_SHR_NLST|
12:13:04 | Debug | AlfaTrader      | Security create : 2862|Ростелеком а.о.|31.12.9999|6|RTKM|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
12:13:04 | Debug | AlfaTrader      | Security create : 5859|Газпром а.о.|05.08.2011|6|GAZP|MICEX_SHR|RUR|0|0|MCX_SHR_NLST|
12:13:04 | Debug | AlfaTrader      | Security create : 9838|ГМК НорНикель а.о.|05.08.2011|6|GMKN|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
12:13:04 | Debug | AlfaTrader      | Security create : 12910|Сбербанк а.о. 3 в.|05.08.2011|6|SBER3|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
12:13:04 | Debug | AlfaWrapper     | ReadOrders()
12:13:04 | Debug | AlfaWrapper     | ReadMyTrades()
12:13:04 | Debug | AlfaTrader      | OnProcessPositions()
12:13:04 | Debug |                 | 148397|331|1000000,28|money|

12:13:38 | Debug | AlfaTrader      | OnDisconnect()

Sergey Masyura
Sergey Masyura Автор

watashi: Еще, когда нажимаю "Отключиться" такая ошибка возникает:


Ошибка соединения

System.TimeoutException: Соединение не было разорвано в отведенный отрезок времени.

ОК

> 
> Вот логи:
> 
> ```plain

12:13:03 | Debug | AlfaTrader      | OnConnect()
12:13:03 | Info  | AlfaTrader      | AlfaDirect v.3.5.2.7
12:13:03 | Debug | AlfaTrader      | StartExport()
12:13:03 | Debug | AlfaWrapper     | ReadPortfolios()
12:13:03 | Debug | AlfaTrader      | OnProcessPortfolios()
12:13:03 | Debug | AlfaTrader      | 148397|1000000,28|1000000,28|

12:13:04 | Debug | AlfaWrapper     | ReadSecurities()
12:13:04 | Debug | AlfaTrader      | OnProcessSecurities
12:13:04 | Debug | AlfaTrader      | 291|Лукойл а.о.|05.08.2011|6|LKOH|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
1119|ММВБ Индекс акций|31.12.9999|6|MICEXINDEXCF|INDEX|RUR|0|0|INDEX|
2317|РТС Индекс|31.12.9999|6|RTSI|INDEX|RUR|0|0|INDEX|
2734|Сургутнефтегаз а.о.|05.08.2011|6|SNGS|MICEX_SHR|RUR|0|0|MCX_SHR_NLST|
2862|Ростелеком а.о.|31.12.9999|6|RTKM|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
5859|Газпром а.о.|05.08.2011|6|GAZP|MICEX_SHR|RUR|0|0|MCX_SHR_NLST|
9838|ГМК НорНикель а.о.|05.08.2011|6|GMKN|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
12910|Сбербанк а.о. 3 в.|05.08.2011|6|SBER3|MICEX_SHR|RUR|0|0|MCX_SHR_LST|

12:13:04 | Debug | AlfaTrader      | Security create : 291|Лукойл а.о.|05.08.2011|6|LKOH|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
12:13:04 | Debug | AlfaTrader      | Security create : 1119|ММВБ Индекс акций|31.12.9999|6|MICEXINDEXCF|INDEX|RUR|0|0|INDEX|
12:13:04 | Debug | AlfaTrader      | Security create : 2317|РТС Индекс|31.12.9999|6|RTSI|INDEX|RUR|0|0|INDEX|
12:13:04 | Debug | AlfaTrader      | Security create : 2734|Сургутнефтегаз а.о.|05.08.2011|6|SNGS|MICEX_SHR|RUR|0|0|MCX_SHR_NLST|
12:13:04 | Debug | AlfaTrader      | Security create : 2862|Ростелеком а.о.|31.12.9999|6|RTKM|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
12:13:04 | Debug | AlfaTrader      | Security create : 5859|Газпром а.о.|05.08.2011|6|GAZP|MICEX_SHR|RUR|0|0|MCX_SHR_NLST|
12:13:04 | Debug | AlfaTrader      | Security create : 9838|ГМК НорНикель а.о.|05.08.2011|6|GMKN|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
12:13:04 | Debug | AlfaTrader      | Security create : 12910|Сбербанк а.о. 3 в.|05.08.2011|6|SBER3|MICEX_SHR|RUR|0|0|MCX_SHR_LST|
12:13:04 | Debug | AlfaWrapper     | ReadOrders()
12:13:04 | Debug | AlfaWrapper     | ReadMyTrades()
12:13:04 | Debug | AlfaTrader      | OnProcessPositions()
12:13:04 | Debug |                 | 148397|331|1000000,28|money|

12:13:38 | Debug | AlfaTrader      | OnDisconnect()

Судя по логам у Вас и в самом терминале на сегодня не было сделок.

  1. Проверьте что в терминале в окне сделок они есть.
  2. Провертье что обновили библиотеку Stocksharp.Alfadirect.dll
watashi
watashi

sergey.masyura:

  1. Проверьте что в терминале в окне сделок они есть.

В таблице сделок есть сделки по Лукойлу.

Uploaded with ImageShack.us

sergey.masyura: 2. Провертье что обновили библиотеку Stocksharp.Alfadirect.dll

Скачал эту версию "7954 by masyura Jul 30 at 12:29 AM - [Альфа] Исправлено получение Моих Сделок" на http://stocksharp.codeplex.com/ Открыл stocksharp-7954\Connectors\Alfa\Alfa.sln. Скомпилировал. Заменил файл в своем проекте. Удалил и заново добавил в References.

Не работает.

Sergey Masyura
Sergey Masyura Автор

watashi: Скачал эту версию "7954 by masyura Jul 30 at 12:29 AM - [Альфа] Исправлено получение Моих Сделок" на http://stocksharp.codeplex.com/ Открыл stocksharp-7954\Connectors\Alfa\Alfa.sln. Скомпилировал. Заменил файл в своем проекте. Удалил и заново добавил в References.

Не работает.

Это демо-счет в Альфе?

watashi
watashi

sergey.masyura: Это демо-счет в Альфе?

Ну да, демо-счет. Я об этом в первом же посте написал.

Sergey Masyura
Sergey Masyura Автор

watashi:

sergey.masyura: Это демо-счет в Альфе?

Ну да, демо-счет. Я об этом в первом же посте написал.

На демо и счете и ММВБ пока нет возможности проверить, но на рабочем логине и фортс "мои сделки" стали отображаться.

Кто-нибудь еще может проверить на последней версии?

watashi
watashi

sergey.masyura: На демо и счете и ММВБ пока нет возможности проверить, но на рабочем логине и фортс "мои сделки" стали отображаться.

Кто-нибудь еще может проверить на последней версии?

Хочу уточнить как должен работать пример Samples\AlfaDirect\SampleGUI:

  1. В альфе должна быть открыта непустая таблица Сделки.
  2. Альфа должна быть настроена в соответствии с документацией S#.
  3. Запускаем SampleGUI. Жмем "Подключиться".
  4. Жмем "Сделки...". В открывшемся окне должны отображаться сделки из таблицы Сделки в Альфе.

Правильно?

PS: Я правильно понимаю, что свечи в candleManager'е формируются на основе этих данных о сделках?

watashi
watashi

sergey.masyura:

watashi:

sergey.masyura: Это демо-счет в Альфе?

Ну да, демо-счет. Я об этом в первом же посте написал.

На демо и счете и ММВБ пока нет возможности проверить, но на рабочем логине и фортс "мои сделки" стали отображаться.

Кто-нибудь еще может проверить на последней версии?

"Мои сделки" на реале работает. Таблица "Сделки" на реале по-прежнему пустая.

Sergey Masyura
Sergey Masyura Автор

watashi:

sergey.masyura: На демо и счете и ММВБ пока нет возможности проверить, но на рабочем логине и фортс "мои сделки" стали отображаться.

Кто-нибудь еще может проверить на последней версии?

Хочу уточнить как должен работать пример Samples\AlfaDirect\SampleGUI:

  1. В альфе должна быть открыта непустая таблица Сделки.
  2. Альфа должна быть настроена в соответствии с документацией S#.
  3. Запускаем SampleGUI. Жмем "Подключиться".
  4. Жмем "Сделки...". В открывшемся окне должны отображаться сделки из таблицы Сделки в Альфе.

Правильно?

PS: Я правильно понимаю, что свечи в candleManager'е формируются на основе этих данных о сделках?

Спасибо за прояснения. Фикс был сделан именно для Моих Сделок.

Окно сделки - пустое. Это недоработка в примере. Потому что нигде не подписываются на получения сделок об инструментах. Следует доработать пример, спасибо за замечание.

CandleManager строит свечки по сделкам, все верно.

Sergey Masyura
Sergey Masyura Автор

watashi:

sergey.masyura:

watashi:

sergey.masyura: Это демо-счет в Альфе?

Ну да, демо-счет. Я об этом в первом же посте написал.

На демо и счете и ММВБ пока нет возможности проверить, но на рабочем логине и фортс "мои сделки" стали отображаться.

Кто-нибудь еще может проверить на последней версии?

"Мои сделки" на реале работает. Таблица "Сделки" на реале по-прежнему пустая.

Недоработка примера - http://stocksharp.codeplex.com/workitem/490

watashi
watashi

sergey.masyura: Спасибо за прояснения. Фикс был сделан именно для Моих Сделок.

Окно сделки - пустое. Это недоработка в примере. Потому что нигде не подписываются на получения сделок об инструментах. Следует доработать пример, спасибо за замечание.

Пример уже исправлен? Где можно исправленный посмотреть?

Разве вот эта строчка не подписывает на получение сделок?

this.Trader.NewTrades += trades => this.GuiAsync(() => _tradesWindow.Trades.AddRange(trades));
Sergey Masyura
Sergey Masyura Автор

watashi:

sergey.masyura: Спасибо за прояснения. Фикс был сделан именно для Моих Сделок.

Окно сделки - пустое. Это недоработка в примере. Потому что нигде не подписываются на получения сделок об инструментах. Следует доработать пример, спасибо за замечание.

Пример уже исправлен? Где можно исправленный посмотреть?

Разве вот эта строчка не подписывает на получение сделок?

this.Trader.NewTrades += trades => this.GuiAsync(() => _tradesWindow.Trades.AddRange(trades));


Нет, не подписывает. Это всего лишь добавление своего обработчика на событие. Запуск экспорта сделок происходит после вызова RegisterTrades.

Пример исправлю как дойдет до него очередь в моих планах.
watashi
watashi

sergey.masyura: Пример исправлю как дойдет до него очередь в моих планах.

А можно в двух словах, что там нужно добавить? Очень срочно надо. )))

Sergey Masyura
Sergey Masyura Автор

watashi:

sergey.masyura: Пример исправлю как дойдет до него очередь в моих планах.

А можно в двух словах, что там нужно добавить? Очень срочно надо. )))

Сделал. В двух словах явно бы не получилось описать. Из окна Инструменты сделки открываются также как и стаканы.

watashi
watashi

sergey.masyura: Сделал. В двух словах явно бы не получилось описать. Из окна Инструменты сделки открываются также как и стаканы.

Спасибо. Все работает. 👍

freewayrider
freewayrider

иногда появляется блуждающая ошибка

Sergey Masyura
Sergey Masyura Автор

freewayrider: иногда появляется блуждающая ошибка

У Вас старый код. В последней версии строчки закомментированы.


                        if (details[9].Length > 0)
                        {
                            // Read transaction id from the comments
                            // TODO: Fix how to update orders from the terminal and preserve same tr. id.
                            //order.TransactionId = details[9].To<long>();
                        }

Для багов есть открытый Issue Tracker - http://stocksharp.codeplex.com/workitem/list/advanced . Так что просьба репортить туда.

Doctor
Doctor

Прикрепил исправленные файлы на основе 9308. Может пригодится кому. Поправил AlfaTrader.cs, AlfaWrapper.cs и SecuritiesWindow.xaml (из примера SampleGUI). Вроде ОИ получается при создании списка. Что не совсем понятно:

  1. Где его нужно правильно сохранить? В Smarte есть поле ExtensionInfo["SecurityOpenedPositionsPrice"], а список полей для Альфы не нашел. Накопал это поле на форуме.
  2. SampleGUI похоже не подписывается на обновление Securities, еще нужно проверить ветку кода с обновлением ОИ - пока разбираюсь с примером.
Mikhail Sukhov
Mikhail Sukhov

Doctor: Прикрепил исправленные файлы на основе 9308. Может пригодится кому. Поправил AlfaTrader.cs, AlfaWrapper.cs и SecuritiesWindow.xaml (из примера SampleGUI). Вроде ОИ получается при создании списка. Что не совсем понятно:

  1. Где его нужно правильно сохранить? В Smarte есть поле ExtensionInfo["SecurityOpenedPositionsPrice"], а список полей для Альфы не нашел. Накопал это поле на форуме.
  2. SampleGUI похоже не подписывается на обновление Securities, еще нужно проверить ветку кода с обновлением ОИ - пока разбираюсь с примером.

Создайте логин на коде плексе и я дам доступ на запись. Зачем сюда аттачи складывать, когда можно сразу в репозитарий залить. Там мы сможет наглядно увидеть изменения.

  1. см. AlfaExtensions
  2. Гуд.
bonzero
bonzero

Вчера слил с codeplex репозитарий. Открыл в Connectors/Alfa.sln и собрал AlfaDirect. Все собралось. Затем AlfaTest не собрался:

------ Build started: Project: AlfaDirect, Configuration: Release Any CPU ------ AlfaDirect -> C:\Temp\Connectors\Alfa\Connector\bin\Release\StockSharp.AlfaDirect.dll ------ Build started: Project: AlfaTest, Configuration: Release x86 ------ C:\Temp\Connectors\Alfa\Samples\AlfaTest\Forms\TestForm.cs(16,23): error CS0535: 'StockSharp.Connectors.Alfa.Forms.TestForm' does not implement interface member 'StockSharp.Algo.Logging.ILogSource.Id' C:\Temp\Connectors\Alfa\Samples\AlfaTest\Forms\TestForm.Designer.cs(3,16): (Related location) C:\Temp\Connectors\Alfa\Samples\AlfaTest\Forms\TestForm.cs(16,23): error CS0738: 'StockSharp.Connectors.Alfa.Forms.TestForm' does not implement interface member 'StockSharp.Algo.Logging.ILogSource.Parent'. 'System.Windows.Forms.Control.Parent' cannot implement 'StockSharp.Algo.Logging.ILogSource.Parent' because it does not have the matching return type of 'StockSharp.Algo.Logging.ILogSource'. C:\Temp\Connectors\Alfa\Samples\AlfaTest\Forms\TestForm.Designer.cs(3,16): (Related location) C:\Temp\Connectors\Alfa\Samples\AlfaTest\Forms\TestForm.cs(16,23): error CS0535: 'StockSharp.Connectors.Alfa.Forms.TestForm' does not implement interface member 'StockSharp.Algo.Logging.ILogSource.Childs' C:\Temp\Connectors\Alfa\Samples\AlfaTest\Forms\TestForm.Designer.cs(3,16): (Related location)

Compile complete -- 3 errors, 0 warnings ========== Build: 1 succeeded or up-to-date, 1 failed, 0 skipped ==========

Может я что-то не так делаю? Как правильно собрать?

Alexander
Alexander

Вчера слил с codeplex репозитарий. Открыл в Connectors/Alfa.sln и собрал AlfaDirect. Все собралось. Затем AlfaTest не собрался:

------ Build started: Project: AlfaDirect, Configuration: Release Any CPU ------ AlfaDirect -> C:\Temp\Connectors\Alfa\Connector\bin\Release\StockSharp.AlfaDirect.dll ------ Build started: Project: AlfaTest, Configuration: Release x86 ------ C:\Temp\Connectors\Alfa\Samples\AlfaTest\Forms\TestForm.cs(16,23): error CS0535: 'StockSharp.Connectors.Alfa.Forms.TestForm' does not implement interface member 'StockSharp.Algo.Logging.ILogSource.Id' C:\Temp\Connectors\Alfa\Samples\AlfaTest\Forms\TestForm.Designer.cs(3,16): (Related location) C:\Temp\Connectors\Alfa\Samples\AlfaTest\Forms\TestForm.cs(16,23): error CS0738: 'StockSharp.Connectors.Alfa.Forms.TestForm' does not implement interface member 'StockSharp.Algo.Logging.ILogSource.Parent'. 'System.Windows.Forms.Control.Parent' cannot implement 'StockSharp.Algo.Logging.ILogSource.Parent' because it does not have the matching return type of 'StockSharp.Algo.Logging.ILogSource'. C:\Temp\Connectors\Alfa\Samples\AlfaTest\Forms\TestForm.Designer.cs(3,16): (Related location) C:\Temp\Connectors\Alfa\Samples\AlfaTest\Forms\TestForm.cs(16,23): error CS0535: 'StockSharp.Connectors.Alfa.Forms.TestForm' does not implement interface member 'StockSharp.Algo.Logging.ILogSource.Childs' C:\Temp\Connectors\Alfa\Samples\AlfaTest\Forms\TestForm.Designer.cs(3,16): (Related location)

Compile complete -- 3 errors, 0 warnings ========== Build: 1 succeeded or up-to-date, 1 failed, 0 skipped ==========

Может я что-то не так делаю? Как правильно собрать?

Пофиксил

bonzero
bonzero

В SampleGUI для AlfaDirect:

  • "Отключиться" кнопка не работает
  • В "Инструменты" одни NULL в полях Bid, Ask, последняя цена и т.д.
Sergey Masyura
Sergey Masyura Автор

bonzero: В SampleGUI для AlfaDirect:

  • "Отключиться" кнопка не работает
  • В "Инструменты" одни NULL в полях Bid, Ask, последняя цена и т.д.

Окей. Спасибо.

http://stocksharp.codeplex.com/workitem/585

Alexander
Alexander

bonzero:

  • В "Инструменты" одни NULL в полях Bid, Ask, последняя цена и т.д.

Произошло это из-за моего изменения. Теперь по умолчанию лучший бид, аск и последняя цена = NULL.

Соответственно в логгер сделал вывод "NULL". Если есть идея как вывести покрасивше - поправлю :)

Sergey Masyura
Sergey Masyura Автор

sergey.masyura:

bonzero: В SampleGUI для AlfaDirect:

  • "Отключиться" кнопка не работает
  • В "Инструменты" одни NULL в полях Bid, Ask, последняя цена и т.д.

Окей. Спасибо.

http://stocksharp.codeplex.com/workitem/585

Resolved with changeset 10068.

Исправлено на codeplex (пример и коннектор).

Подключаться можно как с уже запущенным терминалом, так и без терминала, указав у трейдера свойства Login и Password - терминал запустится и подключится автоматически.

bonzero
bonzero

В AlfaTest.exe ввожу логин и пароль и всегда получаю ошибку:

"Ошибка авторизации! Вероятно, Вы ошиблись при вводе имени пользователя или пароля. Повторите попытку максимально внимательно..."

Ввожу в терминале - все проходит.

Update: Также пропало окошко с выводом информации.

Sergey Masyura
Sergey Masyura Автор

bonzero: В AlfaTest.exe ввожу логин и пароль и всегда получаю ошибку:

"Ошибка авторизации! Вероятно, Вы ошиблись при вводе имени пользователя или пароля. Повторите попытку максимально внимательно..."

Ввожу в терминале - все проходит.

Update: Также пропало окошко с выводом информации.

Ошибку авторизации поправил - http://stocksharp.codeplex.com/SourceControl/changeset/changes/10352

Окно пропало по задумке - на нем недобно что-либо читать, скролировать. Логи идут в окно Output у Visual Studio.

bonzero
bonzero

Ошибку авторизации поправил - http://stocksharp.codeplex.com/SourceControl/changeset/changes/10352

Обновился. Логин и пароль как раз ввожу. Но всегда ошибка авторизации. Через терминал все проходит. А через AlfaTest - нет. Через Alpha SampleGUI все тоже проходит.

Sergey Masyura
Sergey Masyura Автор

Ошибку авторизации поправил - http://stocksharp.codeplex.com/SourceControl/changeset/changes/10352

Обновился. Логин и пароль как раз ввожу. Но всегда ошибка авторизации. Через терминал все проходит. А через AlfaTest - нет. Через Alpha SampleGUI все тоже проходит.

В AlfaTest для автоматической авторизации надо еще чекбокс включить. А вобще самое простое подключаться в уже запущенному терминалу.

bonzero
bonzero

Спасибо.

Запустил AlfaTest.ext через Debug. Соединился, нажал "Start Export". Через 3 секунды получил:

AlfaTest.vshost.exe Information: 0 : TestForm OnNewSecurities()
A first chance exception of type 'System.NullReferenceException' occurred in AlfaTest.exe
AlfaTest.exe!StockSharp.Connectors.Alfa.PrintUtils.Log(StockSharp.BusinessEntities.Security sec = {StockSharp.BusinessEntities.Security}) Line 19 + 0x2c bytes	C#
AlfaTest.exe!StockSharp.Connectors.Alfa.Forms.TestForm.OnNewSecurities(System.Collections.Generic.IEnumerable<StockSharp.BusinessEntities.Security> securities = {StockSharp.BusinessEntities.Security[3]}) Line 513 + 0x8 bytes	C#

Sergey Masyura
Sergey Masyura Автор

bonzero: Спасибо.

Запустил AlfaTest.ext через Debug. Соединился, нажал "Start Export". Через 3 секунды получил:

AlfaTest.vshost.exe Information: 0 : TestForm OnNewSecurities() A first chance exception of type 'System.NullReferenceException' occurred in AlfaTest.exe

> 
> ```plain
AlfaTest.exe!StockSharp.Connectors.Alfa.PrintUtils.Log(StockSharp.BusinessEntities.Security sec = {StockSharp.BusinessEntities.Security}) Line 19 + 0x2c bytes	C#
AlfaTest.exe!StockSharp.Connectors.Alfa.Forms.TestForm.OnNewSecurities(System.Collections.Generic.IEnumerable<StockSharp.BusinessEntities.Security> securities = {StockSharp.BusinessEntities.Security[3]}) Line 513 + 0x8 bytes	C#

Начиная с последних версий Stock# некоторые поля в инструментах теперь null, если не инициализированы. Это ошибка примера, если есть желание - можете исправить.

bonzero
bonzero

Если бы я знал еще как исправить...🤨

Еще один баг. Или может только у меня так. AlfaDirect SampleGUI. Запускаю, подключаюсь, жму "Портфели". И в "Портфели" "Текущий размер" всегда одна и таже цифра. Причем в терминале Альфа-Директ перестает обновляться информация по портфелю. ;(

Update: Перезапустил AlfaDirect, теперь в терминале стало все обновляться, странно.

А "Текущий размер" в "Портфели" так и должен быть статичным? Не должен меняться? Ткните пожалуйста где почитать как получать "текущий размер портфеля".

Sergey Masyura
Sergey Masyura Автор

bonzero: Если бы я знал еще как исправить...🤨

Еще один баг. Или может только у меня так. AlfaDirect SampleGUI. Запускаю, подключаюсь, жму "Портфели". И в "Портфели" "Текущий размер" всегда одна и таже цифра. Причем в терминале Альфа-Директ перестает обновляться информация по портфелю. ;(

Update: Перезапустил AlfaDirect, теперь в терминале стало все обновляться, странно.

А "Текущий размер" в "Портфели" так и должен быть статичным? Не должен меняться? Ткните пожалуйста где почитать как получать "текущий размер портфеля".

Чтобы информация по портфелю обновлялась, необходимо вызвать метод RegisterPortfolio. Возможно, в примере этого не делается. Это всего лишь пример и в нем нет задачи использовать все, что только можно. Только основные базовые вещи. Как будет время, посмотрю.

bonzero
bonzero

А ГО по портфелю как получить? Leverage показывает 0, а портфеле фьючерсы и опционы. Leverage не то конечно как я понимаю, но что отвечает за ГО по портфелю?

А Security.LastTrade.Price я так понимаю не для получения последней цены? Потому что у меня Security.LastTrade всегда null. RegisterQuotes и RegisterSecuritiesChanged делаю.

Sergey Masyura
Sergey Masyura Автор

bonzero: А ГО по портфелю как получить? Leverage показывает 0, а портфеле фьючерсы и опционы. Leverage не то конечно как я понимаю, но что отвечает за ГО по портфелю?

А Security.LastTrade.Price я так понимаю не для получения последней цены? Потому что у меня Security.LastTrade всегда null. RegisterQuotes и RegisterSecuritiesChanged делаю.

Открываем stocksharpconnectors\Connectors\Alfa\Connector\AlfaWrapper.cs, смотрим какая таблица и поля используются

	private const string _portfolioTable = "acc_bal"; // БАЛАНС ПОЗИЦИЙ ПО СЧЕТАМ
	private const string _portfolioFields = "treaty, forward_bal, money";

Далее открываем доку из sdk альфы

ТАБЛИЦА «ACC_BAL» - АГРЕГИРОВАННЫЙ БАЛАНС ПОЗИЦИЙ ПО СЧЕТАМ Ключевое поле: treaty Поле Тип Описание treaty Integer Счет. acc_code String Портфель. forward_bal Float Баланс. money Float Деньги. deposit Float Гарантийное обеспечение срочного рынка. var_margin Float Вариационная маржа дня. long_bal Float Баланс длинных позиций на споте. short_bal Float Баланс коротких позиций на споте. call Float Требование. margin Float Маржа ФСФР. option_pl Float Финансовый результат опционов. profit_bal Float Нереализованный прибыль/убыток. daily_pl Float Прибыль/убыток дня. rel_pl Float %Прибыль/убыток дня.

Требуется вот это поле добавить? deposit Float Гарантийное обеспечение срочного рынка.

Если требуется, давай добавлю. Делов немного.

Sergey Masyura
Sergey Masyura Автор

bonzero: А ГО по портфелю как получить? Leverage показывает 0, а портфеле фьючерсы и опционы. Leverage не то конечно как я понимаю, но что отвечает за ГО по портфелю?

А Security.LastTrade.Price я так понимаю не для получения последней цены? Потому что у меня Security.LastTrade всегда null. RegisterQuotes и RegisterSecuritiesChanged делаю.

Верно, LastTrade не заполняется в Альфа-коннекторе. Надо доделать.

http://stocksharp.codeplex.com/workitem/630

Sergey Masyura
Sergey Masyura Автор

sergey.masyura:

bonzero: А ГО по портфелю как получить? Leverage показывает 0, а портфеле фьючерсы и опционы. Leverage не то конечно как я понимаю, но что отвечает за ГО по портфелю?

А Security.LastTrade.Price я так понимаю не для получения последней цены? Потому что у меня Security.LastTrade всегда null. RegisterQuotes и RegisterSecuritiesChanged делаю.

Верно, LastTrade не заполняется в Альфа-коннекторе. Надо доделать.

http://stocksharp.codeplex.com/workitem/630

Исправлено на Codeplex.

http://stocksharp.codeplex.com/SourceControl/changeset/changes/11339

bonzero
bonzero

Сергей, спасибо за детальное объяснение. Да, хорошо бы deposit добавить. Так как ГО по портфелю отслеживать требуется.

Спасибо за будущий фикс с LastTrade.

Кстати, а есть в планах создать коннектор на основе серверного API от Альфа-Директ, вместо интерфейса через COM? Например терминал Euphoria для альфы использует такое API (http://ni-soft.ru) . Но тогда если надо будет запустить одновременно и робота и терминал, то потребуется дополнительный логин получить.

Правда я списывался со службой поддержки, мне сказали, что они документацию по этому API не предоставляют сейчас. Потому что грядет его смена (уже как 2 года грядет) и будет также выпущена новая версия терминала Альфа-Директ.

Да и я так понимаю Альфа не так популярна как Quick, чтобы много сил тратить на этот коннектор.

Sergey Masyura
Sergey Masyura Автор

bonzero: Сергей, спасибо за детальное объяснение. Да, хорошо бы deposit добавить. Так как ГО по портфелю отслеживать требуется.

Спасибо за будущий фикс с LastTrade.

Кстати, а есть в планах создать коннектор на основе серверного API от Альфа-Директ, вместо интерфейса через COM? Например терминал Euphoria для альфы использует такое API (http://ni-soft.ru) . Но тогда если надо будет запустить одновременно и робота и терминал, то потребуется дополнительный логин получить.

Правда я списывался со службой поддержки, мне сказали, что они документацию по этому API не предоставляют сейчас. Потому что грядет его смена (уже как 2 года грядет) и будет также выпущена новая версия терминала Альфа-Директ.

Да и я так понимаю Альфа не так популярна как Quick, чтобы много сил тратить на этот коннектор.

По поводу ГО создал баг http://stocksharp.codeplex.com/workitem/632

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

Альфа мне нравится намного больше, чем квик. Так что на любителя. По поводу коннектора, если будет фидбэк от пользователей по поводу багов/фичей, будут и фиксы (по мере наличия времени).

Alexander
Alexander

Альфа коннектор, в отличие от Квика, открыт. И доступен всем желающим для исправлений и дополнений 😎

Teddy
Teddy

В S#4.04 при запуске SampleAlfaCandles вылетает следующее: ![](http://savepic.net/2098034m.jpg

Sergey Masyura
Sergey Masyura Автор

Teddy: В S#4.04 при запуске SampleAlfaCandles вылетает следующее: ![](http://savepic.net/2098034m.jpg

Спасибо, проверю.

Sergey Masyura
Sergey Masyura Автор

sergey.masyura:

Teddy: В S#4.04 при запуске SampleAlfaCandles вылетает следующее: ![](http://savepic.net/2098034m.jpg

Спасибо, проверю.

В 4.0.5 исправлено и работает.

Teddy
Teddy

ничего не изменилось(( и ещё не работает выбор времени начала и конца построения свечек на форме.

Sergey Masyura
Sergey Masyura Автор

Teddy: ничего не изменилось(( и ещё не работает выбор времени начала и конца построения свечек на форме.

Не работает каким образом?

PS: проверил на двух ноутах - работают и свечки и выбор даты. Есть сдвиг с москвой по времени?

Teddy
Teddy

нет сдвига

Teddy
Teddy

терминал запускается ,выбираю инструмент и таймфрейм. нажимаю график и всё.вылетает этот эксепшен и причём подвисает терминал . в логе кстати свечки записываються

Sergey Masyura
Sergey Masyura Автор

Teddy: терминал запускается ,выбираю инструмент и таймфрейм. нажимаю график и всё.вылетает этот эксепшен и причём подвисает терминал . в логе кстати свечки записываються

Возможности воспроизвести у меня нет. Так что можете провести debug самостоятельно. К тому же, если работает получение свечек - зачем смотреть пример?

Teddy
Teddy

всё таки удалось запустить пример со свечками,удалив из файла chartwindow.xaml из строчки Title="ChartWindow" Height="480" Width="640" Icon="/SampleAlfaCandles;component/stocksharp.ico" Topmost="False" WindowStartupLocation="CenterScreen"> вот эту запись --Icon="/SampleAlfaCandles;component/stocksharp.ico" Но по прежнему не работает выбор начала и конца построения свечек.причём выбор даты работает. Выявилась ещё одна проблема. свечки строятся не по таймфрейму который выбирается,а в зависимости от выбранного интервала истории. Так например выбираю минутки ,интервал оставляю по дефолту,а строятся почему то часовики. наименьший таймфрейм который выводится 15мин ,в независимости от того что выбраны минутки.

Sergey Masyura
Sergey Masyura
Sergey Masyura Автор

Teddy: всё таки удалось запустить пример со свечками,удалив из файла chartwindow.xaml из строчки Title="ChartWindow" Height="480" Width="640" Icon="/SampleAlfaCandles;component/stocksharp.ico" Topmost="False" WindowStartupLocation="CenterScreen"> вот эту запись --Icon="/SampleAlfaCandles;component/stocksharp.ico" Но по прежнему не работает выбор начала и конца построения свечек.причём выбор даты работает. Выявилась ещё одна проблема. свечки строятся не по таймфрейму который выбирается,а в зависимости от выбранного интервала истории. Так например выбираю минутки ,интервал оставляю по дефолту,а строятся почему то часовики. наименьший таймфрейм который выводится 15мин ,в независимости от того что выбраны минутки.

Спасибо по поводу иконки. Как оказалось, это работает не на всех машинах.

По поводу свечек - возможно am chart их так группирует, посмотрю в чем причина.

Для референса - http://stocksharp.codeplex.com/workitem/692

Самунджян Артем
Самунджян Артем

Не получаеться выставить заявку в примере SampleGui Нормально подключаюсь получаю все инструменты и так далее. Но пример не отправялет завку в альфу,пробовал то же самое вручную в своём терминале ,всё нормально. Чем это может быть вызвано? При этом никакой ошибки проект не отлавливает....

Sergey Masyura
Sergey Masyura Автор

samujan: Не получаеться выставить заявку в примере SampleGui Нормально подключаюсь получаю все инструменты и так далее. Но пример не отправялет завку в альфу,пробовал то же самое вручную в своём терминале ,всё нормально. Чем это может быть вызвано? При этом никакой ошибки проект не отлавливает....

Проверил маркет и лимитные заявки - работают обе.

В терминале в таблице с заявками она вобще не появляется? Или может Вы отправляли по цене вне лимита и она при этом не выставится в стакан?

Как будет время еще посмотрю.

Самунджян Артем
Самунджян Артем

sergey.masyura:

samujan: Не получаеться выставить заявку в примере SampleGui Нормально подключаюсь получаю все инструменты и так далее. Но пример не отправялет завку в альфу,пробовал то же самое вручную в своём терминале ,всё нормально. Чем это может быть вызвано? При этом никакой ошибки проект не отлавливает....

Проверил маркет и лимитные заявки - работают обе.

В терминале в таблице с заявками она вобще не появляется? Или может Вы отправляли по цене вне лимита и она при этом не выставится в стакан?

Как будет время еще посмотрю.

В таблице не появляеться ,потому что и не выставляеться.Точно проверил несколько раз,не вне лимита и потом я точно такую же отправял вручную и она ставилась нормально. Версия альфы 3.5.2(сборка 7) Спасибо за быстрый ответ!

Sergey Masyura
Sergey Masyura Автор

samujan:

sergey.masyura:

samujan: Не получаеться выставить заявку в примере SampleGui Нормально подключаюсь получаю все инструменты и так далее. Но пример не отправялет завку в альфу,пробовал то же самое вручную в своём терминале ,всё нормально. Чем это может быть вызвано? При этом никакой ошибки проект не отлавливает....

Проверил маркет и лимитные заявки - работают обе.

В терминале в таблице с заявками она вобще не появляется? Или может Вы отправляли по цене вне лимита и она при этом не выставится в стакан?

Как будет время еще посмотрю.

В таблице не появляеться ,потому что и не выставляеться.Точно проверил несколько раз,не вне лимита и потом я точно такую же отправял вручную и она ставилась нормально. Версия альфы 3.5.2(сборка 7) Спасибо за быстрый ответ!

Так. C codeplex можете собрать Connectors\Alfa\Samples\AlfaTest\ и выставить заявку через него? Заодно в output окно Visual Studio идут подробные логи от коннектора.

Самунджян Артем
Самунджян Артем

sergey.masyura:

samujan:

sergey.masyura:

samujan: Не получаеться выставить заявку в примере SampleGui Нормально подключаюсь получаю все инструменты и так далее. Но пример не отправялет завку в альфу,пробовал то же самое вручную в своём терминале ,всё нормально. Чем это может быть вызвано? При этом никакой ошибки проект не отлавливает....

Проверил маркет и лимитные заявки - работают обе.

В терминале в таблице с заявками она вобще не появляется? Или может Вы отправляли по цене вне лимита и она при этом не выставится в стакан?

Как будет время еще посмотрю.

В таблице не появляеться ,потому что и не выставляеться.Точно проверил несколько раз,не вне лимита и потом я точно такую же отправял вручную и она ставилась нормально. Версия альфы 3.5.2(сборка 7) Спасибо за быстрый ответ!

Так. C codeplex можете собрать Connectors\Alfa\Samples\AlfaTest\ и выставить заявку через него? Заодно в output окно Visual Studio идут подробные логи от коннектора.

Запустил коннектор альфа директ ,вручную только прописал именно свой счёт потому ,что у меня их 2. И он всё равно не выставляет заявки Может быть проблема в двух счетах,при том что один на фортсе ,а другой на споте?

Логи: AlfaTest.vshost.exe Information: 0 : TestForm AlfaTrader successfuly created <-------------------------------->

[Удалено в целях безопасности / Сергей]

AlfaTest.vshost.exe Information: 0 : TestForm Buy Limit AlfaTest.vshost.exe Information: 0 : AlfaTrader RegisterOrder: TransactionId=2956805003, Id=0, Price=7900, Balance=1, Security=SBER-12.11@FORTS, State=None

Sergey Masyura
Sergey Masyura Автор

samujan:

sergey.masyura:

samujan:

sergey.masyura:

samujan: Не получаеться выставить заявку в примере SampleGui Нормально подключаюсь получаю все инструменты и так далее. Но пример не отправялет завку в альфу,пробовал то же самое вручную в своём терминале ,всё нормально. Чем это может быть вызвано? При этом никакой ошибки проект не отлавливает....

Проверил маркет и лимитные заявки - работают обе.

В терминале в таблице с заявками она вобще не появляется? Или может Вы отправляли по цене вне лимита и она при этом не выставится в стакан?

Как будет время еще посмотрю.

В таблице не появляеться ,потому что и не выставляеться.Точно проверил несколько раз,не вне лимита и потом я точно такую же отправял вручную и она ставилась нормально. Версия альфы 3.5.2(сборка 7) Спасибо за быстрый ответ!

Так. C codeplex можете собрать Connectors\Alfa\Samples\AlfaTest\ и выставить заявку через него? Заодно в output окно Visual Studio идут подробные логи от коннектора.

Запустил коннектор альфа директ ,вручную только прописал именно свой счёт потому ,что у меня их 2. И он всё равно не выставляет заявки Может быть проблема в двух счетах,при том что один на фортсе ,а другой на споте?

Логи: AlfaTest.vshost.exe Information: 0 : TestForm AlfaTrader successfuly created [Удалено в целях безопасности/Сергей] <-------------------------------->

AlfaTest.vshost.exe Information: 0 : TestForm Buy Limit AlfaTest.vshost.exe Information: 0 : AlfaTrader RegisterOrder: TransactionId=2956805003, Id=0, Price=7900, Balance=1, Security=SBER-12.11@FORTS, State=None

Молодец, двигаешься в верном направлении. В Альфа-коннекторе не поддерживается несколько счетов.

В AlfaWrapper.cs есть такой код.


		public void RegisterOrder(Order order)
		{
			//Logger.Debug("RegisterOrder", _logTag);

			if (order == null)
				throw new ArgumentNullException("order");

			var account = order.Portfolio.Name + "-000"; // Портфель. // TODO: use AD portfolio instead of the AD account, "-000" is hardcoded

Чтобы сделать поддержку нескольких счетов, это надо еще 150р заплатить за подключение клиринговой пары =)

Самунджян Артем
Самунджян Артем

Огромное спасибо ,никогда бы не догадался ,поменял вместо "-000" на "-001" и всё стало выставляться!

Самунджян Артем
Самунджян Артем

Вот ещё одну вещь заметил ,когда запрашиваю свечки через getCandleBounds допустим часовики,то последняя готовая свечка приходит с неправильным закрытием p.s Говоря про последнюю свечку я говорю именно про ту которая уже закрылась и поменяться она уже не может.

Sergey Masyura
Sergey Masyura Автор

samujan: Вот ещё одну вещь заметил ,когда запрашиваю свечки через getCandleBounds допустим часовики,то последняя готовая свечка приходит с неправильным закрытием p.s Говоря про последнюю свечку я говорю именно про ту которая уже закрылась и поменяться она уже не может.

Т.е. open/high/low правильные, а close - нет? И так только для последней закрытой свечки?

Самунджян Артем
Самунджян Артем

Sergey Masyura:

samujan: Вот ещё одну вещь заметил ,когда запрашиваю свечки через getCandleBounds допустим часовики,то последняя готовая свечка приходит с неправильным закрытием p.s Говоря про последнюю свечку я говорю именно про ту которая уже закрылась и поменяться она уже не может.

Т.е. open/high/low правильные, а close - нет? И так только для последней закрытой свечки?

Проверю open,high,low ,но Close точно с потолка берёться

OvcharenkoVI
OvcharenkoVI

Появился вопрос такого рода: работаю над арбитражным роботом, который берет данные из стакана в стиле security.bestbid.price, используя один интерфейс Trader для связи с терминалом, но в таком случае метод Trader.RegisterSecurity, quotes, trades и так далее обрабатывает только один инструмент. Для решения этого вопроса я создал еще один AlfaTrader Trader1, все работает, но программа работает с такой скоростью, что отвечает только окно с логами, а все остальное наглым образом виснет. Ноутбук у меня вроде хороший, процессор i5, 8 gb ram.

Вот код:

public void Calculate()
        {
            this.ind = new Ind();
            this.ind2 = new Ind2();

            Trader.RegisterSecurity(base.Security);
            Trader1.RegisterSecurity(security_2);

            Trader.RegisterTrades(Security);
            Trader1.RegisterTrades(security_2);

            Trader.RegisterQuotes(Security);
            Trader1.RegisterQuotes(security_2);

            this.ind.Process((DecimalIndicatorValue)Security.BestAsk.Price);
            this.ind2.Process((DecimalIndicatorValue)security_2.BestBid.Price);


            if (InTrade == false)
            {
                if (isSmaller())
                    GoLong();
            }

            if (InTrade == true)
            {
                if (isBigger())
                    GoShort();
            }
        }

Как это возможно оптимизировать?

Sergey Masyura
Sergey Masyura Автор

OvcharenkoVI: Появился вопрос такого рода: работаю над арбитражным роботом, который берет данные из стакана в стиле security.bestbid.price, используя один интерфейс Trader для связи с терминалом, но в таком случае метод Trader.RegisterSecurity, quotes, trades и так далее обрабатывает только один инструмент. Для решения этого вопроса я создал еще один AlfaTrader Trader1, все работает, но программа работает с такой скоростью, что отвечает только окно с логами, а все остальное наглым образом виснет. Ноутбук у меня вроде хороший, процессор i5, 8 gb ram.

Вот код:

public void Calculate() { this.ind = new Ind(); this.ind2 = new Ind2();

        Trader.RegisterSecurity(base.Security);
        Trader1.RegisterSecurity(security_2);

        Trader.RegisterTrades(Security);
        Trader1.RegisterTrades(security_2);

        Trader.RegisterQuotes(Security);
        Trader1.RegisterQuotes(security_2);

        this.ind.Process((DecimalIndicatorValue)Security.BestAsk.Price);
        this.ind2.Process((DecimalIndicatorValue)security_2.BestBid.Price);


        if (InTrade == false)
        {
            if (isSmaller())
                GoLong();
        }

        if (InTrade == true)
        {
            if (isBigger())
                GoShort();
        }
    }
> 
> Как это возможно оптимизировать?

AlfaTrader один должен быть. RegisterSecurity можно на несколько инструментов у одного трейдера делать.
OvcharenkoVI
OvcharenkoVI

Это я знаю, просто до этого с одним трейдером второй инструмент молчал

Sergey Masyura
Sergey Masyura Автор

OvcharenkoVI: Это я знаю, просто до этого с одним трейдером второй инструмент молчал

Оба инструмента должны быть в списке позиций/балансов. Тогда должно нормально работать. В доке про это есть упоминание.

OvcharenkoVI
OvcharenkoVI

Как возможно получить Security.OpenPrice?

Инструмент регистрируется, но значение всегда null... в коннекторе не нашел

Sergey Masyura
Sergey Masyura Автор

OvcharenkoVI: Как возможно получить Security.OpenPrice?

Инструмент регистрируется, но значение всегда null... в коннекторе не нашел

Добавил в коннектор.

http://stocksharp.codeplex.com/SourceControl/changeset/changes/12431

OvcharenkoVI
OvcharenkoVI

Спасибо, Сергей

OvcharenkoVI
OvcharenkoVI

Возникла такая трабла - утром все нормально работало, спустя пару часов запустил заново робота и начал выскакивать эксэпшн stcClientError. Просто при попытке создания шлюза к серверу. Пробовал на всех своих заготовках, там везде разные сборки StockSharp.AlfaDirect.dll

Никто не знает, может у альфы какие то проблемы там?((

Вот так вот

Sergey Masyura
Sergey Masyura Автор

OvcharenkoVI: Возникла такая трабла - утром все нормально работало, спустя пару часов запустил заново робота и начал выскакивать эксэпшн stcClientError. Просто при попытке создания шлюза к серверу. Пробовал на всех своих заготовках, там везде разные сборки StockSharp.AlfaDirect.dll

Никто не знает, может у альфы какие то проблемы там?((

Вот так вот

Распечатайте текст ошибки сообщения message и код ошибки. Все станет понятно. А так, для информации, иногда надо терминал перезапускать.

seashaman
seashaman

OvcharenkoVI: Возникла такая трабла - утром все нормально работало, спустя пару часов запустил заново робота и начал выскакивать эксэпшн stcClientError. Просто при попытке создания шлюза к серверу. Пробовал на всех своих заготовках, там везде разные сборки StockSharp.AlfaDirect.dll

Никто не знает, может у альфы какие то проблемы там?((

Вот так вот

У меня тоже самое возникает в не рабочее время. Вообще в нерабочее время и по выходным с Альфы добиться какого либо вменяемого результата практически не возможно бывает. Выкачать данных и то дилемма. И кэш чистю, и перегружаю. Боле менее стабильная работа тока в рабочие часы.

Осваиваю Stock#, очень нравится. Планирую глобальный переезд. Немножко пока плыву в многочисленных методах. Не хватает рабочего примера работы с альфой через ту же SmaStrategy. В частности несовпадение методов Trader для Смарта и альфы немножко сбивает. А так продолжаю разбираться, работа конечно огромная сделана, большое человеческое спасибо создателям.

OvcharenkoVI
OvcharenkoVI

кстати на примерах вылетает то же самое

OvcharenkoVI
OvcharenkoVI

Кстати, было бы хорошо добавить еще Security.ClosePrice. Добавил бы сам, но еще не регистрировался на codeplex

Alexander
Alexander

OvcharenkoVI: Добавил бы сам, но еще не регистрировался на codeplex

Кто мешает? Регистрация занимает 1 минуту :)

Sergey Masyura
Sergey Masyura Автор

OvcharenkoVI: Кстати, было бы хорошо добавить еще Security.ClosePrice. Добавил бы сам, но еще не регистрировался на codeplex

На будущее стоит заводить баг через Issue Tracker на код плекс.

http://stocksharp.codeplex.com/workitem/list/advanced

ClosePrice - это цена закрытия сессии или последняя цена? Зачем она нужна в нерабочее время? Если после вечернего клиринга, то OpenPrice как раз содержит цену открытия вечерней сессии. Какой use-case для цены открытия и что под этим имеету в виду?

OvcharenkoVI
OvcharenkoVI

Цена закрытия предыдущей сессии. Нужна для расчета изменения стоимости актива(очень важно для стратегий парного трейдинга например). Я у себя в коннекторе добавил уже:

В AlfaTrader

		private void OnProcessSecurities(string data, bool create = false)
		{
			this.AddInfoLog("OnProcessSecurities {0}", data);

            if (data.IsNull())
            {
                return;
            }

			var secutities = data.Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

			ProcessEvents(() =>
			{
				foreach (var s in secutities)
				{
					var securityInfo = s;

					var details = securityInfo.Split('|');

					if(details[1].IsEmpty())
					{
						continue;
					}

					if (create)
					{
						GetSecurity(details[0], name =>
						{
							this.AddInfoLog("Security create : {0}", securityInfo);

							var security = EntityFactory.CreateSecurity(details[4] + "@" + details[5]);
							security.ExtensionInfo = new Dictionary<object, object>();

							security.Name = details[1];
							security.ShortName = details[1];
							security.ExpiryDate = DateTime.Parse(details[2]);
							security.Code = details[4];
							security.State = AlfaUtils.SecurityStateFromAlfa(details[3]);
							var exCode = Wrapper.GetExchangeCode(details[5]);
							security.Exchange = AlfaUtils.ExchangeCodeToExchange(exCode);
							security.MarginBuy = details[7].To<decimal>();
							security.MarginSell = details[8].To<decimal>();

							security.SetPaperNo(details[0]);
							security.SetCurrency(details[6]);
							security.SetPlaceCode(details[5]);

							decimal priceStep, priceStepCost;
							Wrapper.GetPriceStepInfo(security, out priceStep, out priceStepCost);
							security.MinStepSize = priceStep;

							if (priceStepCost == 0)
							{
								this.AddWarningLog("Стоимость шага цены равна нулю для {0}.", security.Name);
							}
							else
							{
								security.MinStepPrice = priceStepCost;	
							}

							security.Type = AlfaUtils.BoardCodeToSecurityType(details[9]);
							security.SetOpenInteres(details[10].To<long>());

							security.OpenPrice = details[11].To<decimal>();

                            security.ClosePrice = details[12].To<decimal>();

							return security;
						}, null);
					}
					else
					{
						GetSecurity(details[0], security =>
						{
							this.AddInfoLog("Security update {0}.", security.Id);

							security.BestAsk = new Quote
							{
								Price = details[1].To<decimal>(),
								Volume = details[2].To<int>(),
								Security = security,
								OrderDirection = OrderDirections.Sell
							};

							security.BestBid = new Quote
							{
								Price = details[3].To<decimal>(),
								Volume = details[4].To<int>(),
								Security = security,
								OrderDirection = OrderDirections.Buy
							};

							security.LowPrice = details[5].To<decimal>();
							security.HighPrice = details[6].To<decimal>();
							security.SetOpenInteres(details[7].To<long>());

							security.OpenPrice = details[8].To<decimal>();

                            security.ClosePrice = details[9].To<decimal>();

							// TODO: Update security state
							// TODO: Add missing fields

							security.RaisePropertyChanged();
							RaiseSecuritiesChanged(new[] { security });
						});
					}
				}
			});

И в AlfaWrapper

const string _securityFieldsCreate = "paper_no, ANSI_name, mat_date, status, p_code, place_code, curr_code, go_buy, go_sell, board_code, open_pos_qty, open_price, close_price";
		const string _securityFieldsUpdate = "paper_no, sell, sell_qty, buy, buy_qty, min_deal, max_deal, open_pos_qty, open_price, close_price";

К сожалению, не умею пока пользоваться codeplex, чтобы добавить, в ближайшее время постараюсь освоить...

Sergey Masyura
Sergey Masyura Автор

OvcharenkoVI: Цена закрытия предыдущей сессии. Нужна для расчета изменения стоимости актива(очень важно для стратегий парного трейдинга например). Я у себя в коннекторе добавил уже:

В AlfaTrader

И в AlfaWrapper

const string _securityFieldsCreate = "paper_no, ANSI_name, mat_date, status, p_code, place_code, curr_code, go_buy, go_sell, board_code, open_pos_qty, open_price, close_price"; const string _securityFieldsUpdate = "paper_no, sell, sell_qty, buy, buy_qty, min_deal, max_deal, open_pos_qty, open_price, close_price";

> 
> К сожалению, не умею пока пользоваться codeplex, чтобы добавить, в ближайшее время постараюсь освоить...

У "себя в коннекторе" можно пропустить важные фиксы, которые делаются в репо. Например, до недавнего времени ордера совсем неправильно матчились.

Правильный путь
1. Создать баг/пожелание на http://stocksharp.codeplex.com/workitem/list/basic
2. Завести обсуждение на форуме, чтобы услышать комментарии пользователей/авторов библиотеки.
3. Если можете исправить самостоятельно - пофиксить и создать patch/diff ( http://stackoverflow.com/questions/1648595/how-to-create-a-patch-file-on-windows ) и приатачить его к багу
4. Выслушать благодарности от пользователей и прочей публики
Sergey Masyura
Sergey Masyura Автор

Sergey Masyura:

OvcharenkoVI: Цена закрытия предыдущей сессии. Нужна для расчета изменения стоимости актива(очень важно для стратегий парного трейдинга например). Я у себя в коннекторе добавил уже:

В AlfaTrader

И в AlfaWrapper

const string _securityFieldsCreate = "paper_no, ANSI_name, mat_date, status, p_code, place_code, curr_code, go_buy, go_sell, board_code, open_pos_qty, open_price, close_price"; const string _securityFieldsUpdate = "paper_no, sell, sell_qty, buy, buy_qty, min_deal, max_deal, open_pos_qty, open_price, close_price";

> >
> > К сожалению, не умею пока пользоваться codeplex, чтобы добавить, в ближайшее время постараюсь освоить...
> 
> У "себя в коннекторе" можно пропустить важные фиксы, которые делаются в репо. Например, до недавнего времени ордера совсем неправильно матчились.
> 
> Правильный путь
> 1. Создать баг/пожелание на http://stocksharp.codeplex.com/workitem/list/basic
> 2. Завести обсуждение на форуме, чтобы услышать комментарии пользователей/авторов библиотеки.
> 3. Если можете исправить самостоятельно - пофиксить и создать patch/diff ( http://stackoverflow.com/questions/1648595/how-to-create-a-patch-file-on-windows ) и приатачить его к багу
> 4. Выслушать благодарности от пользователей и прочей публики


Добавил цену закрытия в коннектор.

http://stocksharp.codeplex.com/SourceControl/changeset/changes/12592

OvcharenkoVI
OvcharenkoVI

Товарищи, есть такая трабла, может кто знает как ее решить?

Терминал дает не правильную цену открытия в таблице котировок, при этом на графике на свечке все правильно...

Sergey Masyura
Sergey Masyura Автор

OvcharenkoVI: Товарищи, есть такая трабла, может кто знает как ее решить?

Терминал дает не правильную цену открытия в таблице котировок, при этом на графике на свечке все правильно...

Цена открытия - это цена открытия вечерней сессии.

OvcharenkoVI
OvcharenkoVI

А реально получить цену открытия текущей сессии?

Sergey Masyura
Sergey Masyura Автор

OvcharenkoVI: А реально получить цену открытия текущей сессии?

Да. Как вариант можно с сервера запросить минутную свечку 10:00 - 10:01 и посмотреть у нее цену открытия.

OvcharenkoVI
OvcharenkoVI

Но спасибо за разъяснение

OvcharenkoVI
OvcharenkoVI

Этот способ я пытался провернуть, но у меня почему то виснет GeHistoryData)

Сейчас решил провернуть стратегию без фьючей, так что надеюсь отложить этот вопрос в ящик)

Sergey Masyura
Sergey Masyura Автор

OvcharenkoVI: Этот способ я пытался провернуть, но у меня почему то виснет GeHistoryData)

Сейчас решил провернуть стратегию без фьючей, так что надеюсь отложить этот вопрос в ящик)

Берите эту свечку не с сервера, а локально из базы терминалы. Тогда ничего виснуть не будет.

seashaman
seashaman

Подскажите пожалуйста, это только у меня, или вообще с CandleManager проблемма под Alfa? Я никак не могу добиться от него любого не null значения. Перебрал уже все примеры, добавил по нему все что можно. Все подсоединяется, квоты бегут в логах, GetMarketPrice выдает нормальные цифры, а candleManager молчит как партизан. Сборка 12564.

Sergey Masyura
Sergey Masyura Автор

seashaman: Подскажите пожалуйста, это только у меня, или вообще с CandleManager проблемма под Alfa? Я никак не могу добиться от него любого не null значения. Перебрал уже все примеры, добавил по нему все что можно. Все подсоединяется, квоты бегут в логах, GetMarketPrice выдает нормальные цифры, а candleManager молчит как партизан. Сборка 12564.

Не знаю, не пробовал. Можно будет посмотреть. У меня своя реализация получения исторических/реал-тайм свечек из терминала. Возможно к Новому Году добавлю ее в публичный коннектор в том числе.

seashaman
seashaman

Sergey Masyura:

seashaman: Подскажите пожалуйста, это только у меня, или вообще с CandleManager проблемма под Alfa? Я никак не могу добиться от него любого не null значения. Перебрал уже все примеры, добавил по нему все что можно. Все подсоединяется, квоты бегут в логах, GetMarketPrice выдает нормальные цифры, а candleManager молчит как партизан. Сборка 12564.

Не знаю, не пробовал. Можно будет посмотреть. У меня своя реализация получения исторических/реал-тайм свечек из терминала. Возможно к Новому Году добавлю ее в публичный коннектор в том числе. Был бы очень признателен, если бы Вы нашли время заглянуть хоть одним глазком. Поставить диагноз,куда копать. Просто невозможность собрать рабочий тривиальный пример, при ознакомлении, выбивает из тапок(. А начинать знакомство с Stock# с написания коннектора сильно круто для меня )

UP. Заработало. Обновил, все перекомпилил, открыл в Альфе все возможные таблицы.

Sergey Masyura
Sergey Masyura Автор

seashaman:

Sergey Masyura:

seashaman: Подскажите пожалуйста, это только у меня, или вообще с CandleManager проблемма под Alfa? Я никак не могу добиться от него любого не null значения. Перебрал уже все примеры, добавил по нему все что можно. Все подсоединяется, квоты бегут в логах, GetMarketPrice выдает нормальные цифры, а candleManager молчит как партизан. Сборка 12564.

Не знаю, не пробовал. Можно будет посмотреть. У меня своя реализация получения исторических/реал-тайм свечек из терминала. Возможно к Новому Году добавлю ее в публичный коннектор в том числе. Был бы очень признателен, если бы Вы нашли время заглянуть хоть одним глазком. Поставить диагноз,куда копать. Просто невозможность собрать рабочий тривиальный пример, при ознакомлении, выбивает из тапок(. А начинать знакомство с Stock# с написания коннектора сильно круто для меня )

Хорошо, посмотрю.

У альфа-конектора мало пользователей, про ошибки тоже практически никто не пишет. Если возьмете Квик, то там точно все что есть в сток-шарпе работает.

Загрузить еще комментарии