В Transaq коннекторе не могу получить свечки
Atom Ответить
30.05.2017


Добрый день.
В приложенном простом примере не могу получить свечки через событие СandleManager.Processing.
Подключение происходит, инструмент находит, также приходят сделки через подписку NewTrade,
но свечки через CandleManager не формируются.
Transaq от Финам, библиотека StockSharp - 4.3.24.0
При создании CandleSeries, указываю BuildCandlesMode = BuildCandlesModes.Build.
Помогите, пожалуйста, в чем может быть причина?
Аналогичный пример с подключением через Квик работает.

Теги:


Спасибо:




4 Ответов
Pelmen32

Фотография
Курсы
Дата: 30.05.2017
Ответить


using System;
using System.Linq;
using System.Net;
using Ecng.Common;
using StockSharp.Algo.Candles;
using StockSharp.BusinessEntities;
using StockSharp.Messages;
using StockSharp.Transaq;

namespace TransaqTest
{
class Program
{
private static TransaqTrader _trader;

private static Security _security;

private static CandleManager _candleManager;

private static CandleSeries _series;

private static void Main(string[] args)
{

_trader = new TransaqTrader
{
Login = "XXXXXXXXXXX",
Password = "XXXXXXXXXX",
Address = "tr1.finam.ru:3900".To<EndPoint>(),
IsHFT = false
};

if (_trader.ConnectionState == ConnectionStates.Disconnected)
{
//подписываемся на событие успешного подклюия
_trader.Connected += () =>
{
Console.WriteLine("Успешно подключились");

_candleManager.Start(_series);

//_trader.RegisterSecurity(_security);

//_trader.RegisterTrades(_security);

};

_trader.NewSecurities += securities =>
{
_security = securities.FirstOrDefault(s => s.Code.ToUpper()=="SIM7");

if (_security != null)
{
Console.WriteLine("Инструмент {0} найден", _security.Code.ToString());

_candleManager = new CandleManager((IConnector) _trader);

_candleManager.Processing += DrawElement;

_series = new CandleSeries(typeof(TimeFrameCandle), _security, TimeSpan.FromMinutes(1))
{
BuildCandlesMode = BuildCandlesModes.Build,
};

}

};

_trader.NewTrade += (t) =>
{
var t1 = t;
};

_trader.Connect();

}
else
{
_trader.Disconnect();
}

Console.ReadKey();
_trader.Disconnect();
}

private static void DrawElement(CandleSeries series, Candle candle)
{
Console.WriteLine("Свечка: {0}, {1}", candle.OpenTime, candle.CloseTime);
}
}
}

Автор топика
Спасибо:

Support

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


BuildCandlesMode = BuildCandlesModes.Build. Здесь выберите другое значение, не Build...
Спасибо:

Pelmen32

Фотография
Курсы
Дата: 31.05.2017
Ответить


Менял значение BuildCandlesModes и на значение Load и LoadAndBuild - результат прежний, свечки не приходят
через событие СandleManager.Processing.

Попробовал сделать следующим образом через создание переменной IExternalCandleSourse и метод SubscribeCandles:

Код
_series = new CandleSeries(typeof(TimeFrameCandle), _security, TimeSpan.FromMinutes(5))
{
BuildCandlesMode = BuildCandlesModes.LoadAndBuild,
};

_iexternalCandleSource = _trader;

_candleManager = new CandleManager(_iexternalCandleSource);

_iexternalCandleSource.SubscribeCandles(_series,DateTimeOffset.MinValue, DateTimeOffset.MaxValue);

_candleManager.Processing += DrawElement;
_candleManager.Start(_series);


В метод DrawElement стали приходить только исторические свечки за текущий день до текущего времени,
новые свечки не формируются в CandleManger. При этом, в событие _trader.NewTrade новые сделки поступают.

1. Можно ли через Transaq коннектор и CandleManager получать не только историю, но и сформированные новые свечки в реальном времени?

2. Возможно ли сформировать свечки произвольного таймфрейма из сделок, а не загружать уже готовые свечки (в транзаке всего свечки 5 таймфреймов)?

Буду очень благодарен если поделитесь рабочим примером.

Автор топика
Спасибо:

Support

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


Ок, проверим...
Спасибо:


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

loading
clippy