Прошу помощи: реализация stop и limit приказов, как они понимаются в WLD

Прошу помощи: реализация stop и limit приказов, как они понимаются в WLD
Atom
10/26/2011
Romant


Приветствую!

Я делаю первые шаги в освоении S# (в C++ и C# ориентируюсь), прошу помочь с вопросом, который может быть элементарным. Есть код для WLD3, который иллюстрирует использование stop и limit приказов, его нужно реализовать под S#:

Code

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# можно использовать как ещё один пример, включаемый в поставку библиотеки, поскольку на логическом скелете этого кода (перебор баров, ветки "если есть поза" и "если нет позы", стоп и лимт приказы) строится львиная доля систем, реализуемых в пакетах теханализа.

Заранее благодарен.

Tags:


Thanks:


1 2  >
frontman

Avatar
Date: 10/26/2011
Reply


А что именно то не понятно? Как стопы выставлять? Или лимитированные заявки? Потому что все остальное это уже C#...
Thanks:

Romant

Avatar
Date: 10/26/2011
Reply


У меня в голове цельная картина того, как правильно использовать S#, не собирается.

Чтобы она собралась, нужен листинг программы на шарпе с использованием S#, который бы реализовал описанную в терминах WLD3 логику. Документацию курил, пример с SMA курил - но собрать на основании этого систему с такой логикой, как в приведённом коде, не получается.
Thanks:

Alexander

Avatar
Date: 10/26/2011
Reply


Romant
У меня в голове цельная картина того, как правильно использовать S#, не собирается.

Чтобы она собралась, нужен листинг программы на шарпе с использованием S#, который бы реализовал описанную в терминах WLD3 логику. Документацию курил, пример с SMA курил - но собрать на основании этого систему с такой логикой, как в приведённом коде, не получается.


Давайте конкретно - в чём проблема. Где возникают ошибки
"Проблема со всем" - не проблема.
Thanks:

Romant

Avatar
Date: 10/26/2011
Reply


Хорошо.

Вопрос первый: как выставить в квик stop и limit ордера, чтобы они в квике отработали так же, как они работают при симуляции в WLD3 ? В WLD3 это работает так:

BuyAtLimit(Bar, Price) - купить бумагу по цене, меньшей или равной Price, в течение бара Bar; если купить не получилось и бар кончился, то ордер не срабатывает.
BuyAtStop(Bar, Price) - купить бумагу по цене, большей или равной Price, в течение бара Bar; если купить не получилось и бар кончился, то ордер не срабатывает.

Вопрос второй: как проконтролировать выполнение этих ордеров (сработали/не сработали) ?

Вопрос третий: каким вообще образом верно организовывать робота, который априори работает с барами, а не с тиками ? Это я про использование событийной модели или же модели дискретного опроса.

Спасибо.
Thanks:

Alexander

Avatar
Date: 10/26/2011
Reply


Romant
Хорошо.

Вопрос первый: как выставить в квик stop и limit ордера, чтобы они в квике отработали так же, как они работают при симуляции в WLD3 ? В WLD3 это работает так:

BuyAtLimit(Bar, Price) - купить бумагу по цене, меньшей или равной Price, в течение бара Bar; если купить не получилось и бар кончился, то ордер не срабатывает.
BuyAtStop(Bar, Price) - купить бумагу по цене, большей или равной Price, в течение бара Bar; если купить не получилось и бар кончился, то ордер не срабатывает.

Вопрос второй: как проконтролировать выполнение этих ордеров (сработали/не сработали) ?

Вопрос третий: каким вообще образом верно организовывать робота, который априори работает с барами, а не с тиками ? Это я про использование событийной модели или же модели дискретного опроса.

Спасибо.



1) смотрите пример выставления стоп заявок. сделайте им время жизни (ExpiryDate) до конца текущего бара. Либо отслеживайте время вручную и вызывайте CancelOrder
2) Документация, состояния заявок
3) см. пример SampleSMA
Thanks:

Romant

Avatar
Date: 10/26/2011
Reply


Александр,

Насколько я понимаю, авторы Stock# позиционируют данную библиотеку в качестве инструмента, достаточно простого в освоении, при условии знания C#. По моему опыту, миллиона вопросов можно избежать, сделав один пример, который бы включал в себя не только какой-то один компонент, а некую систему в совокупности. Это прекрасно, что Вы перечислили пункты (1), (2) и (3) - для меня это пока что ссылки на то, что я уже смотрел, но всё равно был вынужден задать вопрос на форуме.

В общем, спасибо :-)
Thanks:

Alexander

Avatar
Date: 10/26/2011
Reply


Romant
Александр,

Насколько я понимаю, авторы Stock# позиционируют данную библиотеку в качестве инструмента, достаточно простого в освоении, при условии знания C#. По моему опыту, миллиона вопросов можно избежать, сделав один пример, который бы включал в себя не только какой-то один компонент, а некую систему в совокупности. Это прекрасно, что Вы перечислили пункты (1), (2) и (3) - для меня это пока что ссылки на то, что я уже смотрел, но всё равно был вынужден задать вопрос на форуме.

В общем, спасибо :-)



Да, мы позиционируем Stock# как простую библиотеку для написания роботов.
Вы предлагаете нам написать примеры на все случаи жизни? Это не удастся сделать.
Что нам лучше - писать тысячи примеров или всё же вводить новую функциональность в Stock#, исправлять существующие проблемы?
Примеры может написать любой пользователь - пишите, мы их готовы включать в библиотеку. Примеры к тому же на codeplex все выложили - доступны для правки.

Не смотря на то что вы смотрели - у вас возникли вопросы. Так и с примерами - напишем, но будут спрашивать то, на что есть ответы в примерах или документации.

А так - тот десяток примеров, которые мы написали, покрывает половину случаев точно - и инструменты для тестирования, и опционов, и стратегии.
Thanks:

Romant

Avatar
Date: 10/26/2011
Reply


Я отдаю себе отчёт, что продукт бесплатен, но тем не менее ...

Поскольку я сам разработчик, мне понятно, почему Ваш ответ именно таков – но мне так же понятно, что причины этого ответа не в том, что всё время уходит на добавление фичей и правку багов, а в том, что саппортом девелоперу заниматься, как правило, не хочется. В переписке с одним из членов команды стокшарп, когда я пытался решить для себя, стоит ли инвестировать время в освоение продукта, было сказано, что на форуме, по мере возможности, поддержка юзеров осуществляется. Думаю, что Вы сами, как разработчик, едва ли будете вдохновлены ответом поддержки в стиле «мы очень заняты, делаем новые фичи, а вы читайте доку».
Thanks:

Alexander

Avatar
Date: 10/26/2011
Reply


Romant
Я отдаю себе отчёт, что продукт бесплатен, но тем не менее ...

Поскольку я сам разработчик, мне понятно, почему Ваш ответ именно таков – но мне так же понятно, что причины этого ответа не в том, что всё время уходит на добавление фичей и правку багов, а в том, что саппортом девелоперу заниматься, как правило, не хочется. В переписке с одним из членов команды стокшарп, когда я пытался решить для себя, стоит ли инвестировать время в освоение продукта, было сказано, что на форуме, по мере возможности, поддержка юзеров осуществляется. Думаю, что Вы сами, как разработчик, едва ли будете вдохновлены ответом поддержки в стиле «мы очень заняты, делаем новые фичи, а вы читайте доку».


Роман, думаю вы не будете спорить с тем, что у нас поддержка одна из лучших на российском рынке.
Покажите хоть сколько-нибудь похожее.

На какие вопросы я не ответил?
Если по 3му вопросу - то в SampleSma идёт именно работа с барами.
По 2му - чётко дан ответ по поводу того как понять исполнилась ли заявка, отменена ли или ещё что
По 1му - лимит и стоп ордера выставляются в большинстве примеров на квик. как сделать так чтоб снималась по истечению бара - дал 2 решения.

Что ещё?
Thanks:

Supervisor

Avatar
Date: 10/26/2011
Reply


Romant

Вопрос первый: как выставить в квик stop и limit ордера, чтобы они в квике отработали так же, как они работают при симуляции в WLD3 ? В WLD3 это работает так:

BuyAtLimit(Bar, Price) - купить бумагу по цене, меньшей или равной Price, в течение бара Bar; если купить не получилось и бар кончился, то ордер не срабатывает.
BuyAtStop(Bar, Price) - купить бумагу по цене, большей или равной Price, в течение бара Bar; если купить не получилось и бар кончился, то ордер не срабатывает.

Условно для BuyAtLimit(Bar, Price):
Code

var order = new Order
{
Portfolio = _portfolio,
Price = _price,
Security = _security,
Volume = 1,
Direction = OrderDirections.Buy,
CancelTime = _currentTime + _timeframe,
};
trader.RegisterOrder(order);

Для BuyAtStop несколько хитрее.
Thanks:
1 2  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy