Не могу понять почему не видно свечей
Atom Ответить
08.01.2013


Пишу каркас для торговой стратегии.

Вот так создаю свечи:
Код

public partial class MainWindow : Window
    {

        // Объявление переменных
       
        private CandleManager _candleManager; // менеджер свечек

private void Connect_Click(object sender, RoutedEventArgs e)   // жму на кнопку подключения
        {

                _candleManager = new CandleManager(_trader); // создаем менеджер свечек для Трейдера

                _candleManager.Processing += DrawCandle; // подписываемся на событие

private void StartRobo_Click(object sender, RoutedEventArgs e)  // жму на кнопку запуска страты
        {

               CandleSeries series;

                series = new CandleSeries(typeof(TimeFrameCandle), _security, _timeFrame);

                _candleManager.Start(series);
                
                Label3.Content = Convert.ToString(series.GetCandle<TimeFrameCandle>(1).ClosePrice);


При запуске стратегии выскакивает вот такая ошибка

An unhandled exception of type 'System.NullReferenceException' occurred in WpfApplication1.exe

Additional information: Ссылка на объект не указывает на экземпляр объекта.


Не знаю что и делать. Я так понял что свечи не экспортируются.

Какой экземпляр я не создал?

Что делать?

Код основного окна


Код стратегии

Теги:


Спасибо:




5 Ответов
VassilSanych

Фотография
Дата: 08.01.2013
Ответить


RoboKrolik Перейти
Что делать?

Смотреть stack trace
Спасибо:

RoboKrolik

Фотография
Дата: 08.01.2013
Ответить


VassilSanych Перейти
RoboKrolik Перейти
Что делать?

Смотреть stack trace


Выдает вот такое когда свечи хочу отрисовать:
_chart.ProcessCandle((ChartCandleElement)_chart.Areas[0].Elements[0], candle);

> WpfApplication1.exe!WpfApplication1.MainWindow.DrawCandle.AnonymousMethod__6() Line 105 + 0x31 bytes C#


Или вот такое когда хочу цену закрытия получить свечи:
Label3.Content = Convert.ToString(series.GetCandle<TimeFrameCandle>(1).ClosePrice);

> WpfApplication1.exe!WpfApplication1.MainWindow.StartRobo_Click(object sender, System.Windows.RoutedEventArgs e) Line 169 + 0x28 bytes C#
Автор топика
Спасибо:

Геннадий Ванин (Gennady Vanin)

Фотография
Дата: 08.01.2013
Ответить


RoboKrolik Перейти

Выдает вот такое когда свечи хочу отрисовать:
_chart.ProcessCandle((ChartCandleElement)_chart.Areas[0].Elements[0], candle);

А вы вообще нигде не добавляете элементы в _chart.Areas[0] ?!

RoboKrolik Перейти
Или вот такое когда хочу цену закрытия получить свечи:
Label3.Content = Convert.ToString(series.GetCandle<TimeFrameCandle>(1).ClosePrice);

> WpfApplication1.exe!WpfApplication1.MainWindow.StartRobo_Click(object sender, System.Windows.RoutedEventArgs e) Line 169 + 0x28 bytes C#


Вы же получаете цену закрытия 2й минутной свечки?
Код
private TimeSpan _timeFrame = TimeSpan.FromMinutes(1); // таймфрейм

Это, ИМО, возможно не немедленно, а Вы сразу дёргаете?

Кроме того, если Вы работаете через учебный сервер, то таблица всех сделок может быть пустая, её заполнение нужно специально запрашивать
Спасибо: RoboKrolik

VassilSanych

Фотография
Дата: 09.01.2013
Ответить


Геннадий Ванин (Gennady Vanin) Перейти
Кроме того, если Вы работаете через учебный сервер, то таблица всех сделок может быть пустая, её заполнение нужно специально запрашивать

У некоторых брокеров (например, у Уралсиба) её и на боевом нужно специально запрашивать.

Спасибо: RoboKrolik

RoboKrolik

Фотография
Дата: 09.01.2013
Ответить


Геннадий Ванин (Gennady Vanin) Перейти
RoboKrolik Перейти

Выдает вот такое когда свечи хочу отрисовать:
_chart.ProcessCandle((ChartCandleElement)_chart.Areas[0].Elements[0], candle);

А вы вообще нигде не добавляете элементы в _chart.Areas[0] ?!

RoboKrolik Перейти
Или вот такое когда хочу цену закрытия получить свечи:
Label3.Content = Convert.ToString(series.GetCandle<TimeFrameCandle>(1).ClosePrice);

> WpfApplication1.exe!WpfApplication1.MainWindow.StartRobo_Click(object sender, System.Windows.RoutedEventArgs e) Line 169 + 0x28 bytes C#


Вы же получаете цену закрытия 2й минутной свечки?
Код
private TimeSpan _timeFrame = TimeSpan.FromMinutes(1); // таймфрейм

Это, ИМО, возможно не немедленно, а Вы сразу дёргаете?

Кроме того, если Вы работаете через учебный сервер, то таблица всех сделок может быть пустая, её заполнение нужно специально запрашивать


Спасибо за помощь. Понял свою ошибку. Пытался обратится к свече раньше чем она создалась и заполнилась.
Автор топика
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy