private void ConnectClick(object sender, RoutedEventArgs e)
		{
			if (Path.Text.IsEmpty())
				MessageBox.Show(this, LocalizedStrings.Str2969);
			else
			{
				// создаем подключение к Quik-у и синхронизуем его
				_connector = new QuikTrader(Path.Text).GuiSyncTrader();

				// или напрямую через конструктор GuiTrader
				// (пред. нужно закомментировать, это - раскомментировать)
				// new GuiTrader<QuikTrader>(new QuikTrader(Path.Text));

				// теперь можно обратиться к элементу окна 'Security' (это выпадающий список) без конструкции Sync
				_connector.NewSecurities += securities => Security.ItemsSource = _connector.Securities;

				// производим соединение
				_connector.Connect();

				// создаем менеджер свечек по синхронизированному подключению
				_candleManager = new CandleManager(_connector);

				ConnectBtn.IsEnabled = false;
			}
		}
		/// <summary>
		/// Создать <see cref="CandleManagerIndicatorSource"/>.
		/// </summary>
		/// <param name="candleManager">Менеджер свечек.</param>
		public CandleManagerIndicatorSource(ICandleManager candleManager)
		{
			if (candleManager == null)
				throw new ArgumentNullException("candleManager");

			_candleManager = candleManager;
			_candleManager.Processing += OnProcessing;
		}
Exemple #3
0
		public SmaStrategy(ICandleManager candleManager, CandleSeries series, SimpleMovingAverage longSma, SimpleMovingAverage shortSma)
		{
			_candleManager = candleManager;
			_series = series;

			LongSma = longSma;
			ShortSma = shortSma;
		}
Exemple #4
0
		public SmaStrategy(ICandleManager candleManager, CandleSeries series, SimpleMovingAverage longSma, SimpleMovingAverage shortSma)
		{
			_candleManager = candleManager;
			_series = series;

			LongSma = longSma;
			ShortSma = shortSma;

			_longSmaPeriod = this.Param("LongSmaPeriod", longSma.Length);
			_shortSmaPeriod = this.Param("ShortSmaPeriod", shortSma.Length);
		}
Exemple #5
0
		public SmaStrategy(IChart chart, ChartCandleElement candlesElem, ChartTradeElement tradesElem, 
			SimpleMovingAverage shortMa, ChartIndicatorElement shortElem,
			SimpleMovingAverage longMa, ChartIndicatorElement longElem,
			ICandleManager candleManager, CandleSeries series)
		{
			_chart = chart;
			_candlesElem = candlesElem;
			_tradesElem = tradesElem;
			_shortElem = shortElem;
			_longElem = longElem;
			_candleManager = candleManager;

			_series = series;

			ShortSma = shortMa;
			LongSma = longMa;
		}
Exemple #6
0
		private void ConnectClick(object sender, RoutedEventArgs e)
		{
			if (Path.Text.IsEmpty())
				MessageBox.Show(this, LocalizedStrings.Str2969);
			else
			{
				// создаем подключение к Quik-у и синхронизуем его
				_connector = new QuikTrader(Path.Text).GuiSyncTrader();

				// или напрямую через конструктор GuiTrader
				// (пред. нужно закомментировать, это - раскомментировать)
				// new GuiTrader<QuikTrader>(new QuikTrader(Path.Text));

				Security.SecurityProvider = new FilterableSecurityProvider(_connector);

				// производим соединение
				_connector.Connect();

				// создаем менеджер свечек по синхронизированному подключению
				_candleManager = new CandleManager(_connector);

				ConnectBtn.IsEnabled = false;
			}
		}
Exemple #7
0
 /// <summary>
 /// To get all candles.
 /// </summary>
 /// <typeparam name="TCandle">The candles type.</typeparam>
 /// <param name="candleManager">The candles manager.</param>
 /// <param name="series">Candles series.</param>
 /// <returns>Candles.</returns>
 public static IEnumerable <TCandle> GetCandles <TCandle>(this ICandleManager candleManager, CandleSeries series)
     where TCandle : Candle
 {
     return(candleManager.ThrowIfNull().Container.GetCandles(series).OfType <TCandle>());
 }
 /// <summary>
 /// To get a temporary candle on the specific date.
 /// </summary>
 /// <param name="candleManager">The candles manager.</param>
 /// <param name="series">Candles series.</param>
 /// <param name="time">The candle date.</param>
 /// <returns>The found candle (<see langword="null" />, if the candle by the specified criteria does not exist).</returns>
 public static TimeFrameCandle GetTimeFrameCandle(this ICandleManager candleManager, CandleSeries series, DateTimeOffset time)
 {
     return(candleManager.GetCandles <TimeFrameCandle>(series).FirstOrDefault(c => c.OpenTime == time));
 }
Exemple #9
0
 /// <summary>
 /// To start candles getting.
 /// </summary>
 /// <param name="manager">The candles manager.</param>
 /// <param name="series">Candles series.</param>
 public static void Start(this ICandleManager manager, CandleSeries series)
 {
     manager.ThrowIfNull().Start(series, series.From, series.To);
 }
Exemple #10
0
        ///// <summary>
        ///// To stop candles getting.
        ///// </summary>
        ///// <param name="series">Candles series.</param>
        //public static void Stop(this CandleSeries series)
        //{
        //	var manager = series.ThrowIfNull().CandleManager;

        //	// серию ранее не запускали, значит и останавливать не нужно
        //	if (manager == null)
        //		return;

        //	manager.Stop(series);
        //}

        //private static ICandleManagerContainer GetContainer(this CandleSeries series)
        //{
        //	return series.ThrowIfNull().CandleManager.Container;
        //}

        /// <summary>
        /// To get the number of candles.
        /// </summary>
        /// <param name="candleManager">The candles manager.</param>
        /// <param name="series">Candles series.</param>
        /// <returns>Number of candles.</returns>
        public static int GetCandleCount(this ICandleManager candleManager, CandleSeries series)
        {
            return(candleManager.ThrowIfNull().Container.GetCandleCount(series));
        }
 /// <summary>
 /// NotImplemented
 /// To create a Reactive Extension for the event of candle partial end.
 /// </summary>
 /// <param name="candleManager">The candles manager.</param>
 /// <param name="series">The candle series to be traced for candle partial end.</param>
 /// <param name="connector">Connection to the trading system.</param>
 /// <param name="percent">The percentage of candle completion.</param>
 /// <returns>Reactive Extension.</returns>
 public static IObservable <Candle> RxWhenPartiallyFinishedCandles(this ICandleManager candleManager,
                                                                   CandleSeries series, IConnector connector, decimal percent)
 {
     //TODO: RxWhenPartiallyFinishedCandles
     throw new NotImplementedException();
 }
Exemple #12
0
 public IndexSecurityCandleManagerSource(ICandleManager candleManager, DateTimeOffset from, DateTimeOffset to)
 {
     _from         = from;
     _to           = to;
     CandleManager = candleManager;
 }
 /// <summary>
 /// Получить серию свечек по заданным параметрам.
 /// </summary>
 /// <typeparam name="TCandle">Тип свечек.</typeparam>
 /// <param name="manager">Менеджер свечек.</param>
 /// <param name="security">Инструмент, по которому нужно фильтровать сделки для формирования свечек.</param>
 /// <param name="arg">Параметр свечи.</param>
 /// <returns>Серия свечек. Null, если такая серия не зарегистрирована.</returns>
 public static CandleSeries GetSeries <TCandle>(this ICandleManager manager, Security security, object arg)
     where TCandle : Candle
 {
     return(manager.ThrowIfNull().Series.FirstOrDefault(s => s.CandleType == typeof(TCandle) && s.Security == security && s.Arg.Equals(arg)));
 }
 /// <summary>
 /// Зарегистрирована ли группировка свечек по определённому признаку.
 /// </summary>
 /// <typeparam name="TCandle">Тип свечек.</typeparam>
 /// <param name="manager">Менеджер свечек.</param>
 /// <param name="security">Инструмент, для которого зарегистрирована группировка.</param>
 /// <param name="arg">Параметр свечи.</param>
 /// <returns><see langword="true"/>, если зарегистрирована. Иначе, <see langword="false"/>.</returns>
 public static bool IsCandlesRegistered <TCandle>(this ICandleManager manager, Security security, object arg)
     where TCandle : Candle
 {
     return(manager.GetSeries <TCandle>(security, arg) != null);
 }
 /// <summary>
 /// To get the current candle.
 /// </summary>
 /// <typeparam name="TCandle">The candles type.</typeparam>
 /// <param name="candleManager">The candles manager.</param>
 /// <param name="series">Candles series.</param>
 /// <returns>The found candle. If the candle does not exist, the <see langword="null" /> will be returned.</returns>
 public static TCandle GetCurrentCandle <TCandle>(this ICandleManager candleManager, CandleSeries series)
     where TCandle : Candle
 {
     return(candleManager.GetCandle <TCandle>(series, 0));
 }
		/// <summary>
		/// Создать <see cref="CandleManagerIndicatorSource"/>.
		/// </summary>
		/// <param name="candleManager">Менеджер свечек.</param>
		/// <param name="getPart">Конвертер свечки, через которую можно получить ее параметр (цену закрытия <see cref="Candle.ClosePrice"/>, цену открытия <see cref="Candle.OpenPrice"/> и т.д.).</param>
		public CandleManagerIndicatorSource(ICandleManager candleManager, Func<Candle, decimal> getPart)
			: base(getPart)
		{
			if (candleManager == null)
				throw new ArgumentNullException("candleManager");

			_candleManager = candleManager;
			_candleManager.Processing += OnProcessing;
		}
 /// <summary>
 /// To get a candle by the index.
 /// </summary>
 /// <typeparam name="TCandle">The candles type.</typeparam>
 /// <param name="candleManager">The candles manager.</param>
 /// <param name="series">Candles series.</param>
 /// <param name="candleIndex">The candle's position number from the end.</param>
 /// <returns>The found candle. If the candle does not exist, then <see langword="null" /> will be returned.</returns>
 public static TCandle GetCandle <TCandle>(this ICandleManager candleManager, CandleSeries series, int candleIndex)
     where TCandle : Candle
 {
     return((TCandle)candleManager.ThrowIfNull().Container.GetCandle(series, candleIndex));
 }
 /// <summary>
 /// To get candles by the total number.
 /// </summary>
 /// <typeparam name="TCandle">The candles type.</typeparam>
 /// <param name="candleManager">The candles manager.</param>
 /// <param name="series">Candles series.</param>
 /// <param name="candleCount">The number of candles that should be returned.</param>
 /// <returns>Found candles.</returns>
 public static IEnumerable <TCandle> GetCandles <TCandle>(this ICandleManager candleManager, CandleSeries series, int candleCount)
 {
     return(candleManager.ThrowIfNull().Container.GetCandles(series, candleCount).OfType <TCandle>());
 }
 /// <summary>
 /// To get candles by date range.
 /// </summary>
 /// <typeparam name="TCandle">The candles type.</typeparam>
 /// <param name="candleManager">The candles manager.</param>
 /// <param name="series">Candles series.</param>
 /// <param name="timeRange">The date range which should include candles. The <see cref="Candle.OpenTime"/> value is taken into consideration.</param>
 /// <returns>Found candles.</returns>
 public static IEnumerable <TCandle> GetCandles <TCandle>(this ICandleManager candleManager, CandleSeries series, Range <DateTimeOffset> timeRange)
     where TCandle : Candle
 {
     return(candleManager.ThrowIfNull().Container.GetCandles(series, timeRange).OfType <TCandle>());
 }