← 戻る

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

подскажите пожалуйста как создать лимитную заявку чтобы она работала пробовал так: 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 задаю верно

このトピックは参考になりましたか?

トピックを共有

コメント (9)

ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください

Alexander
Alexander

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

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

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

fau
fau
fau 著者

Alexander Mukhanchikov: Если надо по myPrice - надо покупать в точке когда цена равна myPrice. А не в начале свечки какая-то странная лимитная заявка выходит, исполняется по текущей рыночной цене 😳 надеюсь все-таки что у меня с ExpiryDate ошибка Alexander Mukhanchikov: P.S. Отвечаю, т.к. была помощь по проекту с переписыванием примеров. На подобные вопросы отвечаем в техподдержке. если робот что-то заработает, и останутся вопросы, плавно перемещусь в техподдержку :)

fau
fau 著者

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

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

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

Mikhail Sukhov
Mikhail Sukhov

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

fau
fau 著者

Mikhail Sukhov: Чтобы примерно понять, что происходит. Есть ли какие то абсолютные значение? Цены, объемы, время... Или собрать минимальный код для воспроизведения ошибки. 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 Покупка

Mikhail Sukhov
Mikhail Sukhov

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

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

fau
fau 著者

Mikhail Sukhov: А где ошибка? Выставили по 10890 покупку. Но купили по 10836. Нормально явление, если стакан в этот момент были с лучшим офером на 10836. 😳 а смысл тогда вообще цену указывать, если покупка будет всегда по рыночной? и в чем разница между BuyAtLimit(myPrice) и BuyAtMarket() ?

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

Alexander
Alexander

fau:

Mikhail Sukhov: А где ошибка? Выставили по 10890 покупку. Но купили по 10836. Нормально явление, если стакан в этот момент были с лучшим офером на 10836. 😳 а смысл тогда вообще цену указывать, если покупка будет всегда по рыночной? и в чем разница между BuyAtLimit(myPrice) и BuyAtMarket() ?

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

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

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

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

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

fau
fau 著者

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