TakeProfitStrategy
Atom Reply
11/23/2010


Решил разобраться со стратегиями на примере SampleSmartSMA, а именно с TakeProfitStrategy и StopLossStrategy.

В доке написано(http://stocksharp.com/doc/help/html/63952fce-6e43-4427-985a-1654e8d9cfc1.htm):

// создаем пакетную стратегию из стратегий на тейк-профит и скользящего стоп-лосса
var takeStop = new BatchStrategy(BatchFinishModes.First) { IsParallel = true };
takeStop.ChildStrategies.Add(new TakeProfitStrategy(order));
takeStop.ChildStrategies.Add(new StopLossStrategy(order) { IsTrailing = true });

добавил этот код в SmaStrategy.cs - выдаются ошибки:
TakeProfitStrategy не содержит конструктор, который принимает аргументы "1"
то же самое и для StopLossStrategy

Как я понял, нужно вместо order передать trade - защищаемая позиция и priceDelta

На счет pricedelta - понятно вроде, а что такое trade? как ее получить?

Tags:


Thanks:




4 Answers
Alex2

Avatar
Date: 11/23/2010
Reply


Также происходит ошибка при попытке поставить заявку на покупку из SmaStrategy.cs обычным способом, а не через котирование:
var direction = OrderDirections.Buy;

// создаем заявку
var order = base.CreateOrder(direction, base.Security.GetMarketPrice(direction, MarketPriceTypes.Following), base.Volume);
base.RegisterOrder(order);

Ошибка такая: http://xmages.net/show.php/2070975_1-jpg.html

Захожу в смарттрейд - там есть эти отвергнутые заявки на покупку, а вместо цены стоит: LIMIT

Как все-таки поставить заявку?
Topic starter
Thanks:

Mikhail Sukhov

Avatar
Date: 11/23/2010
Reply


Alex2
На счет pricedelta - понятно вроде, а что такое trade? как ее получить?


Trade - это сделка по заявке, Order. Защищать нужно именно сделку, потому что она меняет позу, а не заявка... Получать сделку можно разными способами. Если используются стратегии, то Strategy.NewMyTrades.
Thanks:

Mikhail Sukhov

Avatar
Date: 11/23/2010
Reply


Alex2
Также происходит ошибка при попытке поставить заявку на покупку из SmaStrategy.cs обычным способом, а не через котирование:
var direction = OrderDirections.Buy;

// создаем заявку
var order = base.CreateOrder(direction, base.Security.GetMarketPrice(direction, MarketPriceTypes.Following), base.Volume);
base.RegisterOrder(order);

Ошибка такая: http://xmages.net/show.php/2070975_1-jpg.html

Захожу в смарттрейд - там есть эти отвергнутые заявки на покупку, а вместо цены стоит: LIMIT

Как все-таки поставить заявку?


TraderHelper.GetMarketPrice возвращает 0 в случае, если Security.BestBid/Ask.Price равны нулю... Изменения по инструменту поступают? RegisterSecurity был вызван?
Thanks:

Alex2

Avatar
Date: 11/24/2010
Reply


Спасибо Михаил, разобрался с вашей помощью. RegisterSecurity забыл вызвать.
Topic starter
Thanks:


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

loading
clippy