Вопрос по уроку №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:
Код

        /// <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 ? А точнее так не работает, что неправильно?


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

Urupa

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


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

IvanB

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


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


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


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

loading
clippy