← Back

работа со свечами!Обьясните пожалуйста как вообщем с ними работать?!

Здравствуйте Михаил. Обьясните пожалуйста как вообще работать со свечами меня волнует вопрос того как получить хотя бы high предыдущей свечи. Во всех других примерах ничего не смог найти ,везде только описания как строить эти свечи через какие то непонятные списки или сохранение их через гидру. Могли бы вы привести побольше примеров с работой со свечами.

Comments (21)

Login or Create account, Log in or register to leave a comment

Alexander
Alexander

samujan: Здравствуйте Михаил. Обьясните пожалуйста как вообще работать со свечами меня волнует вопрос того как получить хотя бы high предыдущей свечи. Во всех других примерах ничего не смог найти ,везде только описания как строить эти свечи через какие то непонятные списки или сохранение их через гидру. Могли бы вы привести побольше примеров с работой со свечами.

Описание свойств в документации Stock#

Самунджян Артем
Самунджян Артем Author

Alexander:

samujan: Здравствуйте Михаил. Обьясните пожалуйста как вообще работать со свечами меня волнует вопрос того как получить хотя бы high предыдущей свечи. Во всех других примерах ничего не смог найти ,везде только описания как строить эти свечи через какие то непонятные списки или сохранение их через гидру. Могли бы вы привести побольше примеров с работой со свечами.

Описание свойств в документации Stock# а нельзя просто пример получения цены за предыдущий бар?

Alexander
Alexander

samujan:

Alexander:

samujan: Здравствуйте Михаил. Обьясните пожалуйста как вообще работать со свечами меня волнует вопрос того как получить хотя бы high предыдущей свечи. Во всех других примерах ничего не смог найти ,везде только описания как строить эти свечи через какие то непонятные списки или сохранение их через гидру. Могли бы вы привести побольше примеров с работой со свечами.

Описание свойств в документации Stock# а нельзя просто пример получения цены за предыдущий бар?

var lastCandle = _candleManager.GetTimeFrameCandle(Security, TimeFrame, roundMarketTime);
var openPrice = lastCandle.OpenPrice;
var closePrice = lastCandle.ClosePrice;
.....

Самунджян Артем
Самунджян Артем Author

Alexander:

samujan:

Alexander:

samujan: Здравствуйте Михаил. Обьясните пожалуйста как вообще работать со свечами меня волнует вопрос того как получить хотя бы high предыдущей свечи. Во всех других примерах ничего не смог найти ,везде только описания как строить эти свечи через какие то непонятные списки или сохранение их через гидру. Могли бы вы привести побольше примеров с работой со свечами.

Описание свойств в документации Stock# а нельзя просто пример получения цены за предыдущий бар?

var lastCandle = _candleManager.GetTimeFrameCandle(Security, TimeFrame, roundMarketTime); var openPrice = lastCandle.OpenPrice; var closePrice = lastCandle.ClosePrice; .....

 СПАСИБО!
avkar
avkar

Тоже один раз сталкивался с такой задачей, что нужно получить предыдущую свечу. Хотя есть ссылка на последнюю свечу, для поиска предыдущей приходится получать и анализировать весь массив свечей. Было бы неплохо в классе Candle иметь методы (свойства), например, GetNextCandle и GetPriorCandle, для нахождения следующей и предыдущей свечи.

freelancer
freelancer

Здравствуйте. У меня свеча новая приходит только через 3 минуты после её открытия. Чем это может быть вызвано ?

Мне конкретно надо что бы OnProcess стратегии отрабатывался при открытии новой свечи

Alexander
Alexander

freelancer: Здравствуйте. У меня свеча новая приходит только через 3 минуты после её открытия. Чем это может быть вызвано ?

Мне конкретно надо что бы OnProcess стратегии отрабатывался при открытии новой свечи

А как отслеживается приход новой свечи? Какие свечи строятся?

freelancer
freelancer

Вызывается OnProcess - значит новая свеча. Или я ошибаюсь ?

У меня пятиминутки. Вызываю внутри метода:

// получаем сформированную свечку var candle = _candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, _nextTime - base.TimeFrame);

На часах 12:38, а candle = 12:30

Alexander
Alexander

freelancer: Вызывается OnProcess - значит новая свеча. Или я ошибаюсь ?

У меня пятиминутки. Вызываю внутри метода:

// получаем сформированную свечку var candle = _candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, _nextTime - base.TimeFrame);

На часах 12:38, а candle = 12:30

неверно. OnProcess вызывается раз в интервал - в тот, который вы задали. Если вы запустили стратегию в 10:08 с 5 минутным интервалом, то запускаться будет в 10:08, 10:13, 10:18, .... к свечам никак не привязано. нужно запускать чаще - уменьшайте интервал (но таймфрейм, при этом, может быть прежний - 5 минут)

хотите привязаться к свечам - используйте события генерации новых свечей.

freelancer
freelancer

Спасибо. А как правильно написать условие с использованием NewCandles ?

Alexander
Alexander

freelancer: Спасибо. А как правильно написать условие с использованием NewCandles ?

When(token.NewCandles()).Do(blablabla)

freelancer
freelancer

А можно ли внутри одного условия (допустим NewCandles) написать другое (Matched) ? Например появилась новая свеча, какие-то условия соблюдены и мы отсылаем заявку на вход в позицию и тут же подписываемся на Matched(эта_заявка). Внутри Do ставим стоп

Alexander
Alexander

freelancer: А можно ли внутри одного условия (допустим NewCandles) написать другое (Matched) ? Например появилась новая свеча, какие-то условия соблюдены и мы отсылаем заявку на вход в позицию и тут же подписываемся на Matched(эта_заявка). Внутри Do ставим стоп

Попробуйте, как раз узнаем ответ. :))

На мой взгляд можно.

freelancer
freelancer

Ну да. По сути это условие будет выполнено только 1 раз. А потом можно как то отписаться от проверки этого условия ? Или не нужно уже ?

Alexander
Alexander

freelancer: Ну да. По сути это условие будет выполнено только 1 раз. А потом можно как то отписаться от проверки этого условия ? Или не нужно уже ?

Добавьте ему Once()

freelancer
freelancer
this.
When(StrategyRuleConditionHelper.Matched(TargetOrder).Once()).
Do(() =>
{

});

Так ?

Alexander
Alexander

freelancer: ...

Так ?

this.
When(TargetOrder.Matched()).
Do(() =>
{
 
}).
Once();

в этом случае правило будет вызвано лишь 1 раз

freelancer
freelancer

TargetOrder.Matched() сработало, а Trader.GetPosition(Portfolio, Security) = null. Может как то иначе надо проверять позицию ?

Alexander
Alexander

Может у вас Portfolio \ Security другой в заявке? или обновиться не успела таблица

			return Trader.GetPosition(Portfolio, Security) != null
					   ? (int)Trader.GetPosition(Portfolio, Security).CurrentValue
					   : 0;

я вот так получаю позицию - всегда работает.

freelancer
freelancer

Скорее всего обновиться не успела. Можно это как-то подкрутить ?

Alexander
Alexander

freelancer: Скорее всего обновиться не успела. Можно это как-то подкрутить ?

Подкрутить что? Дождитесь пока будет не null.

Вывод по Dde не может гарантировать какая из таблиц обновится первой, какая - последней и как скоро это произойдёт - через 0.1 секунды или через 0.05 секунды.