stocksharp. StockSharphttps://stocksharp.ru/handlers/atom.ashx?category=tag&id=stocksharp&type=forum&page=27Copyright @ StockSharp Platform LLC 2010 - 20242024-03-28T09:50:11Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/topic/3282/MarketDepthsChanged !!!2012-12-27T17:52:08Z2012-12-27T17:52:08ZTik_Timehttps://stocksharp.ru/users/6440/info@stocksharp.ruДобрый вечер.<br />Помогите разобраться вот с чем.<br />Как подписаться на изменения котировок конкретного стакана?<br />Событие MarketDepthsChanged - подписывается на изменение последнего зарегистрированного стакана. А если я зарегистрировал их несколько (к примеру 3) как подписаться на изменение котировок 2-ого стакана? Или придется 2-ой стакан снова регистрировать и к нему уже подвязываться? <br />Как, к примеру, через Trader.MarketDepthsChanged += Changeddepths подписаться на изменение котировок нужного стакана, а не последнего?https://stocksharp.ru/topic/3280/Ыыыы2012-12-26T17:47:51Z2012-12-26T17:47:51ZVassilSanychhttps://stocksharp.ru/users/6491/info@stocksharp.ru<div class="quote"><span class="quotetitle">Цитата:</span><div class="innerquote">workingTime<br /> Тип: StockSharp.BusinessEntities.WorkingTime<br /> Информация о режиме работы биржы.</div></div><br /><br />:)<br /><br />https://stocksharp.ru/topic/3272/Как приостановить обновление CandleSeries на время своих операций.2012-12-23T19:22:59Z2012-12-23T19:22:59ZAndrew13https://stocksharp.ru/users/2974/info@stocksharp.ruДобрый вечер,<br /><br />И второй вопрос =)<br />У меня есть <br />CandleSeries series<br />мне нудно сделать несколько операций и чтобы пока они выполняются эти сами series не обновились(ну появится вдруг новая свечка). То есть мне важно чтобы они выполнились при одинаковых свечках.<br />Я использую Series.Security.BeginRead() но это останавливает только обновление самой Security, касается ли это свечек по Security я не уверен.<br /><br />И, естественное, важно не потерять данные в этих самых свечках, чтобы как я освободил доступ - все что пыталось обновить = спокойно обновилось. Потеря данных будет очень критична.<br /><br />Спасибо,<br /> Андрей.<br />https://stocksharp.ru/topic/3271/Учет Strategy.Position2012-12-23T19:18:00Z2012-12-23T19:18:00ZAndrew13https://stocksharp.ru/users/2974/info@stocksharp.ruДобрый вечер.<br /><br />Копался по хелпам - толком не понял.<br />Когда я запускаю стратегию - она автоматически ноль - так?<br />А дальше она смотрит по ордерам(или трейдам скорее всего - не суть), выставленными именно моей стратегией - так? То есть если другая стратегия изменит позицию(по тому же инструменту в том же портфеле), или я руками в терминале ордеры сделаю - она не поменяется?<br /><br />Как я понял ее можно поменять? (Ну опять же на старте мне надо будет ее инициализировать).<br /><br />И дочерние стратегии меняют ли позицию текущей стратегии, если я запущу квотирование, у меня базовая позиция поменяется или нет?<br /><br />Просто треба запускать несколько стратегий по одному инструменту и на 1 портфеле параллельно и независимо, и чтобы каждая внутри держала правильно именно внутреннюю свою позицию, но с учетом дочерних, которые каждая и делает.<br /><br />Спасибо,<br /> Андрей.<br />https://stocksharp.ru/topic/3256/Лицензия2012-12-18T20:28:10Z2012-12-18T20:28:10ZTik_Timehttps://stocksharp.ru/users/6440/info@stocksharp.ruДобрый вечер. <br />Помоги разобраться с получением и использованием лицензии.<br />При попытки получить лицензию самостоятельно - ничего не выходило (Выскакивала ошибка "Неверный логин или пароль")<br />Написал по почте на <a href="mailto:info@stocksharp.com">info@stocksharp.com</a>. Мне выслали лицензию на 1 год.<br />Я поместил полученный файл stocksharp_license.xml на диск С в папку StockSharp. Вроде бы все по инструкции, но она почему то не работает.<br />1. Подскажите, куда надо сохранять полученный файл?<br />2. Почему написанные ранее приводы не видят новую лицензию?https://stocksharp.ru/topic/3253/Закрытие позиций за 5 секунд до закрытия2012-12-17T20:55:39Z2012-12-17T20:55:39ZMenDelhttps://stocksharp.ru/users/6356/info@stocksharp.ruВсем привет, подскажите как сделать событие которое будет срабатывать за 5 секунд до закрытия вечерней сессии? Ориентируясь на время биржи.https://stocksharp.ru/topic/3251/GetCandles() возвращает не все свечки.2012-12-17T11:35:47Z2012-12-17T11:35:47ZAzathttps://stocksharp.ru/users/6131/info@stocksharp.ruДобрый день!<br /><br />1. Подключил файлы гидры в качестве источника<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
var storageRegistry = new StorageRegistry();
((LocalMarketDataDrive)storageRegistry.DefaultDrive).Path = @"C:\Hydra\";
var cbs = new TradeStorageCandleBuilderSource { StorageRegistry = storageRegistry };
_candleManager.Sources.OfType<TimeFrameCandleBuilder>().Single().Sources.Add(cbs);
</pre>
</div></div><br /><br />2. Создал series и запустил candleManager<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
var series = new CandleSeries(typeof(TimeFrameCandle), security, timeFrame);
_candleManager.Start(series, DateTime.Now - new TimeSpan(10,0,0,0), DateTime.MaxValue);
</pre>
</div></div><br />Если смотреть на событие Processing, то видно, что все свечки приходят нормально.<br /><br />Но, если вызвать series.GetCandles<TimeFrameCandle>(), то возвращает свечки только за текущую неделю.<br />Пробовал и диапазон дат указывать, и количество свечек передавать, все равно, только за эту неделю возвращает, не больше.<br /><br />В чем может быть проблема? https://stocksharp.ru/topic/3245/CandleSeries и WeightedIndexSecurity2012-12-16T20:19:45Z2012-12-16T20:19:45ZAlgonavthttps://stocksharp.ru/users/639/info@stocksharp.ruУмеет ли CandleSeries работать с BasketSecurity и его производными (например, WeightedIndexSecurity)? Теста ради написал простой обработчик свечек (см. ниже). Если в этом коде в строке <div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
_series = new CandleSeries(typeof(TimeFrameCandle), Security, TimeFrame)</pre>
</div></div> в качестве Security использовать WeightedIndexSecurity, то _series всегда будет пустым. При этом новые свечки в обработчик приходят исправно, и строка _message заполняется данными, которые выводятся в лог. SMA также рассчиывается (под отладчиком видно некоторые осмысленные значения), однако корректность расчета пока не проверял - для начала хочется уяснить про CandleSeries.<br /><br />Если в качестве Security указать обыкновенный инструмент (т.е. StockSharp.BusinessEntities.Security) - _candles заполняется отлично.<br /><br />Вопрос: умеет ли CandleSeries работать с WeightedIndexSecurity? Для чего это надо - например, к арбитражной стратегии прикрутить скользящую среднюю. Удобнее всего это делать через свечки, да и унификации хочется с кодом, который работает с единичными инструментами.<br /><br />Собственно, код:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
class WeightedSmaCandleStrategy : BasePortfolioStrategy
{
public TimeSpan TimeFrame { get; set; }
public int Length;
private CandleSeries _series;
DateTime strategyStartTime;
private SimpleMovingAverage Sma;
protected override void OnStarted()
{
if (TimeFrame == null)
throw new ApplicationException("Не задан таймфрейм!");
if (Length <= 0)
throw new ApplicationException("Не задан период скользящей средней!");
strategyStartTime = DateTime.Now;
base.OnStarted();
Sma = new SimpleMovingAverage() { Length = Length };
_series = new CandleSeries(typeof(TimeFrameCandle), Security, TimeFrame); // Если Security - это WeightedIndexSecurity, то _series не заполняется
_series.WorkingTime = WorkingTime;
_series
.WhenCandlesFinished()
.Do(ProcessCandle)
.Apply(this);
TraderBuilder.CandleManager.Start(_series);
}
private void ProcessCandle(Candle candle)
{
// если наша стратегия в процессе остановки
if (ProcessState == ProcessStates.Stopping)
{
// отменяем активные заявки
CancelActiveOrders();
return;
}
bool _canTrade = true;
Sma.Process(candle);
string _message;
// Исторические свечки просто запоминаем
if (candle.CloseTime < StartedTime)
{
_message = string.Format("Историческая свечка: Time: {0} O:{1} H:{1} L:{2} C:{3}", candle.OpenTime, candle.OpenPrice, candle.HighPrice, candle.LowPrice, candle.ClosePrice);
_canTrade = false;
//return;
}
else
_message = string.Format("Реальная свечка: Time: {0} O:{1} H:{1} L:{2} C:{3}", candle.OpenTime, candle.OpenPrice, candle.HighPrice, candle.LowPrice, candle.ClosePrice);
var _seriesCount = _series.GetCandleCount(); // В случае с WeightedIndexSecurity здесь всегда возвращается 0
var _smaValue = Sma.GetCurrentValue();
if (_seriesCount < Length)
{
//this.AddInfoLog(string.Format("GetCandleCount < Length. GetCandleCount = {0} Length = {1}", _seriesCount, Length));
//return;
_canTrade = false;
}
else
{
_message = string.Concat(_message, string.Format(" SMA={0}", _smaValue));
}
this.AddInfoLog(_message);
var _previousCandle = _series.GetCandle<TimeFrameCandle>(1);
if (_previousCandle != null)
{
if (candle.ClosePrice > _smaValue && _previousCandle.ClosePrice < _smaValue)
{
this.AddInfoLog("Пересечение снизу! CC={0} PC={1} SMA={2}", candle.ClosePrice, _previousCandle.ClosePrice, _smaValue);
if (_canTrade)
{
var _buyOrder = new Order()
{
Type = OrderTypes.Market,
Direction = OrderDirections.Buy,
Volume = Position != 0 ? 2 : 1
};
RegisterOrder(_buyOrder);
}
}
if (candle.ClosePrice < _smaValue && _previousCandle.ClosePrice > _smaValue)
{
this.AddInfoLog("Пересечение сверху! CC={0} PC={1} SMA={2}", candle.ClosePrice, _previousCandle.ClosePrice, _smaValue);
if (_canTrade)
{
var _sellOrder = new Order()
{
Type = OrderTypes.Market,
Direction = OrderDirections.Sell,
Volume = Position != 0 ? 2 : 1
};
RegisterOrder(_sellOrder);
}
}
}
}</pre>
</div></div>https://stocksharp.ru/topic/3242/IsTradeDate2012-12-15T10:54:57Z2012-12-15T10:54:57Zvk37https://stocksharp.ru/users/6296/info@stocksharp.ruОжидал, что такой код:<div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
Exchange.Rts.WorkingTime.IsTradeDate(DateTime.Today)</pre>
</div></div>на сегодняшней дате (15.12.12 сб) выдаст false. Метод возвращает, что сегодня торговый день. Так и должно быть?<br />https://stocksharp.ru/topic/3239/RSI.IsFormed команда IsFormed не работает в индикаторе RSI== помогите2012-12-14T14:31:31Z2012-12-14T14:31:31Zkapustin-vladimirhttps://stocksharp.ru/users/227/info@stocksharp.ruRSI.IsFormed команда IsFormed не работает в индикаторе RSI== помогите.. показывает все время falsehttps://stocksharp.ru/topic/3238/Роботом выставляем ордер->руками снимаем->считаем кол-во ордеров...2012-12-14T14:24:22Z2012-12-14T14:24:22Zadolfhttps://stocksharp.ru/users/27953/info@stocksharp.ruВсем желаю здравствовать<br /><br />Может кто знает как победить следующую проблему:<br />Случается, что СтокШарп говорит мне "У тебя есть активные ордера", когда их нет. Это происходит когда ордер выставляю прогой, а снимаю руками и иногда когда и ставлю и снимаю прогой (закономерность "когда именно" пока не нашел).<br />Считаю кол-во активных ордеров так: <br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
GuiTrader<QuikTrader> t = //всякий разный код
//всякий разный код
//всякий разный код
//всякий разный код
//всякий разный код
//всякий разный код
int count = t.Orders.Where(o => o.State == OrderState.Active).Count();
//случается так, что даже если активных ордеров нету, count > 0
</pre>
</div></div><br /><br />https://stocksharp.ru/topic/3236/Подскажите пожалуйста в какой библиотеке лежит TimeFrame2012-12-11T18:54:42Z2012-12-11T18:54:42Zkahunahttps://stocksharp.ru/users/16705/info@stocksharp.ruпишу<br />using Ecng.Common;<br />using Ecng.Collections;<br />using Ecng.Xaml;<br /><br />using StockSharp.BusinessEntities;<br />using StockSharp.Quik;<br />using StockSharp.Algo.Candles;<br />using StockSharp.Xaml;<br />using StockSharp.Logging;<br /><br />...<br />private TimeSpan _timeFrame; <br />_timeFrame=TimeFrame.Value.Value.TimeOfDay;<br /><br />получаю:<br />Элемент TimeFrame не существует в текущем контексте.<br /><br /><br />И вообще где найти описание этого класса?https://stocksharp.ru/topic/3234/Как получить тики за период?2012-12-11T11:28:39Z2012-12-11T11:28:39Zroofhttps://stocksharp.ru/users/16649/info@stocksharp.ruСобственно сабж интересует. Смысл вот в чем. Идет текущая сессия, хочу посчитать объёмы по направлению начиная с времени T по текущее время. Как это сделать?https://stocksharp.ru/topic/3233/стратегия на свечах для новичка2012-12-11T10:56:47Z2012-12-11T10:56:47Zwoodman11https://stocksharp.ru/users/28560/info@stocksharp.ruДобрый день!<br />Пытаюсь создать свечную стратегию.<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
class TestStrategy : Strategy
{
private readonly CandleSeries _series;
//private readonly CandleManager _candleManager;
private readonly Strategy _strategy;
private bool inDeal;
public TestStrategy(CandleSeries series)
{
_series = series;
}
private void OnNewOrderTrades(IEnumerable<MyTrade> trades)
{
foreach (MyTrade t in trades)
{
// выставляет тейк-профит в 40 пунктов
var takeProfit = new TakeProfitStrategy(t, 40);
// выставляет стоп-лосс в 20 пунктов
var stopLoss = new StopLossStrategy(t, 20);
var protectiveStrategy = new TakeProfitStopLossStrategy(takeProfit, stopLoss);
ChildStrategies.Add(protectiveStrategy);
}
}
protected override void OnStarted()
{
_series
.WhenCandlesFinished()
.Do(ProcessCandle)
.Apply(this);
base.OnStarted();
}
private void ProcessCandle(Candle candle)
{
// если наша стратегия в процессе остановки
if (ProcessState == ProcessStates.Stopping)
{
// отменяем активные заявки
CancelActiveOrders();
return;
}
if (!inDeal)
{
var order = this.BuyAtMarket(Volume);
order.WhenNewTrades().Do(OnNewOrderTrades).Apply(this);
}
}
}</pre>
</div></div><br /><br /><br />вопрос: Как правильно инициировать передачу новых свечей стратегии. пробую так:<br /><br /> <div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
_candleSeries = new CandleSeries(typeof(TimeFrameCandle), _instrument, _timeFrame);
// создаем торговую стратегию
_strategy = new TestStrategy(_candleSeries)
{
Volume = 1,
Security = _instrument,
Portfolio = _portfolio,
Trader = _trader,
};
_logManager.Sources.Add(_strategy);
_strategy.Log += OnLog;
_strategy.PropertyChanged += OnStrategyPropertyChanged;
_candlesElem = new ChartCandleElement();
// начинаем получать текущие сделки (для построения свечек реального времени)
_trader.RegisterTrades(_instrument);
// регистрируем запрос в SmartCOM для получения исторических данных по 5-минуткам за период в 5 дней
_trader.RegisterHistoryCandles(_instrument
, SmartTimeFrames.Minute5,
new Range<DateTime>(DateTime.Today - TimeSpan.FromDays(5), _instrument.GetMarketTime()));
_lastHistoryCandle = _timeFrame.GetCandleBounds(_instrument).Min;
}
if (_strategy.ProcessState == ProcessStates.Stopped)
{
// запускаем процесс получения стакана, необходимый для работы алгоритма котирования
_trader.RegisterMarketDepth(_strategy.Security);
_strategy.Start();
menuItemStart.Header = "Стоп";
}</pre>
</div></div><br /><br /><br />в итоге новые свечи в стратегию не поступают.https://stocksharp.ru/topic/3223/Метод GetCandles не возвращает статус2012-12-06T13:15:30Z2012-12-06T13:15:30Zvilhttps://stocksharp.ru/users/192/info@stocksharp.runamespace StockSharp.Algo.History.Finam<br />класс FinamHistorySource<br /><br />Метод GetCandles не возвращает статус свечи (сейчас они все None). Так было задумано?<br />Можно добавить в него сразу статус Finished, вроде мы и так получаем уже готовые свечки из истории, а то приходится полученный массив еще раз корректировать.https://stocksharp.ru/topic/3220/Вопрос по MarketQuotingStrategy2012-12-06T11:45:46Z2012-12-06T11:45:46Zproftshttps://stocksharp.ru/users/6174/info@stocksharp.ruперечитал всю документацию - но так и не нашел нужного... <br />можно ли сделать условие, чтобы MarketQuotingStrategy не переставляла заявку ниже(выше) определенной цены? <br />т.е. если я продаю и изначальная заявка выставляется, к примеру, по цене 146600, чтобы минимальная цена для котирования была 146550, после чего заявка оставалась стоять и не двигалась ниже? https://stocksharp.ru/topic/3214/delete2012-12-04T11:14:32Z2012-12-04T11:14:32Zdvorishttps://stocksharp.ru/users/5897/info@stocksharp.rudeletehttps://stocksharp.ru/topic/3213/не работает MarketQuotingStrategy2012-12-04T10:09:13Z2012-12-04T10:09:13ZAwarehttps://stocksharp.ru/users/6512/info@stocksharp.ruДоброе время суток, запустил алгоритм котирования на plaza, изменив пример, находящийся в StockSharp_4.1.6\Samples\Plaza\SampleGUI\<br />при работе на тестовом контуре, вопросов не возникает, работает все корректно, если переключить на бой, то при срабатывание ордера, котировщик пытает перерегистрировать ордер, или его отменить, если IsSupportAtomicReRegister = false, но ордер уже исполнен и отменять нечего, в логах собственно вываливаются warring "заявка в процессе снятия" или "заявка в процессе перерегистрации" и дальше никакие правила не срабатывают<br /><br />в чем может быть проблема ?https://stocksharp.ru/topic/3212/FileLogListener не пишет в файл события2012-12-04T07:07:08Z2012-12-04T07:07:08Zseashamanhttps://stocksharp.ru/users/772/info@stocksharp.ruОбновил с последней сборки библиотеки. Логер не пишет в файл события. Сам файл при этом создается. В мониторинге событий тоже информация отображается. Ничего не менял кроме библиотеки, на предыдущей версии все писалось штатно.https://stocksharp.ru/topic/3207/ошибка2012-12-02T18:55:13Z2012-12-02T18:55:13Zdk777https://stocksharp.ru/users/6164/info@stocksharp.ruНачал создавать проект с нуля по видео уроку, самую простенькую программу. В программировании слабоват)) Подскажите что это за ошибка, чего ему не хватает?<br /><br /><br />Ошибка 1 Тип "StockSharp.Logging.ILogSource" определен в сборке, ссылка на которую отсутствует. Следует добавить ссылку на сборку "StockSharp.Logging, Version=4.1.6.0, Culture=neutral, PublicKeyToken=null". C:\Users\Dimas\Desktop\StockSharp_4.1.6_Sources\.......<br /><br />Всего выплюнул 4 ошибки.[confused] <br /><br /><br /><br />