Что-то не понятное всё-таки с методом GetTimeFrameCandles. Посмотрел все ветки форума на эту тему ответа не нашёл.
- Берём пример SampleSMA.
- Открываем SMAStrategy.cs и в метод OnRunning, перед строкой base.OnRunning(); дописываем:
var candlesForTest = _candleManager.GetTimeFrameCandles(base.Security, TimeSpan.FromMinutes(5), 14);
Т.е. я пытаюсь получить 14 последних 5-ти минутных свечек.
Так вот, candlesForATR.Count() всегда равна нулю... Что я делаю не так?
Может быть это из-за того что счёт учебный на терминале Quik-Junior?
Версия StockSharp 2.5.1
Comments (29)
Login or Create account, Log in or register to leave a comment
_candleManager.RegisterCandles вызывается? Экспорт тиков идет?
т.е. candles пуст.
// начинаем вычислять скользящие средние foreach (var candle in candles) { _strategy.LongSma.Add(candle); _strategy.ShortSma.Add(candle);
var candles = File.ReadAllLines("LKOH_history.txt").Select(line =>
Смотря как делать. В примере SampleSMA история берется из текстового файла. Мы сейчас говорим о примере или о вообще?
Наверное всё же "вообще". Моя задача - получить 14 последних баров. Разве вызвать StartExport() и зарегистрировать TimeFrame недостаточно? Ещё надо что-то делать?
Если 14 5-минуток то история не нужна. Тогда я не понимаю, зачем Вы привели тот кусок кода, который вам не нужен. Выкиньте его. Я пример скорее всего придется переделать, так как там много мест на историю завязано.
Да, с куском кода я действительно попал пальцем в небо. :)
Через _candleManager.GetTimeFrameCandles но только после того, как они построятся. А в реальном приложении нужно использовать _candleManager.NewCandles.
CandleManager.NewCandles
я вот так делаю в стратегиях:
Нет, не то. Попробую сформулировать вопрос по другому.
В первых двух случаях candles.Count() равно 1, что логично. В третьем равно количеству минут прошедших со старта робота. Т.е. изначально свечей нет вообще и появляются они только во время работы робота. Мне же нужно получить 14 свечей которые были ДО старта робота. Нужно это для инициализации индикатора. Как быть?
Нельзя получить свечки за другой день напрямую (т.к. они строятся из всех сделок). Чтобы это всё же сделать - пишешь код на qpile, добавляешь в квике таблицу-портфель и уже её экспортируешь.
🤨 🤨 🤨 🤨 И что нет другого non-hemorrhoids-way?
Ключевое выражение - старт робота. Оно неправильное. Робот - это программа. А данные нужны стратегии (программа может иметь от 0 до N стратегий). Поэтому регистрацию свечек нужно запускать после подключения программы к Квику, но до запуска самой стратегии. О стратегиях написано в документации.
Запускать робот после 10:30 + 14 * 5. или брать историю откуда то извне (например, как я сделал это в примере).
А если свечки, к примеру, минутки, не нужны активным стратегиям? У меня, к примеру, есть стратегии на 5-минутках, есть на минутках. Запускаю регистрацию свечек как раз во время старта стратегий сейчас (т.к. в настройках робота могут быть минутные стратегии выключены, зачем тогда их регистрировать?). Или они в любом случае занимают мало ресурсов, поэтому можно спокойно регистрировать всё, что только может потенциально понадобиться?
Кушаем много только старт. Потом все работает как обычно. Плюс у свечек свой поток, а у стратегий свои.
у меня тоже не получается экспортировать свечки. запускаю пример SampleCandles. Во-первых, не всегда загружется список инструментов, иногда вместо названий инструментов загружаются числа и пустые строки. Во-вторых, событие NewCandles не вызывается. что может быть не так?
вот картиночка http://www.sharemania.ru/0122592
Экспорт по тикам идет? В таблице Все сделки стоит фильтр для нужного инструмента (по которому свечки строятся)?
Такие картинки заливайте лучше на этот форум.
Названия у инструментов не обновляется (только визуально, в программе все должно нормально быть), потому что это особенность WPF. Надо по другому строить ГУИ интерфейс, но так как для роботов это не критично, я этим пока не занимался.
Фильтр стоит по лукойлу и сбербанку. жэкспорт не идет почему-то. событие NewCandles не вызывается
Скорее всего, ITrader.NewTrades не идет. Посмотрите, ITrader.ProcessDataError что нибудь выводит?
пишет "Данные для таблицы 'инструменты' экспортировались в меньшем формате. Не было найдено значение для колонки 'Точность цены'. Количество колонок равно '15', индекс колонки '17'."
т.е. не все колонки в инструментах стоят? можете пречислить их все. я пользовался файлом конфигурации, вязтый с вашего сайта
http://stocksharp.com/doc/help/html/5c13da7b-b6e4-4fd4-958a-66c93c58b941.htm
Какой именно файл (их несколько) и какие площадки подключены.
Площадка ММВБ. Обновил файл. сейчас правильно стали инструменты подгружаться, а свечки все равно не экспортируются. сообщений об ошибках нет
какой именно файл?
Спасибо!!!!!!!!! Все заработало!