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

Вопрос по уроку №2 "Создание обертки коннекторов"
Atom
01.10.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 Спасибо.


Теги:


Спасибо:


support_Edu

Фотография
Дата: 01.10.2013
Ответить


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

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

Спасибо:

support_Edu

Фотография
Дата: 01.10.2013
Ответить


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

Спасибо:

Gavrus

Фотография
Дата: 01.10.2013
Ответить


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;

Спасибо:

IvanB

Фотография
Дата: 04.10.2013
Ответить


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;
            }
         ...

Спасибо: Bond Gavrus

Urupa

Фотография
Дата: 15.11.2013
Ответить


Здравствуйте. Помогите начинающему, пожалуйста. Во 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);
        }
    }
Спасибо:

IvanB

Фотография
Дата: 15.11.2013
Ответить


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);
        }
    }

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

Спасибо:

Urupa

Фотография
Дата: 15.11.2013
Ответить


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

Спасибо:

IvanB

Фотография
Дата: 15.11.2013
Ответить


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

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

Спасибо:


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

loading
clippy