TakeProfitStrategy
Atom Ответить
23.11.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? как ее получить?

Теги:


Спасибо:




4 Ответов
Alex2

Фотография
Дата: 23.11.2010
Ответить


Также происходит ошибка при попытке поставить заявку на покупку из 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

Как все-таки поставить заявку?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 23.11.2010
Ответить


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


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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 23.11.2010
Ответить


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 был вызван?
Спасибо:

Alex2

Фотография
Дата: 24.11.2010
Ответить


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


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy