Работа со свечка .Заезженная тема
Atom Ответить
08.06.2011


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

Теги:


Спасибо:




26 Ответов
1 2  >
hobo

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


Окончание формирования свечей дожидаетесь? Нужно подписаться на CandlesFinished и NewCandles и уже в них обращаться к свечам.
Код
_candleManager.CandlesFinished += (_candles) => MyMethod(_candles);
...
private void MyMethod(IEnumerable<Candle> candles)
{
foreach(var candle in candles)
{

}
}

Спасибо:

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

Фотография
Автор статей Программист
Дата: 08.06.2011
Ответить


hobo Перейти
Окончание формирования свечей дожидаетесь? Нужно подписаться на CandlesFinished и NewCandles и уже в них обращаться к свечам.
Код
_candleManager.CandlesFinished += (_candles) => MyMethod(_candles);
...
private void MyMethod(IEnumerable<Candle> candles)
{
foreach(var candle in candles)
{

}
}


Спасибо но можно что нибудб попроще,я совсем не разобрался с работой S#.Скиньте плиз готовую мелочь какую нибудь чтобы просто в консоль выпечатывало.
Автор топика
Спасибо:

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

Фотография
Автор статей Программист
Дата: 08.06.2011
Ответить


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);


Что вот тут не так???
Автор топика
Спасибо:

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

Фотография
Автор статей Программист
Дата: 08.06.2011
Ответить


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

Фотография
Автор статей
Дата: 08.06.2011
Ответить


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("закончено");

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



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

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

Фотография
Автор статей Программист
Дата: 08.06.2011
Ответить


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

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


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 как выводить оттуда данные.Те два примера которые я скинул ничего не возвращают в принципе могу попозже скинуть архив, но проку от него мало будет(
мне нужная простая вещь просто получить даныые допустим с предыдущей свечки....но проблема вся в том что все выкладывают свои проблемные моменты в коде каими то кусками и не понятно что да как работает(
Мне как не такому профессиональному программисту хотелось бы получить примитивные примеры.



Тут отвечал пару дней назад.
Спасибо:

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

Фотография
Автор статей Программист
Дата: 08.06.2011
Ответить


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

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


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 - её ещё нет, дождитесь получения через событие.
Спасибо:

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

Фотография
Автор статей Программист
Дата: 08.06.2011
Ответить


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{Name="NL0011100043"},
Security=ri,
Price=ri.BestAsk.Price,
Volume=3,
Direction=OrderDirections.Sell,
});
trader.Terminal.StopActiveDdeExport();//остановка DDE передачи
Console.WriteLine("end");
Console.ReadLine();






}
}
}
Автор топика
Спасибо:

Alexander

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


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

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

Фотография
Автор статей Программист
Дата: 09.06.2011
Ответить


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

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

esper

Фотография
Программист
Дата: 09.06.2011
Ответить


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

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


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

Alexander

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


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

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


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

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

Фотография
Автор статей Программист
Дата: 09.06.2011
Ответить


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

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


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

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

Alexander

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


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

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


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

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


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

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

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

Фотография
Автор статей Программист
Дата: 09.06.2011
Ответить


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

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


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

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


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

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

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

esper

Фотография
Программист
Дата: 09.06.2011
Ответить


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

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

и на какую строку в коде указывает?
Спасибо:

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

Фотография
Автор статей Программист
Дата: 09.06.2011
Ответить


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

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

и на какую строку в коде указывает?

Да есть вот скриншот вместе с новым кодом поправьте если я что не так написал(
[img]http://s2.ipicture.ru/uploads/20110609/dc49xS1h.bmp[/img]
Автор топика
Спасибо:

esper

Фотография
Программист
Дата: 09.06.2011
Ответить


samujan Перейти
Да есть вот скриншот вместе с новым кодом поправьте если я что не так написал(
[img]https://s2.ipicture.ru/uploads/20110609/dc49xS1h.bmp[/img]


Не вижу на скриншоте вызова
Код
// регистрируем наш тайм-фрейм
candleManager.RegisterTimeFrameCandles(sec, timeFrame);
Спасибо:

Alexander

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


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

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

и на какую строку в коде указывает?

Да есть вот скриншот вместе с новым кодом поправьте если я что не так написал(
[img]http://s2.ipicture.ru/uploads/20110609/dc49xS1h.bmp[/img]


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

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

Фотография
Автор статей Программист
Дата: 09.06.2011
Ответить


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

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

и на какую строку в коде указывает?

Да есть вот скриншот вместе с новым кодом поправьте если я что не так написал(
[img]https://s2.ipicture.ru/uploads/20110609/dc49xS1h.bmp[/img]


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

ri не приходит нулл,но всё равно не могу получить с ri highprice или lowprice всегда приходят нули
RegisterTimeFrameCandles добавил но всё равно пишет не ссылки на обьект
Не совсем ещё разобрался как пользоваться событиями(
Вот опять скриншот изменённого
Да и спасибо большое что все со мной возитесь !)[img]http://s2.ipicture.ru/uploads/20110609/6Z2gZL1T.bmp[/img]
Автор топика
Спасибо:

valenock

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


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

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

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

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

Фотография
Автор статей Программист
Дата: 09.06.2011
Ответить


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

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

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

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

dart

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


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

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

loading
clippy