Вопрос по уроку №2 "Создание обертки коннекторов"

Вопрос по уроку №2 "Создание обертки коннекторов"
Atom
10/1/2013
Gavrus


Подскажите как передать interFace.SafeConnection класс RealTimeEmulationTrader, (EmulationTrader принимает без ошибок)


// создаем EmulationTrader для тестирования на исторических данных
                var EmulationT = new EmulationTrader(new[] { _security }, new[] { _portfolio })
                    {
                        StorageRegistry = storage, // передаем хранилище EmulationTrader
                        MarketTimeChangedInterval = _timeFrame, // указываем интервал прихода события о смене времени
                        UseMarketDepth = true, // указываем использовать стаканы для эмуляции
                        //   UseCandlesTimeFrame = _timeFrame            // загружаем свечи с указаным тайм - фрэймом
                    };
                interFace.SafeConnection = new SafeConnection(EmulationT);

А вот тут выдает ошибку преобразования типов:


  var portfolio = new Portfolio
                    {
                        Name = "test account",
                        BeginValue = 1000000,
                    };

                _trader = new RealTimeEmulationTrader<QuikTrader>(new QuikTrader(QuikTerminal.GetDefaultPath()), new[] {portfolio});
                    
                interFace.SafeConnection = new SafeConnection(_trader);

Подскажите пожалуйста, как правильно преобразовать тип RealTimeEmulationTrader в BaseTrader Спасибо.




Thanks:


support_Edu

Avatar
Date: 10/1/2013
Reply


Все трейдеры наследуются от интерфейса ITrader.

Попробуйте следующее: interFace.SafeConnection = new SafeConnection((ITrader)_trader); Просто делаем UpCast. Но лучше всего переписать SafeConnection так, что бы он работал не с BaseTrader, а с ITrader.

Thanks:

support_Edu

Avatar
Date: 10/1/2013
Reply


Все же привестись не получиться. Нужно переписать сам SafeConnection.

Thanks:

Gavrus

Avatar
Date: 10/1/2013
Reply


support_Edu: Все же привестись не получиться. Нужно переписать сам SafeConnection. В ITrader нету настроек переподключения (ReConnectionSettings)


 // public ITrader Trader { get; private set; }
    public BaseTrader Trader { get; private set; }
    
 //Интервал переподключения
   Trader.ReConnectionSettings.ConnectionSettings.Interval = TimeSpan.FromSeconds(10);            
 //Когда переподключаться
   Trader.ReConnectionSettings.WorkingTime = ExchangeBoard.Forts.WorkingTime;

Thanks:

IvanB

Avatar
Date: 10/4/2013
Reply


Gavrus:

support_Edu: Все же привестись не получиться. Нужно переписать сам SafeConnection. В ITrader нету настроек переподключения (ReConnectionSettings)

// public ITrader Trader { get; private set; } public BaseTrader Trader { get; private set; }

//Интервал переподключения Trader.ReConnectionSettings.ConnectionSettings.Interval = TimeSpan.FromSeconds(10);
//Когда переподключаться Trader.ReConnectionSettings.WorkingTime = ExchangeBoard.Forts.WorkingTime;


Посмотрите проекты 
$/StockSharp Lessons/StockSharp.Edu/Additional/Test/RealTimeEmulationTraderAndSafeConnection
Там в классе SafeConnection изменен тип поля Trader на ITrader:
```csharp

        /// <summary>
        /// Коннектор к торговой платформе
        /// </summary>
        public ITrader Trader { get; private set; }

, соответственно изменен тип аргумента конструктора, который принимает трейдер, теперь тип ITrader:

         public SafeConnection(ITrader trader)
         ...

А также изменен метод безопасного подключения:


        /// <summary>
        /// Подключиться безопасно к торговой платформе
        /// </summary>
        public void ConnectSafe()
        {
            var baseTrader = Trader as BaseTrader;

            if (baseTrader != null)
            {
                //Интервал переподключения
                baseTrader.ReConnectionSettings.Interval = TimeSpan.FromSeconds(10);
                //Когда переподключаться
                baseTrader.ReConnectionSettings.WorkingTime = ExchangeBoard.Forts.WorkingTime;
                //Запускать ли заново экспрорт после переподключения
                baseTrader.ReConnectionSettings.IsReStartExport = true;
            }
         ...

Thanks: Bond Gavrus

Urupa

Avatar
Date: 11/15/2013
Reply


Здравствуйте. Помогите начинающему, пожалуйста. Во 2ом уроке на 3м этаме (создание формы в которую подключаем StockSharp.TraderConnection и StockSharp.WpfConnectionInterface) правильно ли подключаюсь к SmartCOM 3.0 ? А точнее так не работает, что неправильно?

public partial class MainWindow : Window
    {
        public SmartTrader Trader { get; private set; }

        public MainWindow()
        {
            InitializeComponent();

            Trader = new SmartTrader();
            Trader.Login = "*****";
            Trader.Password = "*****";

            string url = "194.247.135.144:8090";
            string[] sortout = url.Split(':');
            IPEndPoint Server = new IPEndPoint(IPAddress.Parse(sortout[0]), int.Parse(sortout[1]));
            Trader.Address = Server;

            Trader.ApplyWrapper(SmartComVersions.V3);

            interFace.SafeConnection = new SafeConnection(Trader);
        }
    }
Thanks:

IvanB

Avatar
Date: 11/15/2013
Reply


Urupa: Здравствуйте. Помогите начинающему, пожалуйста. Во 2ом уроке на 3м этаме (создание формы в которую подключаем StockSharp.TraderConnection и StockSharp.WpfConnectionInterface) правильно ли подключаюсь к SmartCOM 3.0 ? А точнее так не работает, что неправильно?

public partial class MainWindow : Window
    {
        public SmartTrader Trader { get; private set; }

        public MainWindow()
        {
            InitializeComponent();

            Trader = new SmartTrader();
            Trader.Login = "*****";
            Trader.Password = "*****";

            string url = "194.247.135.144:8090";
            string[] sortout = url.Split(':');
            IPEndPoint Server = new IPEndPoint(IPAddress.Parse(sortout[0]), int.Parse(sortout[1]));
            Trader.Address = Server;

            Trader.ApplyWrapper(SmartComVersions.V3);

            interFace.SafeConnection = new SafeConnection(Trader);
        }
    }

Не вижу ошибок в коде. Не понятно что именно не работает. Если возникает ошибка, то присылайте скрин-шоты, выводимые сообщения, стек-информацию.

Thanks:

Urupa

Avatar
Date: 11/15/2013
Reply


А есть ли работающий пример коннекта со SmartCOM 2 или 3 через ITrader?

Thanks:

IvanB

Avatar
Date: 11/15/2013
Reply


Urupa: А есть ли работающий пример коннекта со SmartCOM 2 или 3 через ITrader?

Посмотрите в примерах к библиотеке.

Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy