Как в 4.1 формировать свечки из тиков в реал тайме?
Atom Ответить
30.05.2012


Как теперь формировать свечки из тиков в реальном времени?
Мне нужно самому генерировать тики (сделки), без ITrader.


в 3 версии, я делал так:

определял источник свечек, с методом AddNewTrade() и через него скармливал тики. CandleManager соответственно строил свечки, а теперь?

Код

public abstract class MyCandleSource : Disposable, ICandleSource

public class ParallelMyTraderCandleSource : MyCandleSource
{
private readonly SynchronizedList<Trade> _newTrades = new SynchronizedList<Trade>();

private bool _isInProcess;
private readonly Timer _timer;

/// <summary>
/// Создать <see cref="ParallelTraderCandleSource"/>.
/// </summary>
/// <param name="trader">Торговый шлюз, у которого используется событие <see cref="ITrader.NewTrades"/>.</param>
public ParallelMyCandleSource()
: this(TimeSpan.FromMilliseconds(300))
{ }

/// <summary>
/// Создать <see cref="ParallelTraderCandleSource"/>.
/// </summary>
/// <param name="trader">Торговый шлюз, у которого используется событие <see cref="ITrader.NewTrades"/>.</param>
/// <param name="interval">Интервал отправки новых сделок.</param>
public ParallelMyCandleSource(TimeSpan interval)
: base(int.MaxValue, int.MaxValue)
{

_timer = interval.CreateTimer(OnProcessTrades);
}

/// <summary>
/// Обработчик события <see cref="ITrader.NewTrades"/>.
/// </summary>
/// <param name="trades">Новые сделки.</param>
protected override void OnNewTrades(IEnumerable<Trade> trades)
{
base.OnNewTrades(trades);

_newTrades.AddRange(trades);
}


public override void AddNewTrades(Trade trade)
{
base.AddNewTrades(trade);

_newTrades.Add(trade);
}

private void OnProcessTrades()
{
if (_isInProcess)
return;

_isInProcess = true;

try
{
var newTrades = _newTrades.SyncGet(c =>
{
var retVal = c.ToArray();
c.Clear();
return retVal;
});

if (newTrades.Length > 0)
base.RaiseNewTrades(newTrades);
}
finally
{
_isInProcess = false;
}
}
}

Теги:


Спасибо:




2 Ответов
Alexander

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


Теперь необходимо конвертировать данные в ICandleBuilderSourceValue.
Смотрите в сторону класса ConvertableCandleBuilderSource.
Спасибо:

Alexander

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


TraderHelper.ToCandles в последней версии на codeplex
Спасибо:


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

loading
clippy