← Назад

Работа со свечка .Заезженная тема

Здравствуйте подскажите пожалуйста, как только не делал и не пробвоал вызывать свечи всё время возвращеть либо ноль,либо пишет что нет ссылки на обьект.Пример с samplecandles смотрел но там нет той части как получить именно O,H,L,C и другие данные со свечи,там есть только часть того что они передаються на новый чарт с графиком ,где он сам их как то получает. Не могли бы вы скинуть маленький примерчик как просто получить последние 10 свечей по лукойлу и вывести их нормально,чтоб ыэти значения были равны не нулю.ПО возможности скиньте весь код. Заранее спасибо!

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

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

hobo
hobo

Окончание формирования свечей дожидаетесь? Нужно подписаться на CandlesFinished и NewCandles и уже в них обращаться к свечам.

_candleManager.CandlesFinished += (_candles) => MyMethod(_candles);
...
private void MyMethod(IEnumerable<Candle> candles)
{
  foreach(var candle in candles)
  {

  }
}


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

hobo: Окончание формирования свечей дожидаетесь? Нужно подписаться на CandlesFinished и NewCandles и уже в них обращаться к свечам.

_candleManager.CandlesFinished += (_candles) => MyMethod(_candles); ... private void MyMethod(IEnumerable<Candle> candles) { foreach(var candle in candles) {

} }

Спасибо но можно что нибудб попроще,я совсем не разобрался с работой S#.Скиньте плиз готовую мелочь какую нибудь чтобы просто в консоль выпечатывало.
Самунджян Артем
Самунджян Артем Автор
        var ctime=_candleTimeFrame.GetCandleBounds(DateTime.Now).Min;
       
        _candleManager.RegisterTimeFrameCandles(ri,TimeSpan.FromMinutes(1));
        
        var candles = _candleManager.GetTimeFrameCandle(ri, TimeSpan.FromMinutes(1), ctime);
        Console.WriteLine(candles.OpenPrice);
    

Что вот тут не так???

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

var _c = TimeSpan.FromMinutes(5); Console.WriteLine("начато"); var candles= _candleManager.GetTimeFrameCandle(ri,_c,TraderHelper.GetCandleTime(_c,DateTime.Now));

        Console.WriteLine(candles.OpenPrice);
        Console.WriteLine("закончено");

ещё вот так вот , какие только методы не использовал вообще ничего не возвращает даже в самых простых случаях!( Подскажите может я что то делаю не так?(

Sergey Masyura
Sergey Masyura

samujan: var _c = TimeSpan.FromMinutes(5); Console.WriteLine("начато"); var candles= _candleManager.GetTimeFrameCandle(ri,_c,TraderHelper.GetCandleTime(_c,DateTime.Now));

        Console.WriteLine(candles.OpenPrice);
        Console.WriteLine("закончено");

ещё вот так вот , какие только методы не использовал вообще ничего не возвращает даже в самых простых случаях!( Подскажите может я что то делаю не так?(

Выложите Ваш пример архивчиком, так будет проще и понятнее в чем проблема.

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

sergey.masyura:

samujan: var _c = TimeSpan.FromMinutes(5); Console.WriteLine("начато"); var candles= _candleManager.GetTimeFrameCandle(ri,_c,TraderHelper.GetCandleTime(_c,DateTime.Now));

        Console.WriteLine(candles.OpenPrice);
        Console.WriteLine("закончено");

ещё вот так вот , какие только методы не использовал вообще ничего не возвращает даже в самых простых случаях!( Подскажите может я что то делаю не так?(

Выложите Ваш пример архивчиком, так будет проще и понятнее в чем проблема. Да я уже скинул практически всё что писал , я просто прошу чтобы кто нибудь правильно подсказалл как использовать candles как выводить оттуда данные.Те два примера которые я скинул ничего не возвращают в принципе могу попозже скинуть архив, но проку от него мало будет( мне нужная простая вещь просто получить даныые допустим с предыдущей свечки....но проблема вся в том что все выкладывают свои проблемные моменты в коде каими то кусками и не понятно что да как работает( Мне как не такому профессиональному программисту хотелось бы получить примитивные примеры.

Alexander
Alexander

samujan:

sergey.masyura:

samujan: var _c = TimeSpan.FromMinutes(5); Console.WriteLine("начато"); var candles= _candleManager.GetTimeFrameCandle(ri,_c,TraderHelper.GetCandleTime(_c,DateTime.Now));

        Console.WriteLine(candles.OpenPrice);
        Console.WriteLine("закончено");

ещё вот так вот , какие только методы не использовал вообще ничего не возвращает даже в самых простых случаях!( Подскажите может я что то делаю не так?(

Выложите Ваш пример архивчиком, так будет проще и понятнее в чем проблема. Да я уже скинул практически всё что писал , я просто прошу чтобы кто нибудь правильно подсказалл как использовать candles как выводить оттуда данные.Те два примера которые я скинул ничего не возвращают в принципе могу попозже скинуть архив, но проку от него мало будет( мне нужная простая вещь просто получить даныые допустим с предыдущей свечки....но проблема вся в том что все выкладывают свои проблемные моменты в коде каими то кусками и не понятно что да как работает( Мне как не такому профессиональному программисту хотелось бы получить примитивные примеры.

Тут отвечал пару дней назад.

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

Alexander:

samujan:

sergey.masyura:

samujan: var _c = TimeSpan.FromMinutes(5); Console.WriteLine("начато"); var candles= _candleManager.GetTimeFrameCandle(ri,_c,TraderHelper.GetCandleTime(_c,DateTime.Now));

        Console.WriteLine(candles.OpenPrice);
        Console.WriteLine("закончено");

ещё вот так вот , какие только методы не использовал вообще ничего не возвращает даже в самых простых случаях!( Подскажите может я что то делаю не так?(

Выложите Ваш пример архивчиком, так будет проще и понятнее в чем проблема. Да я уже скинул практически всё что писал , я просто прошу чтобы кто нибудь правильно подсказалл как использовать candles как выводить оттуда данные.Те два примера которые я скинул ничего не возвращают в принципе могу попозже скинуть архив, но проку от него мало будет( мне нужная простая вещь просто получить даныые допустим с предыдущей свечки....но проблема вся в том что все выкладывают свои проблемные моменты в коде каими то кусками и не понятно что да как работает( Мне как не такому профессиональному программисту хотелось бы получить примитивные примеры.

Тут отвечал пару дней назад.

не совсме понял что имееться ввиду под roundMarketTime(округлённое рыночное время) и как оно должно быть через datetime? Ну вот как я пробывал задать так это просто округление до текщего времени череp TraderHelper тобишь если сейчас 10:43 , то если у меня стоит пятиминутный тайм фрейм то он округлит до 10 40 .Но он всё равно почему то всё время пишет ошибку: не задана ссылка на обьект(

Alexander
Alexander

samujan:

Alexander:

samujan:

sergey.masyura:

samujan: var _c = TimeSpan.FromMinutes(5); Console.WriteLine("начато"); var candles= _candleManager.GetTimeFrameCandle(ri,_c,TraderHelper.GetCandleTime(_c,DateTime.Now));

        Console.WriteLine(candles.OpenPrice);
        Console.WriteLine("закончено");

ещё вот так вот , какие только методы не использовал вообще ничего не возвращает даже в самых простых случаях!( Подскажите может я что то делаю не так?(

Выложите Ваш пример архивчиком, так будет проще и понятнее в чем проблема. Да я уже скинул практически всё что писал , я просто прошу чтобы кто нибудь правильно подсказалл как использовать candles как выводить оттуда данные.Те два примера которые я скинул ничего не возвращают в принципе могу попозже скинуть архив, но проку от него мало будет( мне нужная простая вещь просто получить даныые допустим с предыдущей свечки....но проблема вся в том что все выкладывают свои проблемные моменты в коде каими то кусками и не понятно что да как работает( Мне как не такому профессиональному программисту хотелось бы получить примитивные примеры.

Тут отвечал пару дней назад.

не совсме понял что имееться ввиду под roundMarketTime(округлённое рыночное время) и как оно должно быть через datetime? Ну вот как я пробывал задать так это просто округление до текщего времени череp TraderHelper тобишь если сейчас 10:43 , то если у меня стоит пятиминутный тайм фрейм то он округлит до 10 40 .Но он всё равно почему то всё время пишет ошибку: не задана ссылка на обьект(

на какой объект? на какой строчке?

у вас может candleManager равен null. или возвращается текущая свечка = null - её ещё нет, дождитесь получения через событие.

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

Alexander:

samujan:

Alexander:

samujan:

sergey.masyura:

samujan: var _c = TimeSpan.FromMinutes(5); Console.WriteLine("начато"); var candles= _candleManager.GetTimeFrameCandle(ri,_c,TraderHelper.GetCandleTime(_c,DateTime.Now));

        Console.WriteLine(candles.OpenPrice);
        Console.WriteLine("закончено");

ещё вот так вот , какие только методы не использовал вообще ничего не возвращает даже в самых простых случаях!( Подскажите может я что то делаю не так?(

Выложите Ваш пример архивчиком, так будет проще и понятнее в чем проблема. Да я уже скинул практически всё что писал , я просто прошу чтобы кто нибудь правильно подсказалл как использовать candles как выводить оттуда данные.Те два примера которые я скинул ничего не возвращают в принципе могу попозже скинуть архив, но проку от него мало будет( мне нужная простая вещь просто получить даныые допустим с предыдущей свечки....но проблема вся в том что все выкладывают свои проблемные моменты в коде каими то кусками и не понятно что да как работает( Мне как не такому профессиональному программисту хотелось бы получить примитивные примеры.

Тут отвечал пару дней назад.

не совсме понял что имееться ввиду под roundMarketTime(округлённое рыночное время) и как оно должно быть через datetime? Ну вот как я пробывал задать так это просто округление до текщего времени череp TraderHelper тобишь если сейчас 10:43 , то если у меня стоит пятиминутный тайм фрейм то он округлит до 10 40 .Но он всё равно почему то всё время пишет ошибку: не задана ссылка на обьект(

на какой объект? на какой строчке?

у вас может candleManager равен null. или возвращается текущая свечка = null - её ещё нет, дождитесь получения через событие.

Вот полный код хотя я пытался и другими путями через обработчика события NewCandles и CandlesFinished.Но я не совсем умею работать с обработчаками события и в принципе так и не нашёл как выводить данные(O,H,L,C) из этих обработчиков и как правильно получать данные,к тому же DrawCandles не видит((

namespace SampleSmartConsole { using System; using System.Linq; using System.Threading; using System.Xml;

using Ecng.Common; using Ecng.Collections; using Ecng.Trading.BusinessEntities; using Ecng.Trading.Quik; using Ecng.Trading.Algo; using Ecng.Trading.Algo.Candles;

class Program {

static void Main() {

var trader = new QuikTrader(); var _candleManager = new CandleManager(trader);

//TimeSpan span3 = TimeSpan.FromMinutes(1); //DateTime time= new DateTime(2011,6,8,11,45,0); trader.Connect(); trader.Terminal.StartDde(trader.SecuritiesTable); Thread.Sleep(2000);

var ri = trader.Securities.First(s => s.Id == "SBER03@QJSIM"); trader.RegisterQuotes(ri);

var _c = TimeSpan.FromMinutes(5); var candles= _candleManager.GetTimeFrameCandle(ri,_c,TraderHelper.GetCandleTime(_c,DateTime.Now)); Console.WriteLine(candles.OpenPrice);

//var lastCandle = _candleManager.GetTimeFrameCandle(ri,_c, );

//var closePrice = lastCandle.ClosePrice;

trader.RegisterOrder(new Order { Portfolio= new Portfolio, Security=ri, Price=ri.BestAsk.Price, Volume=3, Direction=OrderDirections.Sell, }); trader.Terminal.StopActiveDdeExport();//остановка DDE передачи Console.WriteLine("end"); Console.ReadLine();

} } }

Alexander
Alexander

Свечки успевают сформироваться и придти?

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

Alexander: Свечки успевают сформироваться и придти? ВСё время ничего не выдаёт либо пишет что нет ссылки на обьект(Не знаю что я делаю не так пример samplecandles работает.Причём когда я запршиваю допустим security.LowPrice всё время выдает ноль!

esper
esper

samujan:

Alexander: Свечки успевают сформироваться и придти? ВСё время ничего не выдаёт либо пишет что нет ссылки на обьект(Не знаю что я делаю не так пример samplecandles работает.Причём когда я запршиваю допустим security.LowPrice всё время выдает ноль!

В исключении есть StackTrace, там есть номера строк, можно посмотреть где именно нет ссылки на объект

Alexander
Alexander

samujan:

Alexander: Свечки успевают сформироваться и придти? ВСё время ничего не выдаёт либо пишет что нет ссылки на обьект(Не знаю что я делаю не так пример samplecandles работает.Причём когда я запршиваю допустим security.LowPrice всё время выдает ноль!

Все сделки экспортируются? Verifier ошибки пишет? а ProcessDataError?

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

Alexander:

samujan:

Alexander: Свечки успевают сформироваться и придти? ВСё время ничего не выдаёт либо пишет что нет ссылки на обьект(Не знаю что я делаю не так пример samplecandles работает.Причём когда я запршиваю допустим security.LowPrice всё время выдает ноль!

Все сделки экспортируются? Verifier ошибки пишет? а ProcessDataError? Как раз таки все сделки я не экспортирую ...А как их экспортировать?Verifier ошибки не пишет.ProcessDataError не использовал.

Alexander
Alexander

samujan:

Alexander:

samujan:

Alexander: Свечки успевают сформироваться и придти? ВСё время ничего не выдаёт либо пишет что нет ссылки на обьект(Не знаю что я делаю не так пример samplecandles работает.Причём когда я запршиваю допустим security.LowPrice всё время выдает ноль!

Все сделки экспортируются? Verifier ошибки пишет? а ProcessDataError? Как раз таки все сделки я не экспортирую ...А как их экспортировать?Verifier ошибки не пишет.ProcessDataError не использовал.

А как должны строиться свечки если все сделки не экспортируются? :)) Запустите экспорт через StartExport()

и подпишитесь на ProcessDataError, чтоб смотреть какие ошибки возникают

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

Alexander:

samujan:

Alexander:

samujan:

Alexander: Свечки успевают сформироваться и придти? ВСё время ничего не выдаёт либо пишет что нет ссылки на обьект(Не знаю что я делаю не так пример samplecandles работает.Причём когда я запршиваю допустим security.LowPrice всё время выдает ноль!

Все сделки экспортируются? Verifier ошибки пишет? а ProcessDataError? Как раз таки все сделки я не экспортирую ...А как их экспортировать?Verifier ошибки не пишет.ProcessDataError не использовал.

А как должны строиться свечки если все сделки не экспортируются? :)) Запустите экспорт через StartExport()

и подпишитесь на ProcessDataError, чтоб смотреть какие ошибки возникают Я запустил экспорт через trader.StartExport и всё равно ничего не выдаёт ( Если не сложно кто нибудь может выложить свой код получения данных со свеч , у меня нормально ничего не получаеться.Свой код я скинул полностью и он пишет что нет ссылки на обьект.

esper
esper

В таблице всех сделок в квике есть сделки по нужной бумаге?

Свой код я скинул полностью и он пишет что нет ссылки на обьект. и на какую строку в коде указывает?

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

В таблице всех сделок в квике есть сделки по нужной бумаге?

Свой код я скинул полностью и он пишет что нет ссылки на обьект. и на какую строку в коде указывает? Да есть вот скриншот вместе с новым кодом поправьте если я что не так написал(

esper
esper

samujan: Да есть вот скриншот вместе с новым кодом поправьте если я что не так написал(

Не вижу на скриншоте вызова

// регистрируем наш тайм-фрейм
candleManager.RegisterTimeFrameCandles(sec, timeFrame);
Alexander
Alexander

В таблице всех сделок в квике есть сделки по нужной бумаге?

Свой код я скинул полностью и он пишет что нет ссылки на обьект. и на какую строку в коде указывает? Да есть вот скриншот вместе с новым кодом поправьте если я что не так написал(

ri приходит не null? а где RegisterTimeFrameCandles? пользуйтесь событиями, а не Thread.Wait(20000)

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

В таблице всех сделок в квике есть сделки по нужной бумаге?

Свой код я скинул полностью и он пишет что нет ссылки на обьект. и на какую строку в коде указывает? Да есть вот скриншот вместе с новым кодом поправьте если я что не так написал(

ri приходит не null? а где RegisterTimeFrameCandles? пользуйтесь событиями, а не Thread.Wait(20000) ri не приходит нулл,но всё равно не могу получить с ri highprice или lowprice всегда приходят нули RegisterTimeFrameCandles добавил но всё равно пишет не ссылки на обьект Не совсем ещё разобрался как пользоваться событиями( Вот опять скриншот изменённого Да и спасибо большое что все со мной возитесь !)

valenock
valenock

samujan, может стоит взять пример со свечками и изменить его под ваши задачи ? удалите всё лишнее, вставьте свою стратегию и вперёд.

все великие программисты начинались с копирования чужого кода ;)

тем более свечки, возможно, самая непонятная часть S#

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

valenock: samujan, может стоит взять пример со свечками и изменить его под ваши задачи ? удалите всё лишнее, вставьте свою стратегию и вперёд.

все великие программисты начинались с копирования чужого кода ;)

тем более свечки, возможно, самая непонятная часть S# Да я конечно так хотел сделать да вот только неоткуда копировать ,в примере samplecandles,обьект свечки передаётся в графический модуль а оттуда уже никак ничего не забрать он вообще закрытый(

dart
dart

валенок правильно говорит. Только возьми пример SampleSMA. Это уже готовая стратегия. Будешь только свои правила входа-выхода писать и все. И свечки там получаются, их значения если хочешь, можешь в файл выводить.

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

dart: валенок правильно говорит. Только возьми пример SampleSMA. Это уже готовая стратегия. Будешь только свои правила входа-выхода писать и все. И свечки там получаются, их значения если хочешь, можешь в файл выводить. Ребя спасибо большое получилось хоть что то получить с обьекта candles а это уже прорыв!=)