Здравствуйте подскажите пожалуйста, как только не делал и не пробвоал вызывать свечи всё время возвращеть либо ноль,либо пишет что нет ссылки на обьект.Пример с samplecandles смотрел но там нет той части как получить именно O,H,L,C и другие данные со свечи,там есть только часть того что они передаються на новый чарт с графиком ,где он сам их как то получает. Не могли бы вы скинуть маленький примерчик как просто получить последние 10 свечей по лукойлу и вывести их нормально,чтоб ыэти значения были равны не нулю.ПО возможности скиньте весь код. Заранее спасибо!
Комментарии (26)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Окончание формирования свечей дожидаетесь? Нужно подписаться на CandlesFinished и NewCandles и уже в них обращаться к свечам.
_candleManager.CandlesFinished += (_candles) => MyMethod(_candles); ... private void MyMethod(IEnumerable<Candle> candles) { foreach(var candle in candles) {
} }
Что вот тут не так???
var _c = TimeSpan.FromMinutes(5); Console.WriteLine("начато"); var candles= _candleManager.GetTimeFrameCandle(ri,_c,TraderHelper.GetCandleTime(_c,DateTime.Now));
ещё вот так вот , какие только методы не использовал вообще ничего не возвращает даже в самых простых случаях!( Подскажите может я что то делаю не так?(
Выложите Ваш пример архивчиком, так будет проще и понятнее в чем проблема.
Тут отвечал пару дней назад.
не совсме понял что имееться ввиду под 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();
} } }
Свечки успевают сформироваться и придти?
В исключении есть StackTrace, там есть номера строк, можно посмотреть где именно нет ссылки на объект
Все сделки экспортируются? Verifier ошибки пишет? а ProcessDataError?
А как должны строиться свечки если все сделки не экспортируются? :)) Запустите экспорт через StartExport()
и подпишитесь на ProcessDataError, чтоб смотреть какие ошибки возникают
В таблице всех сделок в квике есть сделки по нужной бумаге?
В таблице всех сделок в квике есть сделки по нужной бумаге?
Не вижу на скриншоте вызова
В таблице всех сделок в квике есть сделки по нужной бумаге?
ri приходит не null? а где RegisterTimeFrameCandles? пользуйтесь событиями, а не Thread.Wait(20000)
В таблице всех сделок в квике есть сделки по нужной бумаге?
ri приходит не null? а где RegisterTimeFrameCandles? пользуйтесь событиями, а не Thread.Wait(20000) ri не приходит нулл,но всё равно не могу получить с ri highprice или lowprice всегда приходят нули RegisterTimeFrameCandles добавил но всё равно пишет не ссылки на обьект Не совсем ещё разобрался как пользоваться событиями( Вот опять скриншот изменённого Да и спасибо большое что все со мной возитесь !)
samujan, может стоит взять пример со свечками и изменить его под ваши задачи ? удалите всё лишнее, вставьте свою стратегию и вперёд.
все великие программисты начинались с копирования чужого кода ;)
тем более свечки, возможно, самая непонятная часть S#
валенок правильно говорит. Только возьми пример SampleSMA. Это уже готовая стратегия. Будешь только свои правила входа-выхода писать и все. И свечки там получаются, их значения если хочешь, можешь в файл выводить.