Mikhail Sukhov
|
Date: 10/30/2012
Инструмент, дата в истории, код воспроизводящий проблему.
|
|
Thanks:
|
|
|
|
|
Yury Smykalov
|
Date: 10/31/2012
|
|
|
|
RIZ2@RTS Сделка №4178 из report.xls Дата сделки: 30.10.2012 10:10:35 Цена сделки: 142120 Цена заявки: 141870 Направление: Продажа Цена сделки выглядит очень странной, на фоне сохраненных сделок: Code
Time;Code;Price;Volume
30.10.2012 10:10:34,780;RIZ2@RTS;141870;5
30.10.2012 10:10:34,840;RIZ2@RTS;141870;4
30.10.2012 10:10:34,840;RIZ2@RTS;141870;1
30.10.2012 10:10:34,927;RIZ2@RTS;141870;3
30.10.2012 10:10:34,927;RIZ2@RTS;141870;2
30.10.2012 10:10:34,935;RIZ2@RTS;141870;3
30.10.2012 10:10:35,259;RIZ2@RTS;141870;1
30.10.2012 10:10:36,786;RIZ2@RTS;141860;1
30.10.2012 10:10:36,864;RIZ2@RTS;141860;1
30.10.2012 10:10:36,864;RIZ2@RTS;141860;2
30.10.2012 10:10:36,952;RIZ2@RTS;141860;1
30.10.2012 10:10:36,952;RIZ2@RTS;141860;1
30.10.2012 10:10:37,041;RIZ2@RTS;141860;1
И стаканов: Code
DepthTime;Code;BestBid;BestAsk
30.10.2012 10:10:34,897;RIZ2@RTS;141870;141880
30.10.2012 10:10:34,937;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,036;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,155;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,223;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,270;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,322;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,588;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,653;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,757;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,942;RIZ2@RTS;141860;141870
30.10.2012 10:10:36,639;RIZ2@RTS;141860;141870
30.10.2012 10:10:36,704;RIZ2@RTS;141860;141870
30.10.2012 10:10:36,844;RIZ2@RTS;141860;141870
30.10.2012 10:10:36,885;RIZ2@RTS;141860;141870
30.10.2012 10:10:36,952;RIZ2@RTS;141850;141860
30.10.2012 10:10:37,099;RIZ2@RTS;141860;141870
Для воспроизведения достаточно вот этих двух файлов: Program.cs Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using StockSharp.Algo;
using StockSharp.Algo.Strategies;
using StockSharp.BusinessEntities;
using System.Threading;
using System.Diagnostics;
using StockSharp.Algo.Storages;
using StockSharp.Logging;
using StockSharp.Algo.Testing;
using StockSharp.Algo.Reporting;
namespace BugDemo
{
class Program
{
static void Main(string[] args)
{
var security = new Security
{
Id = "RIZ2@RTS",
Code = "RIZ2",
Name = "RTS-12.12",
MinStepSize = 10,
MinStepPrice = 6.2m,
Exchange = Exchange.Rts,
};
var storagePath = @"C:\StockSharp\4.1.5\StorageMDS";
var portfolio = new Portfolio { Name = "test account", BeginValue = 1000000m };
var startDate = new DateTime(2012, 10, 30, 10, 0, 0);
var stopDate = new DateTime(2012, 10, 30, 10, 30, 0);
var timeFrame = TimeSpan.FromMinutes(1);
var storageRegistry = new StorageRegistry();
((LocalMarketDataDrive)storageRegistry.DefaultDrive).Path = storagePath;
var logManager = new LogManager();
var fileListener = new FileLogListener(String.Format("{0}_{1:00}_{2:00}.txt", DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day));
logManager.Listeners.Add(fileListener);
var emulationTrader = new EmulationTrader(
new[] { security },
new[] { portfolio })
{
MarketTimeChangedInterval = timeFrame,
StorageRegistry = storageRegistry,
UseMarketDepth = true
};
logManager.Sources.Add(emulationTrader);
emulationTrader.RegisterTrades(security);
emulationTrader.RegisterMarketDepth(security);
emulationTrader.Connect();
emulationTrader.StartExport();
var strategy = new DemoStrategy()
{
Volume = 1,
Trader = emulationTrader,
Security = security,
Portfolio = portfolio,
StartDate = startDate,
StopDate = stopDate
};
logManager.Sources.Add(strategy);
strategy.Start();
emulationTrader.Start(startDate, stopDate);
while (emulationTrader.State == EmulationStates.Started && strategy.ProcessState == ProcessStates.Started)
{
Thread.Sleep(100);
}
new ExcelStrategyReport(strategy, "report.xls").Generate();
Process.Start("report.xls");
emulationTrader.Dispose();
strategy.Dispose();
Console.WriteLine("Press Enter to exit...");
Console.ReadLine();
}
}
}
DemoStrategy.cs Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using StockSharp.Algo;
using StockSharp.Algo.Strategies;
using StockSharp.BusinessEntities;
using System.Threading;
namespace BugDemo
{
class DemoStrategy : Strategy
{
private bool _lock = false;
public DateTime StartDate;
public DateTime StopDate;
protected override void OnStarted()
{
Security.WhenNewTrades()
.Do(ProcessNewTrades)
.Apply(this);
base.OnStarted();
}
protected void ProcessNewTrades(IEnumerable<Trade> trades)
{
if (Security.LastTrade == null || Security.BestAsk == null || Security.BestBid == null) return;
if (_lock) return;
var marketTime = Trader.GetMarketTime(Exchange.Rts);
if (StartDate.CompareTo(marketTime) > 0) return;
if (StopDate.CompareTo(marketTime) < 0) Stop();
OpenPosition();
}
protected void OpenPosition()
{
_lock = true;
var order = RegisterNewOrder(OrderDirections.Buy, Security.BestAsk.Price);
order.WhenMatched()
.Do(ClosePosition)
.Apply();
}
protected void ClosePosition()
{
var order = RegisterNewOrder(OrderDirections.Sell, Security.BestBid.Price);
order.WhenMatched()
.Do(() => _lock = false)
.Apply();
}
protected Order RegisterNewOrder(OrderDirections direction, decimal price)
{
var newOrder = this.CreateOrder(direction, price, Volume);
newOrder.ShrinkPrice();
newOrder.Security = Security;
while (!Trader.IsConnected) Trader.Reconnect();
base.RegisterOrder(newOrder);
return newOrder;
}
}
}
|
|
Thanks:
|
|
|
|
|
Igor123
|
Date: 11/8/2012
|
|
|
|
Та же самая проблема: при тестирование на истории выставляется лимитированная заявка, но она исполняется по невероятной цене , которой даже нет в истории, с проскальзыванием -1340
Номер сделки Номер транзакции Время Цена Цена заявки Объем Направление Номер заявки Проскальзывание Проскальзывание (котирование) Позиция 1257 194837 31.10.2012 20:32:32 141970 141970 1 Покупка 1350 0 0 0 1258 194838 31.10.2012 20:32:41 142030 142030 1 Покупка 1351 0 0 1 1259 194839 31.10.2012 20:32:59 142140 142140 1 Покупка 1352 0 0 2 1260 194840 31.10.2012 20:33:47 142800 142130 2 Продажа 1353 0 -1340 0 1261 194841 31.10.2012 20:35:37 142800 142010 1 Продажа 1354 0 -790 -1 1262 194842 31.10.2012 20:35:46 142080 142080 1 Покупка 1355 0 0 0
2012.10.31 20:33:47.000| |SS_RIZ2@RTS_test account|Заявка Sell цена 142130 количество 2 2012.10.31 20:33:47.000| |SS_RIZ2@RTS_test account|Новая Sell сделка 1260 по цене 142800 на 2 заявки 194840. 2012.10.31 20:33:47.000| |SS_RIZ2@RTS_test account|Новая позиция: test account-RIZ2@RTS=0. 2012.10.31 20:33:47.000| |SS_RIZ2@RTS_test account|Заявка 194840 больше не активна.
4.1.5 версия проблема как нить решена?
|
|
Thanks:
|
|
|
|
|
pyhta4og
|
Date: 11/9/2012
|
|
|
|
Yury Smykalov RIZ2@RTS Сделка №4178 из report.xls Дата сделки: 30.10.2012 10:10:35 Цена сделки: 142120 Цена заявки: 141870 Направление: Продажа Цена сделки выглядит очень странной, на фоне сохраненных сделок: Code
Time;Code;Price;Volume
30.10.2012 10:10:34,780;RIZ2@RTS;141870;5
30.10.2012 10:10:34,840;RIZ2@RTS;141870;4
30.10.2012 10:10:34,840;RIZ2@RTS;141870;1
30.10.2012 10:10:34,927;RIZ2@RTS;141870;3
30.10.2012 10:10:34,927;RIZ2@RTS;141870;2
30.10.2012 10:10:34,935;RIZ2@RTS;141870;3
30.10.2012 10:10:35,259;RIZ2@RTS;141870;1
30.10.2012 10:10:36,786;RIZ2@RTS;141860;1
30.10.2012 10:10:36,864;RIZ2@RTS;141860;1
30.10.2012 10:10:36,864;RIZ2@RTS;141860;2
30.10.2012 10:10:36,952;RIZ2@RTS;141860;1
30.10.2012 10:10:36,952;RIZ2@RTS;141860;1
30.10.2012 10:10:37,041;RIZ2@RTS;141860;1
И стаканов: Code
DepthTime;Code;BestBid;BestAsk
30.10.2012 10:10:34,897;RIZ2@RTS;141870;141880
30.10.2012 10:10:34,937;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,036;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,155;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,223;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,270;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,322;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,588;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,653;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,757;RIZ2@RTS;141860;141870
30.10.2012 10:10:35,942;RIZ2@RTS;141860;141870
30.10.2012 10:10:36,639;RIZ2@RTS;141860;141870
30.10.2012 10:10:36,704;RIZ2@RTS;141860;141870
30.10.2012 10:10:36,844;RIZ2@RTS;141860;141870
30.10.2012 10:10:36,885;RIZ2@RTS;141860;141870
30.10.2012 10:10:36,952;RIZ2@RTS;141850;141860
30.10.2012 10:10:37,099;RIZ2@RTS;141860;141870
Воспроизвел, будет фикс.
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 11/9/2012
pyhta4og Воспроизвел, будет фикс. Выложил на КодеПлекс.
|
|
Thanks:
|
|
|
|
|
khmike
|
Date: 11/9/2012
Mikhail Sukhov pyhta4og Воспроизвел, будет фикс. Выложил на КодеПлекс. Добрый день! Пришлите пожалуйста ссылку на версию с этим фиксом. А то я вижу последний update на coldplex - StockSharp 4.1.5 Oct 28, 2012 by mika_soukhov
|
|
Thanks:
|
|
|
|
|
Alexander
|
Date: 11/9/2012
khmike Mikhail Sukhov pyhta4og Воспроизвел, будет фикс. Выложил на КодеПлекс. Добрый день! Пришлите пожалуйста ссылку на версию с этим фиксом. А то я вижу последний update на coldplex - StockSharp 4.1.5 Oct 28, 2012 by mika_soukhov Смотрите в исходниках, в папке References. Тут
|
|
Thanks:
|
|
|
|
|
Yury Smykalov
|
Date: 11/10/2012
Проблема исправлена. Всем спасибо!
|
|
Thanks:
|
|
|
|
|
Igor123
|
Date: 11/14/2012
Yury Smykalov Проблема исправлена. Всем спасибо! У меня проблема не решилась, как было так и осталось, скачен был файл stocksharp-20984.zip и заменены файлы в Reference, что то не так?
|
|
Thanks:
|
|
|
|
|
Yury Smykalov
|
Date: 11/14/2012
Igor123 У меня проблема не решилась, как было так и осталось, скачен был файл stocksharp-20984.zip и заменены файлы в Reference, что то не так? Решение-то пересобрали после обновления dll-ек? Возможно, файлы библиотеки берутся по другому пути? Я обычно обновляю S#, копируя новое содержимое References прямо в папку bin/Debug, рядом с роботом. После пересборки решения подхватываются обновленные файлы.
|
|
Thanks:
|
|
|
|