Rebelion
|
Дата: 06.01.2014
Михаил Сухов Подведу итог текущих ошибок тестера: Проблема с тестером (абсолютно не понятно в чем проблема, если на SampleHistory не воспроизведется, значит будет проигнорировано). Какие еще есть проблемы? Просьба давать ссылки именно на ошибки, а не на вопросы или не непонятные вещи. Если ошибка здесь не приведена, то скорее всего она описана непонятно. Михаил, добрый вечер. Если нужно, я могу прислать Вам свой проект целиком для тестирования и указать, что конкретно делал (какие данные брал и как работал). Просто в паблик стратегию и свой нубокод не хочу выкладывать (стыдно, честно :-) ). Если можете - дайте мыло, на которое нужно будет архив выслать. Спасибо.
|
|
Спасибо:
|
|
|
|
|
Andrii
|
Дата: 06.01.2014
|
|
|
|
|
longtrades
|
Дата: 07.01.2014
А с этим только у метя проблемы ? события
|
|
Спасибо:
|
|
|
|
|
Rebelion
|
Дата: 07.01.2014
Да, вопрос, - а стоп-лоссы не пашут сейчас в эмуляции? Если да, кто кто могёт поделиться рецептом "реализации" оных косвенно (но не по факту построения свечи). Пасибки.
|
|
Спасибо:
|
|
|
|
|
longtrades
|
Дата: 08.01.2014
|
|
|
|
Еще одна ошибка , после этого , EmulationTrader вылетает.
2014/01/08 16:45:40.512| |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=|Заявка 60299243. Исполнение объема 1 по цене 142810. 2014/01/08 16:45:40.512| |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=|Заявка 60299243 полностью исполнена. 2014/01/08 16:45:40.512| |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=|Сделка 190 заявки 60299243 P=60299243 V=142810. 2013/10/01 10:27:14.060| |EmulationTrader|Order changed: 60299243/1048 Покупка Цена=142820 Объем=1 Сост=Done Бал=0 2014/01/08 16:45:40.512|Error |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=|Заявка 60299243 для перерегистрации не найдена. 2014/01/08 16:45:40.513| |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=|Заявка 60299249 снята. 2014/01/08 16:45:40.513| |#=q$TVAZv2WzY1qGjz80r1CIY92Hu5bfXHMYoAarEBZe7E=|Заявка 60299251 зарегистрирована. 2013/10/01 10:27:14.060| |EmulationTrader|OrderFailed: 60299250/0 Покупка Цена=142830 Объем=1 Сост=Pending Бал=1 System.InvalidOperationException: Заявка 1048 для перерегистрации не найдена. 2013/10/01 10:27:14.060|Error |EmulationTrader|System.NullReferenceException: Object reference not set to an instance of an object. at StockSharp.Algo.Slippage.SlippageManager.#=qHSjOHMMXp_bJx8EfxAt1nw==.#=qLnEyjd4aNsYfRsi9E8yzyA==(Order #=qptDStyeiQm7xlH2sVMN5Ww==) at StockSharp.Algo.Slippage.SlippageManager.RegisterFailed(OrderFail fail) at StockSharp.Algo.Strategies.Strategy.#=qmOjbgpBRxlSEyg$kAkD9rF$WJ598ihLCUESLgdBw4wU=(IEnumerable`1 #=qSWcuracInqoyrIBFWV7Ipg==, Action`1 #=q2EaaJQEcSfiBpdwY8lWHUA==) at StockSharp.Algo.Strategies.Strategy.#=q$UcEWvJX7xX1u7qzWK2_p_XVF6tBY0N2tg0e2ZgnPs8=(IEnumerable`1 #=q_yxXJw8b$I1ST6b3rvdfRw==) at System.Action`1.Invoke(T obj) at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg) at StockSharp.Algo.BaseTrader.RaiseOrdersRegisterFailed(IEnumerable`1 fails) at StockSharp.Algo.BaseTrader.RaiseOrderFailed(OrderFail fail) at StockSharp.Algo.BaseTrader.#=qRFsJgLpydq$Kddrkt15L9Vrih$5fgk1Tnr0nOUfL8MQ=.#=qH9b_CQZfd7t4rl3yUqFVnGwaiCBuchglgFiNWgObp1M=(Security #=qwF_zoEhyqAZy_XLCIx2llQ==) at StockSharp.Algo.BaseTrader.#=qRFsJgLpydq$Kddrkt15L9Vrih$5fgk1Tnr0nOUfL8MQ=.#=qfJM68qe4H7rqVn1UK6QHIBAiE3Dx5RlWpifz7oo7Wmc=(Security #=qmMPCKl4ithkuoucPLmF1XQ==, ExecutionMessage #=qCKf2rdV7ikNYahTqqPfwjA==) at StockSharp.Algo.BaseTrader.#=q$TfDfS0iDuWzNMuCslIWlKtajC5ivx_9AJJJxiurNcE=[TMessage](TMessage #=qWYMQZIHiv9H6MOj7Ak3qVA==, Func`2 #=qHnWrxU$dZzS0y_Nmz$zKgQ==, Action`2 #=qe3yM3XwnqZTyc95sZDXkLQ==, Boolean #=qOko32PUJB4bfGkZPJz$6kPQvtFffyI3jszlsOJWbcXc=) at StockSharp.Algo.BaseTrader.#=qILcbrwgux5SIrEBkV$o_EYBb3JEeuQSSU2IxlSFFFPA=(ExecutionMessage #=q3hfMeB45u9JUaM2Bh2vVaw==) at StockSharp.Algo.BaseTrader.OnProcessMessage(Message message, MessageDirections direction) at StockSharp.Algo.Testing.BaseEmulationTrader.OnProcessMessage(Message message, MessageDirections direction) at StockSharp.Algo.Testing.EmulationTrader.OnProcessMessage(Message message, MessageDirections direction)
|
|
Спасибо:
|
|
|
|
|
esper
|
Дата: 09.01.2014
Rebelion Да, вопрос, - а стоп-лоссы не пашут сейчас в эмуляции? Если да, кто кто могёт поделиться рецептом "реализации" оных косвенно (но не по факту построения свечи). Пасибки. Про какие стопы идет речь?
|
|
Спасибо:
|
|
|
|
|
Rebelion
|
Дата: 09.01.2014
|
|
|
|
esper Rebelion Да, вопрос, - а стоп-лоссы не пашут сейчас в эмуляции? Если да, кто кто могёт поделиться рецептом "реализации" оных косвенно (но не по факту построения свечи). Пасибки. Про какие стопы идет речь? Код
private void OnNewOrderTrades(IEnumerable<MyTrade> myTrades)
{
var protectiveStrategies = myTrades.Select(t =>
{
var newStrategyFromTrade = new StopLossStrategy(t, new Unit(TraderHelper.ShrinkPrice(t.Trade.Security, stopLossParameter * (decimal)currentParams.candleSize))) { IsTrailing = true, UseQuoting = false, PriceOffset = (decimal)currentParams.candleSize*3, DisposeOnStop = true, ProtectiveVolume = t.Trade.Volume, MaxRegisterFailCount = 5, };
return newStrategyFromTrade;
});
foreach(var s in protectiveStrategies)
ChildStrategies.Add(s);
base.OnNewMyTrades(myTrades);
}
не вызывается в режиме эмуляции. Сама регистрация заявки и стопа на неё производится следующим образом: Код
var newOrderDirection = delayedVolume > 0 ? OrderDirections.Buy : OrderDirections.Sell;
var newOrderPrice = isNewEntranceSignalUp == true ? Security.LastTrade.Price + Security.MinStepSize * pricePieces : Security.LastTrade.Price - Security.MinStepSize * pricePieces;
var newPositionToOpen = this.CreateOrder(newOrderDirection, newOrderPrice, Math.Abs(delayedVolume));
newPositionToOpen.WhenMatched().Do(() => newPositionToOpen.WhenNewTrades().Do(OnNewOrderTrades).Apply(this)).Apply(this);
RegisterOrder(newPositionToOpen);
Версия библиотеки S# в тестере - 4.1.19.1 (к сожалению, код, отрабатывающий на 4.1.19.1 в режиме эмуляции падает в бесконечный цикл перевыставления заявки в версиях 4.2.1.x, логи я прилагал выше, использовал свечи Renko и Range, разные конфигурации - тики, тики и стаканы, включал-выключал стаканогенератор - для 4.2.1.x итог один). В реальной торговле этот код пахал (стопы отрабатывали). Просто вроде где-то на форуме краем глаза видел, что в 4.1.x.y стопы в эмуляшке не работают - решил уточнить на всякий случай.
|
|
Спасибо:
|
|
|
|
|
esper
|
Дата: 09.01.2014
Стакан для инструмента зарегистрирован?
|
|
|
|
|
Rebelion
|
Дата: 09.01.2014
|
|
|
|
esper Стакан для инструмента зарегистрирован? Пасиба за наводку! У меня в коде (брался за основу пример из 4.2.1.7) было так почему-то... Код
if (emulationInfo.UseMarketDepth // тест подразумевает наличие стаканов
&& (generateDepths == true // если выбрана генерация стаканов вместо реальных стаканов
|| emulationInfo.UseCandleTimeFrame!=TimeSpan.Zero // для свечей генерируем стаканы всегда
))
{
// если история по стаканам отсутствует, но стаканы необходимы для стратегии,
// то их можно сгенерировать на основании цен последних сделок или свечек.
//trader.RegisterMarketDepth(new TrendMarketDepthGenerator(trader.GetSecurityId(security))
trader.RegisterMarketDepth(new TrendMarketDepthGenerator(security)
{
Interval = TimeSpan.FromSeconds(1), // стакан для инструмента в истории обновляется раз в секунду
MaxAsksDepth = 3,
MaxBidsDepth = 3,
UseTradeVolume = true,
MaxVolume = 1,
MinSpreadStepCount = 1, // минимальный генерируемый спред - 2 минимальных шага цены
MaxSpreadStepCount = 3, // не генерировать спрэд между лучшим бид и аск больше чем 5 минимальных шагов цены - нужно чтобы при генерации из свечей не получалось слишком широкого спреда.
});
Ессно не работала генерация стаканов. Меняем Код
emulationInfo.UseMarketDepth
на Код
!emulationInfo.UseMarketDepth
- стаканы генерируются.
|
|
Спасибо:
|
|
|
|
|
AntonySS
|
Дата: 14.01.2014
Добрый день!
Скачал самое последнее обновление API 4.2.2.1
При запуске стандартных SampleHistoryTesting и SampleHistoryTestingParallel я обнаружил что при каждом новом прогоне на одних и тех же исторических данных, которые идут в комплекте с API, я получаю совершенно разные результаты, причем порой различные в разы, как в положительную, так и в отрицательную сторону.
|
|
Спасибо:
|
|
|
|