свечи micex10index

свечи micex10index
Atom
5/4/2011
patermind


Добрый день. Прошу помощи - после отработки кода параметры свечей(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); } }


Tags:


Thanks:


< 1 2 3  >
patermind

Avatar
Date: 5/6/2011
Reply


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

Thanks:

Mikhail Sukhov

Avatar
Date: 5/6/2011
Reply


patermind:

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

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

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

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

Thanks:

patermind

Avatar
Date: 5/6/2011
Reply


Не могли бы вы посмотреть мой код и сказать, где я чего не доделал, чтобы все заработало? Я пытаюсь поставить обработку события - не нравятся аргументы DrawCandles, не нравится type http://imageshack.us/photo/my-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
			{

кажется, чего-то не хватает )))

Thanks:

Alexander

Avatar
Date: 5/6/2011
Reply


patermind: Не могли бы вы посмотреть мой код и сказать, где я чего не доделал, чтобы все заработало? Я пытаюсь поставить обработку события - не нравятся аргументы DrawCandles, не нравится type http://imageshack.us/photo/my-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 как раз занимается построением свечек. стоит его ещё раз посмотреть ;)
Thanks:

patermind

Avatar
Date: 5/6/2011
Reply


лан, буду сам разбираться

Thanks:

Ilya Gruntal

Avatar
Date: 5/6/2011
Reply


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

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

В соседнем топике, http://stocksharp.com/forum/1573/GetTimeFrameCandles--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.                  <- объект свечки
      }
}


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

Thanks:

patermind

Avatar
Date: 5/7/2011
Reply


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

Thanks:

patermind

Avatar
Date: 5/11/2011
Reply


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

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

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

Thanks:

Alexander

Avatar
Date: 5/11/2011
Reply


patermind:

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

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

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

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

patermind

Avatar
Date: 5/11/2011
Reply


  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.");
                                    }
                                }

посмотрим завтра, получится что или нет...

  1. Понял, благодарю. Заведу свечки - попробую.

  2. Ок, потом покажу, как делаю - нужен будет совет, правильно или нет.. без свечей пока рано говорить.

спасибо!

Thanks:
< 1 2 3  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy