NewMyTrades и NewOrders работают только для ордеров и сделок, уже существующих в момент подключения
Уважаемые коллеги, добрый день!
NewMyTrades и NewOrders работают только для ордеров и сделок, уже существующих в момент подключения.
namespace SampleGUI
{
using...
public partial class MainWindow
{
private bool _isConnected;
public AlfaTrader Trader;
private Portfolio _portfolio;
private Security _lkoh;
private CandleManager _candleManager;
private TimeSpan _timeFrame;
private Order _order;
*** CUT ***
public MainWindow()
{
InitializeComponent();
MainWindow.Instance = this;
Logger.Instance().Updated += UpdateLog;
}
private static void UpdateLog()
{
var entries = Logger.Instance().NewEntries;
if (entries.Count == 0)
return;
foreach (var entry in entries)
{
var text = String.Format("{0:HH:mm:ss} | {1,-5} | {2,-15} | {3}",
DateTime.Now, entry.Level, entry.Source, entry.Message);
Trace.WriteLine(text);
Trace.Flush();
}
}
protected override void OnClosing(CancelEventArgs e)
{
if (this.Trader != null)
this.Trader.Dispose();
base.OnClosing(e);
}
public static MainWindow Instance { get; private set; }
private void Connect_Click(object sender, RoutedEventArgs e)
{
try
{
if (!_isConnected)
{
if (this.Trader == null)
{
// создаем шлюз
this.Trader = new AlfaTrader();
// инициализируем механизм переподключения (будет автоматически соединяться
// каждые 10 секунд, если шлюз потеряется связь с сервером)
this.Trader.ReConnectionSettings.Interval = TimeSpan.FromSeconds(10);
//this.Trader.ReConnectionSettings.WorkingTime = Exchange.Rts.WorkingTime;
this.Trader.ReConnectionSettings.ConnectionRestored += () => this.GuiAsync(() =>
{
// разблокируем кнопку Экспорт (соединение было восстановлено)
ChangeConnectStatus(true);
MessageBox.Show(this, "Соединение восстановлено.");
});
// подписываемся на событие успешного соединения
this.Trader.Connected += () =>
{
// возводим флаг, что соединение установлено
_isConnected = true;
// разблокируем кнопку Экспорт
this.GuiAsync(() => ChangeConnectStatus(true));
};
// подписываемся на событие разрыва соединения
this.Trader.ConnectionError += error => this.GuiAsync(() =>
{
// заблокируем кнопку Экспорт (так как соединение было потеряно)
ChangeConnectStatus(false);
MessageBox.Show(this, error.ToString(), "Ошибка соединения");
});
this.Trader.ProcessDataError += error => this.GuiAsync(() => MessageBox.Show(this, error.ToString(), "Ошибка обработки данных"));
this.Trader.NewSecurities += securities =>
*** CUT ***
this.Trader.NewMyTrades += trades =>
{
foreach (MyTrade trade in trades)
{
this.GuiAsync(() => logTextBox.AppendText(" trade " + trade.Trade.Id + " " + trade.Trade.OrderDirection + " price " + trade.Trade.Price + System.Environment.NewLine));
}
};
this.Trader.NewOrders += orders =>
{
foreach (Order order in orders)
{
this.GuiAsync(() => logTextBox.AppendText(" order " + order.Id + " " + order.Direction + " price " + order.Price + System.Environment.NewLine));
}
};
this.Trader.NewPortfolios += portfolios =>
*** CUT ***
//this.Trader.NewPositions += positions => this.GuiAsync(() => _positionsWindow.Positions.AddRange(positions));
// подписываемся на событие о неудачной регистрации заявок
this.Trader.OrdersFailed += OrdersFailed;
// подписываемся на событие о неудачной регистрации стоп-заявок
this.Trader.StopOrdersFailed += OrdersFailed;
this.Trader.Connected += this.Trader.StartExport;
_timeFrame = TimeSpan.FromMinutes(double.Parse(timeFrameTextBox.Text));
}
this.Trader.Connect();
Trader.RegisterTrades(_lkoh);
*** CUT ***
}
else
{
Trader.UnRegisterTrades(_lkoh);
this.Trader.Disconnect();
timeFrameTextBox.IsEnabled = accountTextBox.IsEnabled = secCodeTextBox.IsEnabled = true;
}
}
catch (Exception ex)
{
MessageBox.Show(this, ex.Message, "Ошибка");
}
}
private void Start()
{
*** CUT ***
_order = new Order
{
Type = OrderTypes.Market,
Portfolio = _portfolio,
//Price = _lastPrice + 50,
Security = _lkoh,
Volume = 1,
Direction = OrderDirections.Buy,
};
Trader.RegisterOrder(_order);
*** CUT ***
Спасибо.
UPD: NewOrders заработало. NewMyTrades нет.