← Назад

candleToken.PartiallyFinishedCandles не работает

Пробовал так:```csharp When<IEnumerable<Candle>>(candleToken.PartiallyFinishedCandles(99m))


Не срабатывает...

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

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

Alexander
Alexander

в чём выражается что не срабатывает? токен - какого типа?

freelancer
freelancer Автор

Просто ничего не происходит. Типа CandleToken. Или что вы имеете ввиду ?

Alexander
Alexander

Свечки TimeFrame? Или какой-то другой тип? VolumeCandle? ....

candleToken.CandleType чему равен?

freelancer
freelancer Автор

TimeFrame TimeFrameCandle

Alexander
Alexander

А если свечки другого типа - срабатывает?

freelancer
freelancer Автор

Я меня только этот тип

Alexander
Alexander

freelancer: Я меня только этот тип

C другим типом есть возможность попробовать?

Alexander
Alexander

И просьба включить Strategy.EnableRulesLog

freelancer
freelancer Автор

Со свечами другого типа не работал никогда...

Если у меня 15-ти минутки и я пишу candleToken.PartiallyFinishedCandles(99m), то правило у меня должно сработать за 9 секунд до окончания свечи ?

Alexander
Alexander

freelancer: Со свечами другого типа не работал никогда...

Если у меня 15-ти минутки и я пишу candleToken.PartiallyFinishedCandles(99m), то правило у меня должно сработать за 9 секунд до окончания свечи ?

по идее - да. а оно вообще не срабатывает?

freelancer
freelancer Автор

Написал в OnStarting так:

this.
When<IEnumerable<Candle>>(candleToken.PartiallyFinishedCandles(99m)).
Do(n =>
{

}).EnableLog(true);

В логе пусто

freelancer
freelancer Автор
candleToken = _candleManager.RegisterTimeFrameCandles(str.Security, str.TimeFrame);
Alexander
Alexander

Будет фикс в 4.0.13

fau
fau

Alexander Mukhanchikov: Будет фикс в 4.0.13 protected override void OnStarting() { this .When(_candleToken.PartiallyFinishedCandles(90m)) .Do(DoIt);

// this // .When(_candleToken.CandlesFinished()) // .Do(ProcessCandles);

		base.OnStarting();
	}

	private void DoIt()
	{
		WriteMsg("PartiallyFinishedCandles");
	}

4.0.16 лог пустой а CandlesFinished работает

Alexander
Alexander

fau:

Alexander Mukhanchikov: Будет фикс в 4.0.13 protected override void OnStarting() { this .When(_candleToken.PartiallyFinishedCandles(90m)) .Do(DoIt);

// this // .When(_candleToken.CandlesFinished()) // .Do(ProcessCandles);

  	base.OnStarting();
  }

  private void DoIt()
  {
  	WriteMsg("PartiallyFinishedCandles");
  }

4.0.16 лог пустой а CandlesFinished работает

какой токен?

fau
fau

Alexander Mukhanchikov: какой токен? делаю на основе Samples\Testing\SampleHistoryTesting
инструмент только поменял var security = new Security { Id = "SPFB.SBRF@RTS", Code = "SPFB.SBRF", Name = "SBRF", MinStepSize = 1, MinStepPrice = 1, Exchange = Exchange.Test, }; var timeFrame = TimeSpan.FromMinutes(5); var token = candleManager.RegisterTimeFrameCandles(security, timeFrame);

fau
fau

временный вариант: protected override void OnStarting() { this .When(_candleToken.CandlesChanged()) .Do(DoIt);

		base.OnStarting();
	}

	private void DoIt(IEnumerable<Candle> candles)
	{
		if (candles.Count() == 0) return;

		var candle = candles.ElementAt(candles.Count() - 1);

		if (DateTime.Compare(candle.Time.AddMinutes(4), this.Trader.MarketTime) < 0)
			// мы на последней минуте свечи
	}
Alexander
Alexander

Точно 4.0.16? Т.к. это правили уже с тестом на истории

fau
fau

Alexander Mukhanchikov: Точно 4.0.16? Т.к. это правили уже с тестом на истории да, архив StockSharp_4.0.16.zip

http://rghost.ru/35993817 если файлы закинуть в папку Samples\Testing\SampleHistoryTesting\ можно быстро проверить

кстати, можно добавить функцию GetVersion()

Alexander
Alexander

fau:

Alexander Mukhanchikov: Точно 4.0.16? Т.к. это правили уже с тестом на истории да, архив StockSharp_4.0.16.zip

http://rghost.ru/35993817 если файлы закинуть в папку Samples\Testing\SampleHistoryTesting\ можно быстро проверить

кстати, можно добавить функцию GetVersion()

спасибо за архив. зачем метод этот? можно просто в свойствах dll посмотреть :)

fau
fau

Alexander Mukhanchikov: зачем метод этот? можно просто в свойствах dll посмотреть :) какой именно dll? я наугад глянул штуки 3, не увидел версию т.е. были какие-то цифры, но ничего похожего на 4.0.16

Alexander
Alexander

fau:

Alexander Mukhanchikov: зачем метод этот? можно просто в свойствах dll посмотреть :) какой именно dll? я наугад глянул штуки 3, не увидел версию т.е. были какие-то цифры, но ничего похожего на 4.0.16

Любой относящийся к StockSharp: версия

fau
fau

проверил, точно 4.0.16 PartiallyFinishedCandles не работает

Alexander
Alexander

Не работает на истории, на реальных торгах работает. Связано с тем, что правило привязывается к настоящему времени, а не историческому.

Возможно будет фикс в 4.0, точно - в 4.1.

fau
fau
fau

небольшая проблема, лог: 20:48:28.038 | | SS | CandlePartiallyFinished 05.08.2011 10:10:00 20:48:28.038 | | SS | CandlesFinished 05.08.2011 10:05:00 20:48:28.063 | | SS | CandlePartiallyFinished 05.08.2011 10:15:00 20:48:28.064 | | SS | CandlesFinished 05.08.2011 10:10:00 20:48:28.085 | | SS | CandlePartiallyFinished 05.08.2011 10:20:00 20:48:28.085 | | SS | CandlesFinished 05.08.2011 10:15:00 20:48:28.124 | | SS | CandlePartiallyFinished 05.08.2011 10:25:00 20:48:28.125 | | SS | CandlesFinished 05.08.2011 10:20:00 20:48:28.150 | | SS | CandlePartiallyFinished 05.08.2011 10:30:00 20:48:28.151 | | SS | CandlesFinished 05.08.2011 10:25:00

WriteMsg("CandlePartiallyFinished " + Trader.MarketTime); WriteMsg("CandlesFinished " + candle.Time); процедуры вызываются в соответствующих методах

в первом случае, предположительно MarketTime должно быть 10:04:00, или я что-то не понимаю? проблема собственно в том, что заявки выставленные в CandlePartiallyFinished, похоже выполняются по цене которая была на момент MarketTime

fau
fau

fau: небольшая проблема, лог: 20:48:28.038 | | SS | CandlePartiallyFinished 05.08.2011 10:10:00 20:48:28.038 | | SS | CandlesFinished 05.08.2011 10:05:00 20:48:28.063 | | SS | CandlePartiallyFinished 05.08.2011 10:15:00 20:48:28.064 | | SS | CandlesFinished 05.08.2011 10:10:00 20:48:28.085 | | SS | CandlePartiallyFinished 05.08.2011 10:20:00 20:48:28.085 | | SS | CandlesFinished 05.08.2011 10:15:00 20:48:28.124 | | SS | CandlePartiallyFinished 05.08.2011 10:25:00 20:48:28.125 | | SS | CandlesFinished 05.08.2011 10:20:00 20:48:28.150 | | SS | CandlePartiallyFinished 05.08.2011 10:30:00 20:48:28.151 | | SS | CandlesFinished 05.08.2011 10:25:00

WriteMsg("CandlePartiallyFinished " + Trader.MarketTime); WriteMsg("CandlesFinished " + candle.Time); процедуры вызываются в соответствующих методах

в первом случае, предположительно MarketTime должно быть 10:04:00, или я что-то не понимаю? проблема собственно в том, что заявки выставленные в CandlePartiallyFinished, похоже выполняются по цене которая была на момент MarketTime это при тестировании на исторических данных

Alexander
Alexander

Что за "соответствующие методы"?

fau
fau

Alexander Mukhanchikov: Что за "соответствующие методы"? вот: protected override void OnStarting() { this .When(_candleToken.PartiallyFinishedCandles(95)) .Do(CandlePartiallyFinished);

		this
			.When(_candleToken.CandlesFinished())
			.Do(ProcessCandles);

		base.OnStarting();
	}

	private void CandlePartiallyFinished(IEnumerable<Candle> candles)
	{
		WriteMsg("CandlePartiallyFinished " + Trader.MarketTime);
	}
	private void ProcessCandles(IEnumerable<Candle> candles)
	{
		var candle = candles.Last();

		WriteMsg("CandlesFinished " + candle.Time);
	}
Alexander
Alexander

Чему равен MarketTimeChangedInterval? Сделал у себя MarketTimeChangedInterval = TimeSpan.FromSeconds(30) - и создал правило

	this.When(token.PartiallyFinishedCandles(50)).
		Do(() => Console.WriteLine(this.Trader.MarketTime));

стал каждые 2 минуты 30 секунд выводить сообщение, с правильным временем. Токен - от 5-минутных свечек.

fau
fau
fau

Alexander Mukhanchikov: Чему равен MarketTimeChangedInterval? Сделал у себя MarketTimeChangedInterval = TimeSpan.FromSeconds(30) - и создал правило

this.When(token.PartiallyFinishedCandles(50)).
	Do(() => Console.WriteLine(this.Trader.MarketTime));
> стал каждые 2 минуты 30 секунд выводить сообщение, с правильным временем.
> Токен - от 5-минутных свечек.
MarketTimeChangedInterval - как в SampleHistoryTesting, токен аналогичный
попробую вечером с 30 секундами
Alexander
Alexander

fau: MarketTimeChangedInterval - как в SampleHistoryTesting т.е. 5 минут. потому и менялось каждые 5 минут :)

fau
fau

Alexander Mukhanchikov:

fau: MarketTimeChangedInterval - как в SampleHistoryTesting т.е. 5 минут. потому и менялось каждые 5 минут :) теперь все в порядке, спасибо :)