RealTimeEmulationTrader не срабатывают события~/topic/4249/realtimeemulationtrader-ne-srabatyvayut-sobytiya/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T07:58:06Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/28965/4.2.2 события уже срабатывают , спасибо .2014-01-10T15:18:10Z2014-01-10T17:47:28Zlongtradeshttps://stocksharp.ru/users/6094/info@stocksharp.ru4.2.2 события уже срабатывают , спасибо .Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28964/В примерах из обучения, в уроке восемь, там как раз используются библиотеки версии 4.1.19.1, все раб...2014-01-10T14:53:42Z2014-01-10T14:53:42Zesperhttps://stocksharp.ru/users/5990/info@stocksharp.ru<div class="quote"><span class="quotetitle">Gavrus <a href="https://stocksharp.ru/posts/m/28962/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">В примерах из обучения, в уроке восемь, там как раз используются библиотеки версии 4.1.19.1, все работает. <br />Просьба к разработчикам S#. Не могли бы и примеры из обучения тоже периодически обновлять? А то проку от него особого нет, т.к. в новых версиях библиотек иначе реализована работа. <br /></div></div><br />Примеры обновляются согласно изменениям в API, главное внимательней следить, что именно там изменилось. По описанной проблеме, попробуйте на 4.2.2, эта ошибка так и не подтвердилась, но были другие изменения.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28962/В примерах из обучения, в уроке восемь, там как раз используются библиотеки версии 4.1.19.1, все раб...2014-01-10T14:34:52Z2014-01-10T14:34:52ZGavrushttps://stocksharp.ru/users/26838/info@stocksharp.ruВ примерах из обучения, в уроке восемь, там как раз используются библиотеки версии 4.1.19.1, все работает. <br />Просьба к разработчикам S#. Не могли бы и примеры из обучения тоже периодически обновлять? А то проку от него особого нет, т.к. в новых версиях библиотек иначе реализована работа. <br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28959/Инструмент есть точно и даже в RealTimeEmulationTrader.Securities он есть . Тестани этот же код в 4....2014-01-10T12:18:03Z2014-01-10T12:18:03ZRebelionhttps://stocksharp.ru/users/28840/info@stocksharp.ru<div class="quote"><span class="quotetitle">longtrades <a href="https://stocksharp.ru/posts/m/28958/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Инструмент есть точно и даже в RealTimeEmulationTrader.Securities он есть .</div></div><br /><br />Тестани этот же код в 4.1.19.1. Если пашет - проблема в 4.2.1.x<br />У меня один и тот же код в 4.2.1.x падал в бесконечный цикл перевыставления заявки на любом тесте с рандомного места, а этот же код (с малыми перепилками) в 4.1.19.1 работает нормально, тесты проходят.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28958/Инструмент есть точно и даже в RealTimeEmulationTrader.Securities он есть .2014-01-10T12:13:12Z2014-01-10T12:13:12Zlongtradeshttps://stocksharp.ru/users/6094/info@stocksharp.ruИнструмент есть точно и даже в RealTimeEmulationTrader.Securities он есть .Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28942/Судя по логу 2014/01/09 20:42:44.113|Debug |RealTimeEmulationTrader`1|BP:Execution(Matched),T=2014/0...2014-01-10T03:47:17Z2014-01-10T03:47:17Zesperhttps://stocksharp.ru/users/5990/info@stocksharp.ruСудя по логу<br /><div class="quote"><span class="quotetitle">Цитата:</span><div class="innerquote">2014/01/09 20:42:44.113|Debug |RealTimeEmulationTrader`1|BP:Execution(Matched),T=2014/01/09 20:42:44.457,Ord=0,Fail=,Trade=828388268</div></div><br />сделки должны идти. Возможно в таблице инструментов нет инструмента по этим сделкам.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28939/Вот лог , можете что-то сказать ? 2014/01/09 20:42:41.131| |RealTimeEmulationTrader`1|Connect 2014/0...2014-01-09T18:44:45Z2014-01-09T18:44:45Zlongtradeshttps://stocksharp.ru/users/6094/info@stocksharp.ruВот лог , можете что-то сказать ?<br /><br />2014/01/09 20:42:41.131| |RealTimeEmulationTrader`1|Connect<br />2014/01/09 20:42:41.131|Debug |RealTimeEmulationTrader`1|BP:Portfolio,T=2014.01.09 20:42:41.173,Name=test account<br />2014/01/09 20:42:41.173| |RealTimeEmulationTrader`1|Создан новый портфель test account.<br />2014/01/09 20:42:41.173|Debug |RealTimeEmulationTrader`1|BP:PortfolioChange,T=2014.01.09 20:42:41.173P=test account,Changes=BeginValue=1000000<br />2014/01/09 20:42:41.173| |RealTimeEmulationTrader`1|RCM: Connecting PrevState = -1 CurrState = -1.<br />2014/01/09 20:42:41.131| |QuikTrader|Connect<br />2014/01/09 20:42:41.131|Warning|QuikTrader|Невозможно выполнить подключение, так как соединение находится в состоянии Connecting.<br />2014/01/09 20:42:41.131|Debug |RealTimeEmulationTrader`1|BP:Connect,T=2014/01/09 20:42:41.368<br />2014/01/09 20:42:41.131| |RealTimeEmulationTrader`1|RCM: Trader ConnectionState = Connected CurrState = Connected PrevState = -1<br />2014/01/09 20:42:42.482| |QuikTrader|StartExport<br />2014/01/09 20:42:42.482| |QuikTrader|RCM: Trader ConnectionState = Connected CurrState = Connected PrevState = -1<br />2014/01/09 20:42:42.734|Debug |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=| --> Security,T=2014/01/09 20:42:42.702,SecId=S#:RIH4@FORTS, Native:<br />2014/01/09 20:42:42.482|Debug |RealTimeEmulationTrader`1|BP:Security,T=2014/01/09 20:42:42.702,SecId=S#:RIH4@FORTS, Native:<br />2014/01/09 20:42:42.702|Debug |RealTimeEmulationTrader`1|BP:Level1,T=2014/01/09 20:42:42.702Sec=S#:RIH4@FORTS, Native:,Changes=State=Trading,StepPrice=10,MinPrice=10<br />2014/01/09 20:42:44.458|Debug |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=| --> Execution(Matched),T=2014/01/09 20:42:44.457,Ord=0,Fail=,Trade=828388268<br />2014/01/09 20:42:44.462|Debug |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=| --> Execution(Registered),T=2014/01/09 20:42:44.457,Ord=0,Fail=,Trade=0<br />2014/01/09 20:42:44.495|Debug |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=| --> Execution(Registered),T=2014/01/09 20:42:44.457,Ord=0,Fail=,Trade=0<br />2014/01/09 20:42:44.496|Debug |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=| <-- Execution(Matched),T=2014/01/09 20:42:44.457,Ord=0,Fail=,Trade=828388268<br />2014/01/09 20:42:44.113|Debug |RealTimeEmulationTrader`1|BP:Execution(Matched),T=2014/01/09 20:42:44.457,Ord=0,Fail=,Trade=828388268<br />2014/01/09 20:42:44.497|Debug |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=| --> Execution(Matched),T=2014/01/09 20:42:44.457,Ord=0,Fail=,Trade=828388269<br />2014/01/09 20:42:44.497|Debug |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=| --> Execution(Registered),T=2014/01/09 20:42:44.457,Ord=0,Fail=,Trade=0<br />2014/01/09 20:42:44.497|Debug |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=| --> Execution(Registered),T=2014/01/09 20:42:44.457,Ord=0,Fail=,Trade=0<br />2014/01/09 20:42:44.497|Debug |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=| <-- Execution(Matched),T=2014/01/09 20:42:44.457,Ord=0,Fail=,Trade=828388269<br />2014/01/09 20:42:44.457|Debug |RealTimeEmulationTrader`1|BP:Execution(Matched),T=2014/01/09 20:42:44.457,Ord=0,Fail=,Trade=828388269<br />2014/01/09 20:42:44.497|Debug |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=| --> Execution(Matched),T=2014/01/09 20:42:44.457,Ord=0,Fail=,Trade=828388270<br />2014/01/09 20:42:44.497|Debug |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=| --> Execution(Registered),T=2014/01/09 20:42:44.457,Ord=0,Fail=,Trade=0<br />2014/01/09 20:42:44.497|Debug |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=| --> Execution(Registered),T=2014/01/09 20:42:44.457,Ord=0,Fail=,Trade=0<br />2014/01/09 20:42:44.497|Debug |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=| <-- Execution(Matched),T=2014/01/09 20:42:44.457,Ord=0,Fail=,Trade=828388270<br />2014/01/09 20:42:44.457|Debug |RealTimeEmulationTrader`1|BP:Execution(Matched),T=2014/01/09 20:42:44.457,Ord=0,Fail=,Trade=828388270Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28934/Берем ваш пример SampleRealTimeTesting , переделаем его под квик , и ставим остановку на строку 125,...2014-01-09T16:10:16Z2014-01-09T17:58:08Zlongtradeshttps://stocksharp.ru/users/6094/info@stocksharp.ruБерем ваш пример SampleRealTimeTesting , переделаем его под квик , и ставим остановку на строку 125, и видим что событие _trader.NewTrades никогда не срабатывает:<br /><br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
namespace SampleRealTimeTesting
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Windows;
using Ecng.Collections;
using Ecng.Common;
using Ecng.ComponentModel;
using Ecng.Xaml;
using StockSharp.Algo;
using StockSharp.Algo.Candles;
using StockSharp.Algo.Indicators;
using StockSharp.Algo.Indicators.Trend;
using StockSharp.Algo.Reporting;
using StockSharp.Algo.Testing;
using StockSharp.BusinessEntities;
using StockSharp.Logging;
using StockSharp.Messages;
using StockSharp.Quik;
using StockSharp.Xaml.Charting;
public partial class MainWindow
{
private bool _isConnected;
private readonly TimeSpan _timeFrame = TimeSpan.FromMinutes(5);
private readonly SynchronizedList<TimeFrameCandle> _historyCandles = new SynchronizedList<TimeFrameCandle>();
private CandleManager _candleManager;
private RealTimeEmulationTrader<QuikTrader> _trader;
private SmaStrategy _strategy;
private DateTime _lastHistoryCandle;
private Security _lkoh;
private readonly ChartArea _area;
private ChartCandleElement _candlesElem;
private ChartIndicatorElement _longMaElem;
private ChartIndicatorElement _shortMaElem;
public MainWindow()
{
InitializeComponent();
_area = new ChartArea();
_chart.Areas.Add(_area);
}
protected override void OnClosing(CancelEventArgs e)
{
if (_trader != null)
_trader.Dispose();
base.OnClosing(e);
}
private void ConnectClick(object sender, RoutedEventArgs e)
{
if (!_isConnected)
{
if (_trader == null)
{
// тестовый портфель
var portfolio = new Portfolio
{
Name = "test account",
BeginValue = 1000000,
};
// создаем шлюз
_trader = new RealTimeEmulationTrader<QuikTrader>(new QuikTrader("D:\\QUIK\\Front"));
// передаем первоначальное значение размера портфеля в эмулятор
_trader.Process(new PortfolioChangeMessage
{
LocalTimeStamp = DateTime.Now,
PortfolioName = portfolio.Name,
Changes = new[]
{
new PositionChange(PositionChangeTypes.BeginValue, portfolio.BeginValue)
}
});
// очищаем из текстового поля в целях безопасности
Password.Clear();
// подписываемся на событие успешного соединения
_trader.Connected += () =>
{
// возводим флаг, что соединение установлено
_isConnected = true;
_trader.UnderlyingTrader.StartExport();
_trader.StartExport();
// разблокируем кнопку Экспорт
this.GuiAsync(() => ChangeConnectStatus(true));
_candleManager = new CandleManager(_trader);
_trader.NewSecurities += securities => this.GuiAsync(() =>
{
// находим нужную бумагу
var lkoh = securities.FirstOrDefault(s => s.Code == "LKOH");
if (lkoh != null)
{
_lkoh = lkoh;
this.GuiAsync(() =>
{
Start.IsEnabled = true;
});
}
});
_trader.NewTrades += trades => this.GuiAsync(() =>
{
var tr = trades;
var stop = 0;
});
_trader.NewMyTrades += trades => this.GuiAsync(() =>
{
if (_strategy != null)
{
// найти те сделки, которые совершила стратегия скользящей средней
trades = trades.Where(t => _strategy.Orders.Any(o => o == t.Order));
_trades.Trades.AddRange(trades);
}
});
// подписываемся на событие о неудачной регистрации заявок
_trader.OrdersRegisterFailed += OrdersFailed;
_candleManager.Processing += (s, candle) =>
{
// выводим только те свечки, которые не были отрисованы как исторические
if (candle.OpenTime > _lastHistoryCandle)
ProcessCandle(candle);
};
_trader.StartExport();
this.GuiAsync(() =>
{
ConnectBtn.IsEnabled = false;
});
};
// подписываемся на событие разрыва соединения
_trader.ConnectionError += error => this.GuiAsync(() =>
{
// заблокируем кнопку Экспорт (так как соединение было потеряно)
ChangeConnectStatus(false);
MessageBox.Show(this, error.ToString(), "Ошибка соединения");
});
_trader.ProcessDataError += error => this.GuiAsync(() => MessageBox.Show(this, error.ToString(), "Ошибка обработки данных"));
}
_trader.Connect();
}
else
{
_trader.Disconnect();
}
}
private void OrdersFailed(IEnumerable<OrderFail> fails)
{
this.GuiAsync(() =>
{
foreach (var fail in fails)
MessageBox.Show(this, fail.Error.ToString(), "Ошибка регистрации заявки");
});
}
private void ChangeConnectStatus(bool isConnected)
{
_isConnected = isConnected;
ConnectBtn.Content = isConnected ? "Отключиться" : "Подключиться";
}
private void OnLog(LogMessage message)
{
// если стратегия вывела не просто сообщение, то вывести на экран.
if (message.Level != LogLevels.Info && message.Level != LogLevels.Debug)
this.GuiAsync(() => MessageBox.Show(this, message.Message));
}
private void OnStrategyPropertyChanged(object sender, PropertyChangedEventArgs e)
{
this.GuiAsync(() =>
{
Status.Content = _strategy.ProcessState;
PnL.Content = _strategy.PnL;
Slippage.Content = _strategy.Slippage;
Position.Content = _strategy.Position;
Latency.Content = _strategy.Latency;
});
}
private void StartClick(object sender, RoutedEventArgs e)
{
// если были получены и инструмент, и портфель
if (_strategy == null)
{
// создаем скользящие средние, на 80 5-минуток и 10 5-минуток
var longSma = new SimpleMovingAverage { Length = 80 };
var shortSma = new SimpleMovingAverage { Length = 10 };
// регистрируем наш тайм-фрейм
var series = new CandleSeries(typeof(TimeFrameCandle), _lkoh, _timeFrame);
// создаем торговую стратегию
_strategy = new SmaStrategy(series, longSma, shortSma)
{
Volume = 1,
Security = _lkoh,
Portfolio = _trader.Portfolios.First(),
Trader = _trader,
};
_strategy.Log += OnLog;
_strategy.PropertyChanged += OnStrategyPropertyChanged;
_candlesElem = new ChartCandleElement();
_area.Elements.Add(_candlesElem);
_longMaElem = new ChartIndicatorElement
{
Title = "Длинная",
Indicator = _strategy.LongSma,
};
_area.Elements.Add(_longMaElem);
_shortMaElem = new ChartIndicatorElement
{
Title = "Короткая",
Indicator = _strategy.ShortSma,
};
_area.Elements.Add(_shortMaElem);
// начинаем получать текущие сделки (для построения свечек реального времени)
_trader.RegisterTrades(_lkoh);
Report.IsEnabled = true;
}
if (_strategy.ProcessState == ProcessStates.Stopped)
{
// запускаем процесс получения стакана, необходимый для работы алгоритма котирования
_trader.RegisterMarketDepth(_strategy.Security);
_strategy.Start();
Start.Content = "Стоп";
}
else
{
_trader.UnRegisterMarketDepth(_strategy.Security);
_strategy.Stop();
Start.Content = "Старт";
}
}
private void ProcessCandle(Candle candle)
{
var longValue = candle.State == CandleStates.Finished ? new ChartIndicatorValue(_strategy.LongSma, _strategy.LongSma.Process(candle)) : null;
var shortValue = candle.State == CandleStates.Finished ? new ChartIndicatorValue(_strategy.ShortSma, _strategy.ShortSma.Process(candle)) : null;
_chart.ProcessValues(candle.OpenTime, new Dictionary<IChartElement, object>
{
{ _candlesElem, candle },
{ _longMaElem, longValue },
{ _shortMaElem, shortValue },
});
}
private void ReportClick(object sender, RoutedEventArgs e)
{
// сгерерировать отчет по прошедшему тестированию
new ExcelStrategyReport(_strategy, "sma.xls").Generate();
// открыть отчет
Process.Start("sma.xls");
}
}
}
</pre>
</div></div>Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28938/У меня стандартные настройки квика. Смотрите что пишется в логе.2014-01-09T17:55:56Z2014-01-09T17:55:56Zesperhttps://stocksharp.ru/users/5990/info@stocksharp.ruУ меня стандартные настройки квика. Смотрите что пишется в логе.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28937/Ваш код вставленный в пример 4.2.1.7 работает без ошибок. Тоесь вы говорите что событие _trader.NewT...2014-01-09T17:40:20Z2014-01-09T17:41:33Zlongtradeshttps://stocksharp.ru/users/6094/info@stocksharp.ru<div class="quote"><span class="quotetitle">esper <a href="https://stocksharp.ru/posts/m/28935/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Ваш код вставленный в пример 4.2.1.7 работает без ошибок.</div></div><br /><br />Тоесь вы говорите что событие _trader.NewTrades срабатывает ? <br /><br />Но как такое может быть , у меня не сработало на разу ? пример взят из 4.2.1.7 никаких изменений кроме выложеных не делалось , может нужны какие то специфичные настройки квика для 4.2.1.7 , хотя если ловить события у КвикТрейдера то все работает.<br /><br />Настройки квика я тоже подгрузил из 4.2.1.7Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28935/Ваш код вставленный в пример 4.2.1.7 работает без ошибок.2014-01-09T16:45:30Z2014-01-09T16:45:30Zesperhttps://stocksharp.ru/users/5990/info@stocksharp.ruВаш код вставленный в пример 4.2.1.7 работает без ошибок.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28932/Каким образом мы должны искать проблему, если вы не привели ни логи, ни пример на котором это воспро...2014-01-09T15:48:57Z2014-01-09T15:48:57Zesperhttps://stocksharp.ru/users/5990/info@stocksharp.ruКаким образом мы должны искать проблему, если вы не привели ни логи, ни пример на котором это воспроизвести?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28931/Тук , Тук! Есть кто ? Такое впечатление что я сам с собой общаюсь. _trader.MarketTimeChanged начало ...2014-01-09T15:45:43Z2014-01-09T15:46:30Zlongtradeshttps://stocksharp.ru/users/6094/info@stocksharp.ruТук , Тук! Есть кто ? Такое впечатление что я сам с собой общаюсь.<br /><br />_trader.MarketTimeChanged начало срабатывать после обновления лицензии , _trader.NewTrades так до сих пор и не срабатывает , в чем может быть проблема ?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28911/Люди !!! , Ответьте кто нибудь , У кого то срабатывают эти события в версии 4.2.1.7 ?2014-01-08T07:48:09Z2014-01-08T07:48:09Zlongtradeshttps://stocksharp.ru/users/6094/info@stocksharp.ruЛюди !!! , <br />Ответьте кто нибудь , У кого то срабатывают эти события в версии 4.2.1.7 ?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28875/Добрый день , версия 4.2.1.7 RealTimeEmulationTrader не срабатывают события _trader.NewTrades и _tra...2014-01-06T08:35:06Z2014-01-06T08:35:06Zlongtradeshttps://stocksharp.ru/users/6094/info@stocksharp.ruДобрый день ,<br /><br />версия 4.2.1.7 RealTimeEmulationTrader<QuikTrader> <br /><br />не срабатывают события _trader.NewTrades и _trader.MarketTimeChanged причем в QuikTrader _trader.NewTrades срабатывает, а _trader.MarketTimeChanged тоже не срабатывает.<br /><br />прошу проверить.<br /><br />Спасибо.Copyright @ StockSharp Platform LLC 2010 - 2024