Alexander
|
Дата: 03.06.2011
samujan  Здравствуйте Михаил. Обьясните пожалуйста как вообще работать со свечами меня волнует вопрос того как получить хотя бы high предыдущей свечи. Во всех других примерах ничего не смог найти ,везде только описания как строить эти свечи через какие то непонятные списки или сохранение их через гидру. Могли бы вы привести побольше примеров с работой со свечами. Описание свойств в документации Stock#
|
|
|
|
Самунджян Артем
|
Дата: 03.06.2011
Alexander  samujan  Здравствуйте Михаил. Обьясните пожалуйста как вообще работать со свечами меня волнует вопрос того как получить хотя бы high предыдущей свечи. Во всех других примерах ничего не смог найти ,везде только описания как строить эти свечи через какие то непонятные списки или сохранение их через гидру. Могли бы вы привести побольше примеров с работой со свечами. Описание свойств в документации Stock# а нельзя просто пример получения цены за предыдущий бар?
|
Автор топика
|
|
|
Alexander
|
Дата: 04.06.2011
samujan  Alexander  samujan  Здравствуйте Михаил. Обьясните пожалуйста как вообще работать со свечами меня волнует вопрос того как получить хотя бы high предыдущей свечи. Во всех других примерах ничего не смог найти ,везде только описания как строить эти свечи через какие то непонятные списки или сохранение их через гидру. Могли бы вы привести побольше примеров с работой со свечами. Описание свойств в документации Stock# а нельзя просто пример получения цены за предыдущий бар? Codevar lastCandle = _candleManager.GetTimeFrameCandle(Security, TimeFrame, roundMarketTime); var openPrice = lastCandle.OpenPrice; var closePrice = lastCandle.ClosePrice; .....
|
|
|
|
avkar
|
Дата: 04.06.2011
Тоже один раз сталкивался с такой задачей, что нужно получить предыдущую свечу. Хотя есть ссылка на последнюю свечу, для поиска предыдущей приходится получать и анализировать весь массив свечей. Было бы неплохо в классе Candle иметь методы (свойства), например, GetNextCandle и GetPriorCandle, для нахождения следующей и предыдущей свечи.
|
|
|
|
Самунджян Артем
|
Дата: 08.06.2011
Alexander  samujan  Alexander  samujan  Здравствуйте Михаил. Обьясните пожалуйста как вообще работать со свечами меня волнует вопрос того как получить хотя бы high предыдущей свечи. Во всех других примерах ничего не смог найти ,везде только описания как строить эти свечи через какие то непонятные списки или сохранение их через гидру. Могли бы вы привести побольше примеров с работой со свечами. Описание свойств в документации Stock# а нельзя просто пример получения цены за предыдущий бар? Codevar lastCandle = _candleManager.GetTimeFrameCandle(Security, TimeFrame, roundMarketTime); var openPrice = lastCandle.OpenPrice; var closePrice = lastCandle.ClosePrice; .....
СПАСИБО!
|
Автор топика
|
|
|
freelancer
|
Дата: 21.07.2011
Здравствуйте. У меня свеча новая приходит только через 3 минуты после её открытия. Чем это может быть вызвано ?
Мне конкретно надо что бы OnProcess стратегии отрабатывался при открытии новой свечи
|
|
|
|
Alexander
|
Дата: 21.07.2011
freelancer  Здравствуйте. У меня свеча новая приходит только через 3 минуты после её открытия. Чем это может быть вызвано ?
Мне конкретно надо что бы OnProcess стратегии отрабатывался при открытии новой свечи А как отслеживается приход новой свечи? Какие свечи строятся?
|
|
|
|
freelancer
|
Дата: 21.07.2011
Вызывается OnProcess - значит новая свеча. Или я ошибаюсь ?
У меня пятиминутки. Вызываю внутри метода:
// получаем сформированную свечку var candle = _candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, _nextTime - base.TimeFrame);
На часах 12:38, а candle = 12:30
|
|
|
|
Alexander
|
Дата: 21.07.2011
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
|
Дата: 21.07.2011
Спасибо. А как правильно написать условие с использованием NewCandles ?
|
|
|
|
Alexander
|
Дата: 21.07.2011
freelancer  Спасибо. А как правильно написать условие с использованием NewCandles ? When(token.NewCandles()).Do(blablabla)
|
|
|
|
freelancer
|
Дата: 22.07.2011
А можно ли внутри одного условия (допустим NewCandles) написать другое (Matched) ? Например появилась новая свеча, какие-то условия соблюдены и мы отсылаем заявку на вход в позицию и тут же подписываемся на Matched(эта_заявка). Внутри Do ставим стоп
|
|
|
|
Alexander
|
Дата: 22.07.2011
freelancer  А можно ли внутри одного условия (допустим NewCandles) написать другое (Matched) ? Например появилась новая свеча, какие-то условия соблюдены и мы отсылаем заявку на вход в позицию и тут же подписываемся на Matched(эта_заявка). Внутри Do ставим стоп Попробуйте, как раз узнаем ответ. :)) На мой взгляд можно.
|
|
|
|
freelancer
|
Дата: 22.07.2011
Ну да. По сути это условие будет выполнено только 1 раз. А потом можно как то отписаться от проверки этого условия ? Или не нужно уже ?
|
|
|
|
Alexander
|
Дата: 22.07.2011
freelancer  Ну да. По сути это условие будет выполнено только 1 раз. А потом можно как то отписаться от проверки этого условия ? Или не нужно уже ? Добавьте ему Once()
|
|
|
|
freelancer
|
Дата: 22.07.2011
Code
this.
When(StrategyRuleConditionHelper.Matched(TargetOrder).Once()).
Do(() =>
{
});
Так ?
|
|
|
|
Alexander
|
Дата: 22.07.2011
freelancer  Code
this.
When(StrategyRuleConditionHelper.Matched(TargetOrder).Once()).
Do(() =>
{
});
Так ? Code
this.
When(TargetOrder.Matched()).
Do(() =>
{
}).
Once();
в этом случае правило будет вызвано лишь 1 раз
|
|
|
|
freelancer
|
Дата: 22.07.2011
TargetOrder.Matched() сработало, а Trader.GetPosition(Portfolio, Security) = null. Может как то иначе надо проверять позицию ?
|
|
|
|
Alexander
|
Дата: 22.07.2011
Может у вас Portfolio \ Security другой в заявке? или обновиться не успела таблица Code
return Trader.GetPosition(Portfolio, Security) != null
? (int)Trader.GetPosition(Portfolio, Security).CurrentValue
: 0;
я вот так получаю позицию - всегда работает.
|
|
|
|
freelancer
|
Дата: 22.07.2011
Скорее всего обновиться не успела. Можно это как-то подкрутить ?
|
|
|
|
Alexander
|
Дата: 22.07.2011
freelancer  Скорее всего обновиться не успела. Можно это как-то подкрутить ? Подкрутить что? Дождитесь пока будет не null. Вывод по Dde не может гарантировать какая из таблиц обновится первой, какая - последней и как скоро это произойдёт - через 0.1 секунды или через 0.05 секунды.
|
|
|