Приветствую!
Я делаю первые шаги в освоении S# (в C++ и C# ориентируюсь), прошу помочь с вопросом, который может быть элементарным. Есть код для WLD3, который иллюстрирует использование stop и limit приказов, его нужно реализовать под S#:
var nPeriod: integer = 3;
var setEntry: integer = #Low;
var serExit: integer = #High;
var Bar: integer;
for Bar := nPeriod to BarCount() - 1 do
begin
if not LastPositionActive() then
begin
var fEnterLimitPrice: float = Highest(Bar, setEntry, nPeriod);
BuyAtLimit(Bar + 1, fEnterLimitPrice, 'Enter');
end
else
begin
var fExitStopPrice: float = Lowest(Bar, serExit, nPeriod);
SellAtStop(Bar + 1, fExitStopPrice, LastPosition(), 'Exit');
end;
end;
Пример со скользящей средней я смотрел, как на его основе сделать нужное не понял. Большая просьба к авторам библиотеки и ко всем, кто тайное знание уже постиг: не могли бы вы продемонстрировать, как логика, реализованная выше, должна выглядеть при использовании S# ? Мне кажется, что портирование такого кода под S# можно использовать как ещё один пример, включаемый в поставку библиотеки, поскольку на логическом скелете этого кода (перебор баров, ветки "если есть поза" и "если нет позы", стоп и лимт приказы) строится львиная доля систем, реализуемых в пакетах теханализа.
Заранее благодарен.
Comentarios (15)
Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario
А что именно то не понятно? Как стопы выставлять? Или лимитированные заявки? Потому что все остальное это уже C#...
У меня в голове цельная картина того, как правильно использовать S#, не собирается.
Чтобы она собралась, нужен листинг программы на шарпе с использованием S#, который бы реализовал описанную в терминах WLD3 логику. Документацию курил, пример с SMA курил - но собрать на основании этого систему с такой логикой, как в приведённом коде, не получается.
Давайте конкретно - в чём проблема. Где возникают ошибки "Проблема со всем" - не проблема.
Хорошо.
Вопрос первый: как выставить в квик stop и limit ордера, чтобы они в квике отработали так же, как они работают при симуляции в WLD3 ? В WLD3 это работает так:
BuyAtLimit(Bar, Price) - купить бумагу по цене, меньшей или равной Price, в течение бара Bar; если купить не получилось и бар кончился, то ордер не срабатывает. BuyAtStop(Bar, Price) - купить бумагу по цене, большей или равной Price, в течение бара Bar; если купить не получилось и бар кончился, то ордер не срабатывает.
Вопрос второй: как проконтролировать выполнение этих ордеров (сработали/не сработали) ?
Вопрос третий: каким вообще образом верно организовывать робота, который априори работает с барами, а не с тиками ? Это я про использование событийной модели или же модели дискретного опроса.
Спасибо.
Для BuyAtStop несколько хитрее.
var order = new Order { Portfolio = _portfolio, Price = _price, Security = _security, Volume = 1, Direction = OrderDirections.Buy, CancelTime = _currentTime + _timeframe, }; trader.RegisterOrder(order);
Александр,
Насколько я понимаю, авторы Stock# позиционируют данную библиотеку в качестве инструмента, достаточно простого в освоении, при условии знания C#. По моему опыту, миллиона вопросов можно избежать, сделав один пример, который бы включал в себя не только какой-то один компонент, а некую систему в совокупности. Это прекрасно, что Вы перечислили пункты (1), (2) и (3) - для меня это пока что ссылки на то, что я уже смотрел, но всё равно был вынужден задать вопрос на форуме.
В общем, спасибо :-)
Да, мы позиционируем Stock# как простую библиотеку для написания роботов. Вы предлагаете нам написать примеры на все случаи жизни? Это не удастся сделать. Что нам лучше - писать тысячи примеров или всё же вводить новую функциональность в Stock#, исправлять существующие проблемы? Примеры может написать любой пользователь - пишите, мы их готовы включать в библиотеку. Примеры к тому же на codeplex все выложили - доступны для правки.
Не смотря на то что вы смотрели - у вас возникли вопросы. Так и с примерами - напишем, но будут спрашивать то, на что есть ответы в примерах или документации.
А так - тот десяток примеров, которые мы написали, покрывает половину случаев точно - и инструменты для тестирования, и опционов, и стратегии.
Я отдаю себе отчёт, что продукт бесплатен, но тем не менее ...
Поскольку я сам разработчик, мне понятно, почему Ваш ответ именно таков – но мне так же понятно, что причины этого ответа не в том, что всё время уходит на добавление фичей и правку багов, а в том, что саппортом девелоперу заниматься, как правило, не хочется. В переписке с одним из членов команды стокшарп, когда я пытался решить для себя, стоит ли инвестировать время в освоение продукта, было сказано, что на форуме, по мере возможности, поддержка юзеров осуществляется. Думаю, что Вы сами, как разработчик, едва ли будете вдохновлены ответом поддержки в стиле «мы очень заняты, делаем новые фичи, а вы читайте доку».
Роман, думаю вы не будете спорить с тем, что у нас поддержка одна из лучших на российском рынке. Покажите хоть сколько-нибудь похожее.
На какие вопросы я не ответил? Если по 3му вопросу - то в SampleSma идёт именно работа с барами. По 2му - чётко дан ответ по поводу того как понять исполнилась ли заявка, отменена ли или ещё что По 1му - лимит и стоп ордера выставляются в большинстве примеров на квик. как сделать так чтоб снималась по истечению бара - дал 2 решения.
Что ещё?
😀
to Supervisor: большое спасибо.
Александр, не могли бы Вы точнее указать, где именно в архиве библиотеки можно посмотреть на пример выставления стоп-заявок ? А равно и лимтиных заявок, если такой пример есть.
Quik\Sample NewOrderWindow.xaml.cs и NewStopOrderWindow.xaml.cs
Стоп заявки тут. Лимитные есть в SampleSMA.