← Назад

TakeProfitStrategy

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

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

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

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

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

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

Комментарии (4)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

Alex2
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

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

Mikhail Sukhov
Mikhail Sukhov

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 был вызван?

Mikhail Sukhov
Mikhail Sukhov

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

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

Alex2
Alex2 Автор

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