свечи micex10index
Atom
04.05.2011


Добрый день. Прошу помощи - после отработки кода параметры свечей(candle.OpenPrice, candle.ClosePrice) пустые:
Модифицирую SampleConsole

инициализируем
Код
private static CandleManager _candleManager;

потом в коде
Код
_candleManager = new CandleManager(trader);

потом в
Код
trader.NewSecurities += securities =>
                        {

делаю
Код
_mmvb = securities.FirstOrDefault(sec => sec.Code == "MICEX10INDEX");
if (_mmvb != null)
{
_candleManager.RegisterTimeFrameCandles(_mmvb, TimeSpan.FromMinutes(10));
Console.WriteLine("micex ok.");
}


и в конце цикла
Код
var candles = _candleManager.GetTimeFrameCandles(_mmvb, TimeSpan.FromMinutes(10), 5);
foreach (var candle in candles)
{
Console.WriteLine(candle.OpenPrice + "\n");
Console.WriteLine(candle.ClosePrice);
}
}

Теги:


Спасибо:


< 1 2 3  >
patermind

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


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

Mikhail Sukhov

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


patermind Перейти
Mikhail Sukhov Перейти
Все есть в документации и примерах. Смысл - свечки нужно получать через событие. Если вызывать метод GetTimeFrameCandles, то они могут быть еще не сформированы (тики с программу не мгновенно попадают с биржи и нужно какое то время, чтобы все свечки создались).

Посмотрите пример SampleCandles.


И пример, и документацию я смотрел. Не могли бы Вы подсказать, как мне модифицировать код ( http://pastebin.com/TaxxZbhL ) таким образом, чтобы оно заработало? У меня не получается поставить в код обработчик события таким образом, чтобы к GetTimeFrameCandles свечи были готовы - ссылка на скрин ошибки - http://imageshack.us/pho...my-images/857/errj.jpg/ .


Как уже писали несколько раз в этом топике, пользоваться нужно событиями. GetTimeFrameCandles возвращает свофрмированые свечки, которые прошли через событие.
Спасибо:

patermind

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


Не могли бы вы посмотреть мой код и сказать, где я чего не доделал, чтобы все заработало? Я пытаюсь поставить обработку события - не нравятся аргументы DrawCandles, не нравится type
http://imageshack.us/pho...y-images/853/123fx.jpg/

сама функция
Код
    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
            {



кажется, чего-то не хватает )))
Спасибо:

Alexander

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


patermind Перейти
Не могли бы вы посмотреть мой код и сказать, где я чего не доделал, чтобы все заработало? Я пытаюсь поставить обработку события - не нравятся аргументы DrawCandles, не нравится type
http://imageshack.us/pho...y-images/853/123fx.jpg/

сама функция
Код
    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 как раз занимается построением свечек. стоит его ещё раз посмотреть ;)
Спасибо:

patermind

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


лан, буду сам разбираться
Спасибо:

Ilya Gruntal

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


patermind Перейти
лан, буду сам разбираться


Дорогой patermind, попробуйте действительно запустить пример SampleCandles.
Если у Вас не будут рисоваться свечи в этом примере, значит скорей всего что-то с экспортом, например в таблице всех сделок колонки местами перепутались :))
Если же в примере SampleCandles свечи всё таки рисуются,то возвращайтесь к своему проекту и попробуйте повесить GetTimeFrameCandles на отдельную кнопку, тем самым подождав немного после запуска Экспорта по ДДЕ, чтобы свечи могли сформироваться.

В соседнем топике, http://stocksharp.com/fo...es--dubliazh-sviechiei/
вы найдёте немного кода, который мог бы вам пригодиться.

А для того чтобы попробовать события в своём примере попробуйте
Код


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. <- объект свечки
}
}



Сам не проверял, всё в ваших руках :)
Спасибо:

patermind

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


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

patermind

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


1) Сегодня вечером приду, оставлял машину включенной с программой, посмотрим, работают свечки или нет.

2) Не подскажете - предположим, в течении дня я руками делаю приказы, покупаю что-то, продаю. И к трем часам дня у меня сформировался портфель - например текущие остатки получаются 1 лот сбербанка и -7 лотов лукойла. Заранее сколько у меня к трем часам будет бумаг и каких - я не знаю. Как в программе на S# продать(и купить) все, что на настоящий момент есть в портфеле? Например, продать 1 лот сбербанка и купить 7 лотов лукойла по рыночным ценам. Т.е. полностью выйти из бумаг, вернув деньги.

3) Еще одна проблема - как в примере SampleConsole сделать выставление лимитированной заявки на продажу + если заявка не была отработана в течении 10 секунд(цена ушла) передвинуть заявку опять на лучшее предложение по рынку и так до тех пор, пока заявка не будет удовлетворена? Котирование? как его правильно сделать в коде без использования стратегий?
Спасибо:

Alexander

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


patermind Перейти
1) Сегодня вечером приду, оставлял машину включенной с программой, посмотрим, работают свечки или нет.

2) Не подскажете - предположим, в течении дня я руками делаю приказы, покупаю что-то, продаю. И к трем часам дня у меня сформировался портфель - например текущие остатки получаются 1 лот сбербанка и -7 лотов лукойла. Заранее сколько у меня к трем часам будет бумаг и каких - я не знаю. Как в программе на S# продать(и купить) все, что на настоящий момент есть в портфеле? Например, продать 1 лот сбербанка и купить 7 лотов лукойла по рыночным ценам. Т.е. полностью выйти из бумаг, вернув деньги.

3) Еще одна проблема - как в примере SampleConsole сделать выставление лимитированной заявки на продажу + если заявка не была отработана в течении 10 секунд(цена ушла) передвинуть заявку опять на лучшее предложение по рынку и так до тех пор, пока заявка не будет удовлетворена? Котирование? как его правильно сделать в коде без использования стратегий?



1) Хорошо [thumbup]
2) получаете позицию: Trader.GetPosition(Portfolio, Security).CurrentValue
и отправляете нужные вам заявки
3) без использования стратегий - в цикле, каждые 10 секунд проверяете состояние заявки.
Спасибо:

patermind

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


1) не заработало, по нулям вывелось в параметрах свечек. Попробую обработчик вот такой сделать вместо пустого, как советовали
Код
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. <- объект свечки
}
}


инициализация
Код
if (_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) Ок, потом покажу, как делаю - нужен будет совет, правильно или нет.. без свечей пока рано говорить.

спасибо!
Спасибо:
< 1 2 3  >

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

loading
clippy