Сергей Гаврилов, [11.01.15 07:46]
Unregister(ы) вообще не останавливают поступление данных.. Послал эту ошибку в BagTracker..
Mikhail, [11.01.15 09:28]
Ишью закрыта. Это ошибка или ложная проблема?
Сергей Гаврилов, [11.01.15 11:56]
Ошибка. Нечаянно дубликат сделал, а как удалить не нашел.
Александр Спирин, [13.01.15 12:45]
Здравствуйте!
Помогите написать свой индикатор - не получается.
Наследуюсь от класса LengthIndicator<decimal> (ибо будет возвращаться одно числовое значение), поэтому метод OnProcess приобретает следующее описание: protected override IIndicatorValue OnProcess(IIndicatorValue input). Теперь хочу вернуть число типа decimal (return -1;) - и получаю ошибку компилятора - он не может преобразовать.
Как мне это преодолеть?
Сергей Гаврилов, [13.01.15 14:35]
Попробуйте так: return new DecimalIndicatorValue(Decimal value);
Сергей Гаврилов, [13.01.15 14:42]
Т.е. тип, который вы возвращаете, должен реализовывать интерфейс IIndicatorValue..
Александр Спирин, [13.01.15 17:21]
Сергей, спасибо - помогло.
Александр Спирин, [13.01.15 17:25]
Ещё одно затруднение у меня: взял проект SampleSmartSMA, скопировал его в другую директорию, и стал дописывать под свои нужды - он компилироваться перестал: в методе
private void MakeMarketOrder(Sides direction, decimal volume)
{
var price = direction == Sides.Buy ? Security.GetMarketDepth().BestAsk.Price : Security.GetMarketDepth().BestBid.Price;
var order = this.CreateOrder(direction, price, volume);
RegisterOrder(order);
}
метод GetMarketDepth() - не распознаётся компилятором, а текст ошибки такой:
Error 1 'StockSharp.BusinessEntities.Security' does not contain a definition for 'GetMarketDepth' and no extension method 'GetMarketDepth' accepting a first argument of type 'StockSharp.BusinessEntities.Security' could be found (are you missing a using directive or an assembly reference?) C:\Users\Александр\Documents\Visual Studio 2012\Projects\My\SampleSmartSMA\SuhovBandsStrategy.cs 266 50 SampleSmartSMA
Александр Спирин, [13.01.15 17:26]
Сколько я не проверял, состав библиотек в Reference проекта не изменился...
Александр Спирин, [13.01.15 17:26]
Что бы это могло значить?
Сергей Гаврилов, [13.01.15 17:27]
Насчет шаблона для Вашей стратегии... В репозитарии stosksharp.visualstudio.com я делаю проект с примером шаблона BasketMarketRulesTemplate. Он пока еще не работает, но сам принцип можете посмотреть..
Сергей Гаврилов, [13.01.15 17:28]
У класса Security есть свойства BestAsk/BestBid ими пользуйтесь
Александр Спирин, [13.01.15 17:28]
Спасибо - я обязательно посмотрю. Только доуступа к репозитарию у меня нет (( - я и писал сюда, и писал письмо на lesson@ - не помогает. Можете мне предоставить доступ? -
spirin.alexander@gmail.comСергей Гаврилов, [13.01.15 17:28]
метод GetMarketDepth теперь к классу Connector прикручен..
Сергей Гаврилов, [13.01.15 17:30]
Доступами не я занимаюсь это или Михаил или Юрий..
Александр Спирин, [13.01.15 17:36]
Я напишу ещё раз.
Александр Спирин, [13.01.15 17:36]
Сергей, снова что-то непонятное - компилтор не может найти файл с иконкой (тескт ошибки такой:
Error 1 Error generating Win32 resource: Error reading icon 'c:\Users\Александр\Documents\Visual Studio 2012\references\stocksharp.ico' — The system cannot find the path specified. C:\Users\Александр\Documents\Visual Studio 2012\Projects\My\SampleSmartSMA\obj\Debug\SampleSmartSMA.exe SampleSmartSMA
Александр Спирин, [13.01.15 17:37]
действительно, её и нет по этому пути - я вовсе удалил иконку из проекта, а ошибка остаётся...
Сергей Гаврилов, [13.01.15 17:37]
Там проблема в другом мелкосовт денег за репозитарий хочет..
Александр Спирин, [13.01.15 17:37]
Эо вполне в его стиле, но жить-то как?
Yury Basangov, [13.01.15 17:39]
Поэтому мы и перешли на выгрузку примеров.
Yury Basangov, [13.01.15 17:40]
В принципе можем дать доступ, но готовы ли вы за это платить? По сути вопрос то в этом, для нас нет ничего невозможного.
Александр Спирин, [13.01.15 17:41]
Это новая для меня постановка вопроса. А какова альтернатива?
Yury Basangov, [13.01.15 17:42]
Альтернатива это примеры в группе ВК. В целом они идентичны тому что есть в репозитарии
Александр Спирин, [13.01.15 17:44]
[ Photo ]
Александр Спирин, [13.01.15 17:44]
"Мы сами неместные..." - ссылку можете дать? Я не могу найти примеры
Сергей Гаврилов, [13.01.15 17:46]
Александр, репозитарий - это вообще-то инструмент для совместной разработки.. Он Вам в принципе не нужен.
Сергей Гаврилов, [13.01.15 17:49]
Если Вы хотите для себя использовать систему контроля версий TFS, то можете просто зарегить свой аккаунт и свой проект.. Это будет бесплатно..
Сергей Гаврилов, [13.01.15 17:49]
А этот пример, когда доделаю, выложу или здесь или в VK..
Александр Спирин, [13.01.15 17:52]
Да я не против, просто во многих местах на сайте написано ( и в видео-презентации на youtube) сказано, что доcтуп к исходникам даётся через репозитарий, и для получения доступа... - так я и начал делать. Раз по-другому - договорились, буду делать по-другому. Только объясните, как именно - не могу я найти в группе ВК примеры... И поясните, как я могу увидеть исходные коды самого S# - это имеет значение.
Сергей Гаврилов, [13.01.15 17:53]
В VK ищите раздел Документы..
Сергей Гаврилов, [13.01.15 17:54]
Доступа к исходным кодам самого S# нет...
Александр Спирин, [13.01.15 17:55]
ок, хотя бы с этим понятно.
Александр Спирин, [13.01.15 17:56]
Есть! - нашёл Документы... - там большой архив - его качать?
Сергей Гаврилов, [13.01.15 17:57]
В принципе когда со стратегиями будете на "ты", Вам нужно будет Shell изучить (он с исходниками)... и в него свои стратегии вставлять..
Сергей Гаврилов, [13.01.15 17:58]
То что с OL - это архив ордер-логов..
Сергей Гаврилов, [13.01.15 17:59]
Обновленные примеры в StockSharp.Edu.4.2.43.7z
Александр Спирин, [13.01.15 17:59]
да, я понял, что Shell предназначен для этого, только мне его даже скомпилировать не удаётся - пока: доберусь позже.
Сергей Гаврилов, [13.01.15 17:59]
Вот именно пока не заморачивайтесь..
Александр Спирин, [13.01.15 18:00]
так а что мне делать с этим ico-файлом, которого компилятор найти не может, хотя его и в проекте-то нет?
Сергей Гаврилов, [13.01.15 18:02]
Вы в поиске в "Пуск" попробуйте это файл найти
Сергей Гаврилов, [13.01.15 18:03]
и вставьте туда, куда он просит..
Александр Спирин, [13.01.15 18:04]
Да что его искать - он известно где, в папке References, рядом с библиотеками лежит... Вот только в проекте мне не удаётся изменить путь к нему: финальная попытка - я просто удалил его из проекта - и получил ошибку при компиляции. Ч то ещё можно попробовать?
Александр Спирин, [13.01.15 18:04]
Спасибо, с архивом получилось.
Сергей Гаврилов, [13.01.15 18:06]
Это пример, который с поставкой S# идет?
Александр Спирин, [13.01.15 18:09]
Да - это пример для Смарткома - SampleSmartSMA
Сергей Гаврилов, [13.01.15 18:19]
1. В свойствах проекта проверьте путь к этой иконке
Сергей Гаврилов, [13.01.15 18:20]
На закладке Application
Сергей Гаврилов, [13.01.15 18:21]
2. Потом проверьте свойства иконки в самом проекте
Сергей Гаврилов, [13.01.15 18:22]
Должно быть так Build Action = Resource
Сергей Гаврилов, [13.01.15 18:23]
И путь также в свойствах иконки проверьте..
Владимир (vow001) Русаков, [13.01.15 22:27]
Добрый вечер, подскажите, пожалуйста, можно ли как-нибудь при создании заявок в Квик указывать проскальзывание?
Сергей Гаврилов, [13.01.15 23:27]
Нет...
Сергей Гаврилов, [13.01.15 23:30]
Вы же сами можете указать в лимитке цену лучшей котировки +- смещение цены..
Владимир (vow001) Русаков, [13.01.15 23:31]
А, ясно. Спасибо
Денис (rtDen), [14.01.15 09:27]
Добрый день!
Денис (rtDen), [14.01.15 09:27]
Как сделать в стратегии чтоб какое-нибудь правило вызывалось постоянно (аналог таймера)?
Денис (rtDen), [14.01.15 09:28]
По моему в уроках что-то такое было, но не могу вспомнить сейчас
Денис (rtDen), [14.01.15 11:40]
не понимаю как until работает
Денис (rtDen), [14.01.15 11:40]
есть код:
Денис (rtDen), [14.01.15 11:40]
в стратегии
Денис (rtDen), [14.01.15 11:40]
protected override void OnStarted()
{
this.AddInfoLog("Старт пресчета позиции");
this.WhenStarted()
.Do(() => this.AddInfoLog("ttt"))
.Until(() => false)
.Apply(this);
base.OnStarted();
}
Денис (rtDen), [14.01.15 11:40]
почему в лог "ttt" выводится один раз только?
Сергей Гаврилов, [14.01.15 11:49]
так стратегия только один раз стартует
Денис (rtDen), [14.01.15 11:50]
да, я уже догадался - until это доп условие для выключение правила, а не зацикливание обработчика в do
Денис (rtDen), [14.01.15 11:50]
а что по поводу первого вопроса
Денис (rtDen), [14.01.15 11:51]
про "таймер"
Сергей Гаврилов, [14.01.15 11:51]
Так просто таймер сделать и надо..
Сергей Гаврилов, [14.01.15 11:51]
Или цикл...
Сергей Гаврилов, [14.01.15 11:51]
Другого способа нет..
Денис (rtDen), [14.01.15 11:53]
ок, почему то думал, что в примерах был какой-то механизм для этого
Денис (rtDen), [14.01.15 11:53]
сделаю циклом
Сергей Гаврилов, [14.01.15 11:54]
циклом можно, но цикл будет жрать много ресурсов..
Денис (rtDen), [14.01.15 11:54]
ну я же слип вставлю
Денис (rtDen), [14.01.15 11:54]
обработчик же в отдельном потоке вызывается?
Сергей Гаврилов, [14.01.15 11:55]
это зависит от того в каком потоке событие зажгли..
Сергей Гаврилов, [14.01.15 11:56]
А события правила?
Денис (rtDen), [14.01.15 11:56]
хм..ясно
Денис (rtDen), [14.01.15 11:57]
не понял вопрос..
Денис (rtDen), [14.01.15 11:57]
хочу сделать стратегию для пересчета моей позиции
Сергей Гаврилов, [14.01.15 11:57]
какой обработчик?
Денис (rtDen), [14.01.15 11:58]
сейчас думаю в на событие правила стратегии started в обработчике запустить бесконечный цикл с обсчетом
Денис (rtDen), [14.01.15 11:58]
и слипом в конце цикла
Сергей Гаврилов, [14.01.15 11:59]
А зачем этот цикл, когда есть правило на изменение позиции..
Денис (rtDen), [14.01.15 11:59]
позиция не меняется
Сергей Гаврилов, [14.01.15 12:00]
а чего пересчитывать, если не поменялась?
Денис (rtDen), [14.01.15 12:00]
это опционная позиция, меняется цена БА, волатильность на бирже
Денис (rtDen), [14.01.15 12:01]
а это вывод в терминал, суммарных греков и еще разных показателей
Денис (rtDen), [14.01.15 12:01]
сейчас работает просто в отдельном потоке, вот решил оформить код в виде стратегии
Сергей Гаврилов, [14.01.15 12:04]
Просто цикл не есть good practice
Денис (rtDen), [14.01.15 12:05]
а какой вариант?
Сергей Гаврилов, [14.01.15 12:06]
поза все равно меняется от каких-то условий, вот по этим событиям и вызывай пересчет..
Денис (rtDen), [14.01.15 12:06]
поза не меняется
Денис (rtDen), [14.01.15 12:06]
а условия которые меняется напозу - наоборот происходят постоянно, цена фьюча непрерывно ходит
Денис (rtDen), [14.01.15 12:07]
мне наоборот не надо так часто персчитывать
Денис (rtDen), [14.01.15 12:07]
достаточно раз в пару секунд
Денис (rtDen), [14.01.15 12:07]
не вижу, чем тут плох цикл
Сергей Гаврилов, [14.01.15 12:07]
тогда таймер - это лучше цикла..
Денис (rtDen), [14.01.15 12:07]
=) дак таймер это тот же цикл
Yury Basangov, [14.01.15 12:08]
привяжи к событию изменение цены фьюча больше чем на х% от последнего значения и тогда вызывай пересчет.
Yury Basangov, [14.01.15 12:08]
зачем каждый чих то персчитывать
Сергей Гаврилов, [14.01.15 12:08]
В нем не надо ставить цикл, он сам вызовется в фоновом потоке..
Денис (rtDen), [14.01.15 12:09]
меняется не только цена фьюча, меняются цены всех опционов, и их волатильности
Сергей Гаврилов, [14.01.15 12:11]
Sleep работу потока останавливает..., а таймер, который из theading в фоновом потоке работает и никаких циклов и доп потоков городить не надо..
Сергей Гаврилов, [14.01.15 12:12]
он ресурсов меньше съест..
Денис (rtDen), [14.01.15 12:13]
собственно у меня и был вопрос - обработчик события в отдельном потоке вызывается всегда или нет
Сергей Гаврилов, [14.01.15 12:14]
события правила?
Денис (rtDen), [14.01.15 12:14]
да
Денис (rtDen), [14.01.15 12:14]
ну если он вывзывается из того же потока, где зарейзили событие, то лучше естестественно запустить обсчет в отдельном потоке
Денис (rtDen), [14.01.15 12:14]
а на счет того - заюзать таймер или руками создать фоновый поток и в нем цикл запустить - это практически одно и то же
Сергей Гаврилов, [14.01.15 12:15]
в отдельном, но в этом же потоке и другие события приходят..
Денис (rtDen), [14.01.15 12:15]
таймер работат точно также, выполняет действие и вызывает слип в своем потоке
Денис (rtDen), [14.01.15 12:16]
разница в том, что таймер запускается в потоке из пула, а не создает новый, но при единичном экземпляре - это не важно совершенно
Сергей Гаврилов, [14.01.15 12:16]
таймер на более низком уровне арботает, он все равно будет эффективнее..
Денис (rtDen), [14.01.15 12:24]
ок, пусть будет таймер )
Сергей Гаврилов, [14.01.15 12:25]
И код будет проще..
Сергей Гаврилов, [14.01.15 12:37]
Кстати, в зацикленных потоках, наверно лучше не sleep, а WhiteOne пользовать..
Денис (rtDen), [14.01.15 12:39]
а разблокировать поток откуда?
Сергей Гаврилов, [14.01.15 12:39]
С аргументом
Денис (rtDen), [14.01.15 12:39]
а.. да, там же время можно передать
Денис (rtDen), [14.01.15 12:42]
может лучше... как-то не задумывался об этом
Денис (rtDen), [14.01.15 12:44]
надо будет почитать на досуге, про низкоуровеные различия таймеров, слипов, вэйтов и т.д.
Денис (rtDen), [14.01.15 12:45]
надеюсь дойдут руки когда-нибудь до этого
Александр Спирин, [14.01.15 21:02]
помогите pls нарисовать ленту Боллинджера на графике:
- рисуется вызовами
var bollValue = candle.State == CandleStates.Finished ? new ChartIndicatorValue(_strategy.BollBands, _strategy.BollBands.Process(candle)) : null;
_chart.Draw(candle.OpenTime, new Dictionary<IChartElement, object>
{
{ _candlesElem, candle },
{ _bollingerElem, bollValue },
{ _suppLevelsElem, suppValue },
{ _restLevelsElem, restValue },
});
- создаётся так:
_bollingerElem = new ChartIndicatorElement
{
Title = "Bollinger Bands",
//Indicator = new RateOfChange
Color = Colors.ForestGreen
};
_area.Elements.Add(_bollingerElem);
- падает с икслючением "не поддерживается":
System.NotSupportedException was unhandled by user code
Что с этим делать?
Сергей Гаврилов, [14.01.15 21:03]
Скачай новые примеры из VK, там по другому рисуется..
Александр Спирин, [14.01.15 21:04]
ок, спасибо - сейчас посмотрю...
Александр Спирин, [14.01.15 21:11]
угу, всё понял - спасибо!