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/photo/my-images/857/errj.jpg/ .
Как уже писали несколько раз в этом топике, пользоваться нужно событиями. GetTimeFrameCandles возвращает свофрмированые свечки, которые прошли через событие.
|
|
|
|
Thanks:
|
|
|
|
|
|
patermind
|
Date: 5/6/2011
Не могли бы вы посмотреть мой код и сказать, где я чего не доделал, чтобы все заработало? Я пытаюсь поставить обработку события - не нравятся аргументы 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
|
Date: 5/6/2011
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
|
Date: 5/6/2011
лан, буду сам разбираться
|
|
|
|
Thanks:
|
|
|
|
|
|
Ilya Gruntal
|
Date: 5/6/2011
|
|
|
|
|
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
|
Date: 5/7/2011
Благодарю, все ок, в коде разобрался, что нужно поправил. Жду биржевого времени, чтобы проверить.
|
|
|
|
Thanks:
|
|
|
|
|
|
patermind
|
Date: 5/11/2011
Сегодня вечером приду, оставлял машину включенной с программой, посмотрим, работают свечки или нет.
Не подскажете - предположим, в течении дня я руками делаю приказы, покупаю что-то, продаю. И к трем часам дня у меня сформировался портфель - например текущие остатки получаются 1 лот сбербанка и -7 лотов лукойла. Заранее сколько у меня к трем часам будет бумаг и каких - я не знаю. Как в программе на S# продать(и купить) все, что на настоящий момент есть в портфеле? Например, продать 1 лот сбербанка и купить 7 лотов лукойла по рыночным ценам. Т.е. полностью выйти из бумаг, вернув деньги.
Еще одна проблема - как в примере SampleConsole сделать выставление лимитированной заявки на продажу + если заявка не была отработана в течении 10 секунд(цена ушла) передвинуть заявку опять на лучшее предложение по рынку и так до тех пор, пока заявка не будет удовлетворена? Котирование? как его правильно сделать в коде без использования стратегий?
|
|
|
|
Thanks:
|
|
|
|
|
|
Alexander
|
Date: 5/11/2011
|
|
|
|
|
patermind:
Сегодня вечером приду, оставлял машину включенной с программой, посмотрим, работают свечки или нет.
Не подскажете - предположим, в течении дня я руками делаю приказы, покупаю что-то, продаю. И к трем часам дня у меня сформировался портфель - например текущие остатки получаются 1 лот сбербанка и -7 лотов лукойла. Заранее сколько у меня к трем часам будет бумаг и каких - я не знаю. Как в программе на S# продать(и купить) все, что на настоящий момент есть в портфеле? Например, продать 1 лот сбербанка и купить 7 лотов лукойла по рыночным ценам. Т.е. полностью выйти из бумаг, вернув деньги.
Еще одна проблема - как в примере SampleConsole сделать выставление лимитированной заявки на продажу + если заявка не была отработана в течении 10 секунд(цена ушла) передвинуть заявку опять на лучшее предложение по рынку и так до тех пор, пока заявка не будет удовлетворена? Котирование? как его правильно сделать в коде без использования стратегий?
- Хорошо [thumbup]
- получаете позицию: Trader.GetPosition(Portfolio, Security).CurrentValue
и отправляете нужные вам заявки
- без использования стратегий - в цикле, каждые 10 секунд проверяете состояние заявки.
|
|
|
|
Thanks:
|
|
|
|
|
|
patermind
|
Date: 5/11/2011
|
|
|
|
|
- не заработало, по нулям вывелось в параметрах свечек. Попробую обработчик вот такой сделать вместо пустого, как советовали
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.");
}
}
посмотрим завтра, получится что или нет...
Понял, благодарю. Заведу свечки - попробую.
Ок, потом покажу, как делаю - нужен будет совет, правильно или нет.. без свечей пока рано говорить.
спасибо!
|
|
|
|
Thanks:
|
|
|
|
|