Здравствуйте подскажите пожалуйста, как только не делал и не пробвоал вызывать свечи всё время возвращеть либо ноль,либо пишет что нет ссылки на обьект.Пример с 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. Это уже готовая стратегия. Будешь только свои правила входа-выхода писать и все. И свечки там получаются, их значения если хочешь, можешь в файл выводить.