Вопрос про лимитные заявки


Вопрос про лимитные заявки
Atom
1/17/2012


fau

Avatar
подскажите пожалуйста как создать лимитную заявку чтобы она работала
пробовал так:
1)
var order = this.BuyAtLimit(myPrice);
order.ExpiryDate = candle.Time + _timeSpan;
RegisterOrder(order);
2)
var order = new Order
{
Portfolio = Portfolio,
Price = myPrice,
Security = Security,
Volume = 1,
Direction = OrderDirections.Buy,
ExpiryDate = candle.Time + _timeSpan
};
RegisterOrder(order);
3)
var order = new Order
{
Portfolio = Portfolio,
Price = myPrice,
Security = Security,
Volume = 1,
Direction = OrderDirections.Buy,
ExpiryDate = candle.Time + _timeSpan
};
var strategy1 = new LimitQuotingStrategy(order);
ChildStrategies.Add(strategy1);

в первых 2-х примерах пробовал и через котирование
во всех 3-х случаях была покупка по цене открытия
цена myPrice входит в Low/High диапазон свечи, т.е. заявка по идее должна исполниться
ExpiryDate задаю верно



Thanks:


Alexander

Avatar
Date: 1/17/2012
Reply


ExpiryDate - в датах, а не времени
Если цена открытия лучше myPrice - мы и покупаем по цене открытия.

Если надо по myPrice - надо покупать в точке когда цена равна myPrice. А не в начале свечки


P.S. Отвечаю, т.к. была помощь по проекту с переписыванием примеров. На подобные вопросы отвечаем в техподдержке.
Thanks: fau

fau

Avatar
Date: 1/17/2012
Reply


Alexander Mukhanchikov Go to

Если надо по myPrice - надо покупать в точке когда цена равна myPrice. А не в начале свечки

какая-то странная лимитная заявка выходит, исполняется по текущей рыночной цене [blink]
надеюсь все-таки что у меня с ExpiryDate ошибка
Alexander Mukhanchikov Go to

P.S. Отвечаю, т.к. была помощь по проекту с переписыванием примеров. На подобные вопросы отвечаем в техподдержке.

если робот что-то заработает, и останутся вопросы, плавно перемещусь в техподдержку :)
Thanks:

fau

Avatar
Date: 1/17/2012
Reply


Alexander Mukhanchikov Go to
Если цена открытия лучше myPrice - мы и покупаем по цене открытия.

в том-то и дело что хуже

Alexander Mukhanchikov Go to
Если надо по myPrice - надо покупать в точке когда цена равна myPrice. А не в начале свечки

ок, сделал чтобы не в начале
примерно получилось так:
this
.When(base.Security.BestBidPriceMore(new Unit(myPrice, UnitTypes.Limit)))
.Do(GoSell)
.Periodical(GetState);
получается я сначала жду цену, потом выставляю заявку, а мне всего-то надо как в терминале выставить заявку по конкретной цене

Alexander Mukhanchikov Go to
P.S. Отвечаю, т.к. была помощь по проекту с переписыванием примеров. На подобные вопросы отвечаем в техподдержке.

ну возможно кто-то еще ответит, лимитные заявки-то я думаю многие используют
Thanks:

Mikhail Sukhov

Avatar
Date: 1/17/2012
Reply


Чтобы примерно понять, что происходит. Есть ли какие то абсолютные значение? Цены, объемы, время... Или собрать минимальный код для воспроизведения ошибки.
Thanks: fau

fau

Avatar
Date: 1/17/2012
Reply


Mikhail Sukhov Go to
Чтобы примерно понять, что происходит. Есть ли какие то абсолютные значение? Цены, объемы, время... Или собрать минимальный код для воспроизведения ошибки.

http://rghost.ru/35959763 тут код с 4-мя вариантами
сделано на основе Samples\Testing\SampleHistoryTesting, можно туда же закинуть и вопроизвести
я тестил на сберофьюче за один день:
var security = new Security
{
Id = "SPFB.SBRF@RTS",
Code = "SPFB.SBRF",
Name = "SBRF",
MinStepSize = 1,
MinStepPrice = 1,
Exchange = Exchange.Test,
};
заявка:
Покупка 17.01.2011 10:05:01 10890,00000 10836,00000 Не активна Исполнена
сделка:
17.01.2011 10:05:01 10836,00000 1 Покупка
Thanks:

Mikhail Sukhov

Avatar
Date: 1/18/2012
Reply


fau Go to
заявка:
Покупка 17.01.2011 10:05:01 10890,00000 10836,00000 Не активна Исполнена
сделка:
17.01.2011 10:05:01 10836,00000 1 Покупка


А где ошибка? Выставили по 10890 покупку. Но купили по 10836. Нормально явление, если стакан в этот момент были с лучшим офером на 10836.
Thanks: fau

fau

Avatar
Date: 1/18/2012
Reply


Mikhail Sukhov Go to

А где ошибка? Выставили по 10890 покупку. Но купили по 10836. Нормально явление, если стакан в этот момент были с лучшим офером на 10836.

[blink]
а смысл тогда вообще цену указывать, если покупка будет всегда по рыночной?
и в чем разница между BuyAtLimit(myPrice) и BuyAtMarket() ?

ладно, пускай это будет нормально, есть ли какое-то стандартное решение для того чтобы купить по 10890 если позволяет цена?
вариант 4 в файле подойдет?
Thanks:

Alexander

Avatar
Date: 1/18/2012
Reply


fau Go to
Mikhail Sukhov Go to

А где ошибка? Выставили по 10890 покупку. Но купили по 10836. Нормально явление, если стакан в этот момент были с лучшим офером на 10836.

[blink]
а смысл тогда вообще цену указывать, если покупка будет всегда по рыночной?
и в чем разница между BuyAtLimit(myPrice) и BuyAtMarket() ?

ладно, пускай это будет нормально, есть ли какое-то стандартное решение для того чтобы купить по 10890 если позволяет цена?
вариант 4 в файле подойдет?


Смысл в следующем.
Вы когда торгуете на рынке, пусть лучшая цена в стакане на продажу 105.
Вы посылаете: купить по 110.

Вы купите именно по 105, т.к. это будет лучшая цена.

Если в стакане лучшая цена на продажу равна 115, то ваша заявка выставится лимиткой в стакан по цене 110.


Тестирование происходит ровно таким же образом, всё в точности как и на настоящем рынке.
Thanks: fau

fau

Avatar
Date: 1/18/2012
Reply


разобрался :)
спасибо за ответы!
Thanks:


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

loading
clippy