patermind
|
Date: 5/6/2011
Поеду домой пожалуй, еще поковыряюсь полтора часика до конца дня - вдруг заработает...
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 5/6/2011
patermind Mikhail Sukhov Все есть в документации и примерах. Смысл - свечки нужно получать через событие. Если вызывать метод GetTimeFrameCandles, то они могут быть еще не сформированы (тики с программу не мгновенно попадают с биржи и нужно какое то время, чтобы все свечки создались).
Посмотрите пример SampleCandles. И пример, и документацию я смотрел. Не могли бы Вы подсказать, как мне модифицировать код ( http://pastebin.com/TaxxZbhL ) таким образом, чтобы оно заработало? У меня не получается поставить в код обработчик события таким образом, чтобы к GetTimeFrameCandles свечи были готовы - ссылка на скрин ошибки - http://imageshack.us/pho...my-images/857/errj.jpg/ . Как уже писали несколько раз в этом топике, пользоваться нужно событиями. GetTimeFrameCandles возвращает свофрмированые свечки, которые прошли через событие.
|
|
Thanks:
|
|
|
|
|
patermind
|
Date: 5/6/2011
Не могли бы вы посмотреть мой код и сказать, где я чего не доделал, чтобы все заработало? Я пытаюсь поставить обработку события - не нравятся аргументы DrawCandles, не нравится type http://imageshack.us/pho...y-images/853/123fx.jpg/
сама функция Code class Program { private static Security _instrument0; private static Security _mmvb; private static Portfolio _portfolio; private static MarketDepth _depth; private static CandleManager _candleManager;
private void DrawCandles(CandleToken token, IEnumerable<Candle> candles) { // ... // wnd.Candles.AddRange(candles); }
static void Main() {
try { кажется, чего-то не хватает )))
|
|
Thanks:
|
|
|
|
|
Alexander
|
Date: 5/6/2011
patermind Не могли бы вы посмотреть мой код и сказать, где я чего не доделал, чтобы все заработало? Я пытаюсь поставить обработку события - не нравятся аргументы DrawCandles, не нравится type http://imageshack.us/pho...y-images/853/123fx.jpg/
сама функция Code class Program { private static Security _instrument0; private static Security _mmvb; private static Portfolio _portfolio; private static MarketDepth _depth; private static CandleManager _candleManager;
private void DrawCandles(CandleToken token, IEnumerable<Candle> candles) { // ... // wnd.Candles.AddRange(candles); }
static void Main() {
try { кажется, чего-то не хватает ))) Пример SampleCandles как раз занимается построением свечек. стоит его ещё раз посмотреть ;)
|
|
Thanks:
|
|
|
|
|
patermind
|
Date: 5/6/2011
лан, буду сам разбираться
|
|
Thanks:
|
|
|
|
|
Ilya Gruntal
|
Date: 5/6/2011
|
|
|
|
patermind лан, буду сам разбираться Дорогой patermind, попробуйте действительно запустить пример SampleCandles. Если у Вас не будут рисоваться свечи в этом примере, значит скорей всего что-то с экспортом, например в таблице всех сделок колонки местами перепутались :)) Если же в примере SampleCandles свечи всё таки рисуются,то возвращайтесь к своему проекту и попробуйте повесить GetTimeFrameCandles на отдельную кнопку, тем самым подождав немного после запуска Экспорта по ДДЕ, чтобы свечи могли сформироваться. В соседнем топике, http://stocksharp.com/fo...es--dubliazh-sviechiei/
вы найдёте немного кода, который мог бы вам пригодиться. А для того чтобы попробовать события в своём примере попробуйте Code
candleManager.RegisterTimeFrameCandles(blablaSecurity, blablaTimeframe); candleManager.NewCandles += new Action<CandleToken, IEnumerable<Candle>>(NewCandles);
void NewCandles(CandleToken token, IEnumerable<Candle> candles) { foreach (var candle in candles) { // candle. <- объект свечки } }
Сам не проверял, всё в ваших руках :)
|
|
Thanks:
|
|
|
|
|
patermind
|
Date: 5/7/2011
Благодарю, все ок, в коде разобрался, что нужно поправил. Жду биржевого времени, чтобы проверить.
|
|
Thanks:
|
|
|
|
|
patermind
|
Date: 5/11/2011
1) Сегодня вечером приду, оставлял машину включенной с программой, посмотрим, работают свечки или нет.
2) Не подскажете - предположим, в течении дня я руками делаю приказы, покупаю что-то, продаю. И к трем часам дня у меня сформировался портфель - например текущие остатки получаются 1 лот сбербанка и -7 лотов лукойла. Заранее сколько у меня к трем часам будет бумаг и каких - я не знаю. Как в программе на S# продать(и купить) все, что на настоящий момент есть в портфеле? Например, продать 1 лот сбербанка и купить 7 лотов лукойла по рыночным ценам. Т.е. полностью выйти из бумаг, вернув деньги.
3) Еще одна проблема - как в примере SampleConsole сделать выставление лимитированной заявки на продажу + если заявка не была отработана в течении 10 секунд(цена ушла) передвинуть заявку опять на лучшее предложение по рынку и так до тех пор, пока заявка не будет удовлетворена? Котирование? как его правильно сделать в коде без использования стратегий?
|
|
Thanks:
|
|
|
|
|
Alexander
|
Date: 5/11/2011
|
|
|
|
patermind 1) Сегодня вечером приду, оставлял машину включенной с программой, посмотрим, работают свечки или нет.
2) Не подскажете - предположим, в течении дня я руками делаю приказы, покупаю что-то, продаю. И к трем часам дня у меня сформировался портфель - например текущие остатки получаются 1 лот сбербанка и -7 лотов лукойла. Заранее сколько у меня к трем часам будет бумаг и каких - я не знаю. Как в программе на S# продать(и купить) все, что на настоящий момент есть в портфеле? Например, продать 1 лот сбербанка и купить 7 лотов лукойла по рыночным ценам. Т.е. полностью выйти из бумаг, вернув деньги.
3) Еще одна проблема - как в примере SampleConsole сделать выставление лимитированной заявки на продажу + если заявка не была отработана в течении 10 секунд(цена ушла) передвинуть заявку опять на лучшее предложение по рынку и так до тех пор, пока заявка не будет удовлетворена? Котирование? как его правильно сделать в коде без использования стратегий? 1) Хорошо [thumbup] 2) получаете позицию: Trader.GetPosition(Portfolio, Security).CurrentValue и отправляете нужные вам заявки 3) без использования стратегий - в цикле, каждые 10 секунд проверяете состояние заявки.
|
|
Thanks:
|
|
|
|
|
patermind
|
Date: 5/11/2011
|
|
|
|
1) не заработало, по нулям вывелось в параметрах свечек. Попробую обработчик вот такой сделать вместо пустого, как советовали Code private static void DrawCandles(CandleToken token, IEnumerable<Candle> candles) { var candles1 = _candleManager.GetTimeFrameCandles(_micex, TimeSpan.FromMinutes(10), 5); foreach (var candle in candles1) { Console.WriteLine(candle.OpenPrice); Console.WriteLine(candle.ClosePrice); Console.WriteLine("---------------"); // candle. <- объект свечки } } инициализация Codeif (_micex == null) { _micex = securities.FirstOrDefault(sec => sec.Code == "MICEX10INDEX"); if (_micex != null) { _candleManager = new CandleManager(trader); _candleManager.NewCandles += DrawCandles; _candleManager.CandlesChanged += DrawCandles; CandleToken token = _candleManager.RegisterTimeFrameCandles(_micex, TimeSpan.FromMinutes(10)); Console.WriteLine("micex ok."); } }
посмотрим завтра, получится что или нет... 2) Понял, благодарю. Заведу свечки - попробую. 3) Ок, потом покажу, как делаю - нужен будет совет, правильно или нет.. без свечей пока рано говорить. спасибо!
|
|
Thanks:
|
|
|
|