События NewCandles и CandlesChanged не происходят.~/topic/1773/sobytiya-newcandles-i-candleschanged-ne-proishodyat_/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T00:56:57Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/10054/посмотрите SampleSma - как раз пример запуска стратегии2011-07-30T15:52:54Z2011-07-30T15:52:54ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ruпосмотрите SampleSma - как раз пример запуска стратегииCopyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/10052/Возник еще один вопрос. Как в данный код внедрить стратегию SmaStrategy? Я перед циклом вставляю сле...2011-07-30T15:20:34Z2011-07-30T15:20:34Zpaunovhttps://stocksharp.ru/users/27840/info@stocksharp.ruВозник еще один вопрос. Как в данный код внедрить стратегию SmaStrategy?<br />Я перед циклом вставляю следующее<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
_strategy = new SmaStrategy(_candleManager, new Sma(80), new Sma(10), _timeFrame)
{
Volume = 1,
Portfolio = _portfolio,
Security = _lkoh,
Trader = trader,
};
_strategy.Start();
</pre>
</div></div><br /><br />но стратегия не работает.<br />Спасибо! Прошу прощения за много глупых вопросов.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/9967/Спасибо! Все заработало!2011-07-27T15:02:07Z2011-07-27T15:02:07Zpaunovhttps://stocksharp.ru/users/27840/info@stocksharp.ruСпасибо! Все заработало!Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/9966/Прошу прощения, с первого раза не понял) а как называется таблица всех сделок? я так понял, что прос...2011-07-27T15:00:30Z2011-07-27T15:00:30ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ru<div class="quote"><span class="quotetitle">paunov <a href="https://stocksharp.ru/posts/m/9965/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Прошу прощения, с первого раза не понял) <br />а как называется таблица всех сделок?<br />я так понял, что просто должен ее в "trader.StartExport(trader.SecuritiesTable, trader.MyTradesTable, trader.EquityPositionsTable);" вставить)<br />Спасибо огромное!</div></div><br /><br />TradesTable<br />или просто trader.StartExport(); - все таблицы стартуютCopyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/9965/Прошу прощения, с первого раза не понял) а как называется таблица всех сделок? я так понял, что прос...2011-07-27T14:58:06Z2011-07-27T14:58:06Zpaunovhttps://stocksharp.ru/users/27840/info@stocksharp.ruПрошу прощения, с первого раза не понял) <br />а как называется таблица всех сделок?<br />я так понял, что просто должен ее в "trader.StartExport(trader.SecuritiesTable, trader.MyTradesTable, trader.EquityPositionsTable);" вставить)<br />Спасибо огромное!Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/9964/Мне нужно получать информацию о свечках. В коде (141-150 строчки) еcть свечные события. Я планирую п...2011-07-27T14:38:25Z2011-07-27T14:38:25ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ru<div class="quote"><span class="quotetitle">paunov <a href="https://stocksharp.ru/posts/m/9963/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Мне нужно получать информацию о свечках.<br />В коде (141-150 строчки) еcть свечные события.<br />Я планирую получать значения свечек через них.<br />Но как видно из распечатки консоли они не происходят.<br />Как преодолеть эту проблему?<br />Спасибо!</div></div><br /><br /><br />Я ведь ответил:<br /><span class="highlight">Свечки строятся по потоку всех сделок инструмента</span><br /><br />У вас экспорт таблицы всех сделок не стартует => откуда изволите получать информацию для построения свечек? :)Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/9963/Мне нужно получать информацию о свечках. В коде (141-150 строчки) еcть свечные события. Я планирую п...2011-07-27T14:35:19Z2011-07-27T14:35:19Zpaunovhttps://stocksharp.ru/users/27840/info@stocksharp.ruМне нужно получать информацию о свечках.<br />В коде (141-150 строчки) еcть свечные события.<br />Я планирую получать значения свечек через них.<br />Но как видно из распечатки консоли они не происходят.<br />Как преодолеть эту проблему?<br />Спасибо!Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/9962/Свечки строятся по потоку всех сделок инструмента2011-07-27T14:29:39Z2011-07-27T14:29:39ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ruСвечки строятся по потоку всех сделок инструментаCopyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/9961/Добавил распечатку RegisterTimeFrameCandles Версия C# 3.2.5 Ошибок вроде никаких. вот консоль Запуще...2011-07-27T14:08:38Z2011-07-27T14:08:38Zpaunovhttps://stocksharp.ru/users/27840/info@stocksharp.ruДобавил распечатку RegisterTimeFrameCandles<br />Версия C# 3.2.5<br />Ошибок вроде никаких.<br />вот консоль<br /><div class="quote"><span class="quotetitle">Цитата:</span><div class="innerquote"><br />Запущенный Quik найден по пути C:\Program Files\Quik-Zerich\info.exe<br />Введите номер счета, через который будет выставлена заявка: Производим подключе<br />ие...<br />Подключение было произведено успешно.<br />Дожидаемся появления в программе инструмента Лукойл и портфеля 1636...<br />Инструмент Лукойл появился.<br />Стакан Лукойла появился.<br />TimeFrameCandle LKOH@EQBR 00:05:00<br />Портфель 1636 появился.<br />Первоначальное значение середины спреда 1862,25<br />Заявка 442774 зарегистрирована.<br />Заявка 442810 зарегистрирована.<br />Заявка 442838 зарегистрирована.<br />Заявка 442895 зарегистрирована.<br />Заявка 442948 зарегистрирована.<br />Заявка 442991 зарегистрирована.<br />Заявка 443021 зарегистрирована.<br />Заявка 443048 зарегистрирована.<br />Заявка 443096 зарегистрирована.<br />Заявка 443121 зарегистрирована.<br />Заявка 443141 зарегистрирована.<br />Заявка 443162 зарегистрирована.<br />Заявка 443209 зарегистрирована.<br />Заявка 443227 зарегистрирована.<br />Заявка 443244 зарегистрирована.<br />Заявка 443277 зарегистрирована.<br />Заявка 443300 зарегистрирована.<br />Заявка 443353 зарегистрирована.<br />Заявка 443368 зарегистрирована.<br />Заявка 443451 зарегистрирована.<br />Заявка 443474 зарегистрирована.<br />Заявка 443538 зарегистрирована.<br />Заявка 443744 зарегистрирована.<br />Заявка 444355 зарегистрирована.<br />Заявка 444578 зарегистрирована.<br />Сделка 217243 по цене 1861 по бумаге LKOH по объему 1 в 27.07.2011 18:00:08.<br />Заявка 444660 зарегистрирована.<br />Заявка 444909 зарегистрирована.<br />Заявка 445119 зарегистрирована.<br />Заявка 445210 зарегистрирована.<br />Заявка 445411 зарегистрирована.<br />Заявка 445476 зарегистрирована.<br />Заявка 445569 зарегистрирована.<br />Заявка 445679 зарегистрирована.<br />Заявка 445713 зарегистрирована.<br />Заявка 445762 зарегистрирована.<br /><br /></div></div>Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/9960/Сначала то, что все инструменты и портфель появились, а потом идут Заявки подряд(с интервалом в пару...2011-07-27T13:54:50Z2011-07-27T13:54:50ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ru<div class="quote"><span class="quotetitle">paunov <a href="https://stocksharp.ru/posts/m/9959/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Сначала то, что все инструменты и портфель появились, а потом идут Заявки подряд(с интервалом в пару секунд). "Заявка {0} зарегистрирована". И иногда "Заявка не может быть снята". (Если сделка уже свершилась, а я попытался снять). И в случае если сделка свершилась в консоль выводится "Сделка {0} по цене {1} по бумаге {2} по объему {3} в {4}.".<br /></div></div><br /> <br />Лучше из консоли скопировать, чтоб точно было.<br /><br />Что выводит ProcessDataError?<br />Что возвращает RegisterTimeFrameCandles?<br />Версия S#?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/9959/Сначала то, что все инструменты и портфель появились, а потом идут Заявки подряд(с интервалом в пару...2011-07-27T13:48:39Z2011-07-27T13:48:39Zpaunovhttps://stocksharp.ru/users/27840/info@stocksharp.ruСначала то, что все инструменты и портфель появились, а потом идут Заявки подряд(с интервалом в пару секунд). "Заявка {0} зарегистрирована". И иногда "Заявка не может быть снята". (Если сделка уже свершилась, а я попытался снять). И в случае если сделка свершилась в консоль выводится "Сделка {0} по цене {1} по бумаге {2} по объему {3} в {4}.".<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/9958/а что выводится в консоль?2011-07-27T13:36:24Z2011-07-27T13:36:24ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ruа что выводится в консоль?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/9957/Я добавил в SampleConsole события NewCandles и CandlesChanged. Сделки совершаются, но эти события не...2011-07-27T13:30:24Z2011-07-27T13:30:24Zpaunovhttps://stocksharp.ru/users/27840/info@stocksharp.ruЯ добавил в SampleConsole события NewCandles и CandlesChanged. Сделки совершаются, но эти события не вызываются.<br />Сразу кидаю код.<br /><br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
namespace SampleConsole
{
using System;
using System.Linq;
using System.Threading;
using Ecng.Common;
using StockSharp.BusinessEntities;
using StockSharp.Quik;
using StockSharp.Algo;
using StockSharp.Algo.Candles;
using StockSharp.Algo.Reporting;
using StockSharp.Algo.Strategies;
class Program
{
private readonly static TimeSpan _timeFrame = TimeSpan.FromMinutes(5);
private static Security _lkoh;
private static Portfolio _portfolio;
private static MarketDepth _depth;
private static CandleManager _candleManager;
static void Main()
{
try
{
// для теста выбираем бумагу Лукойл
const string secCode = "LKOH";
var quikPath = QuikTerminal.GetDefaultPath();
if (quikPath.IsEmpty())
{
Console.WriteLine("Не найден ни один запущенный Quik");
return;
}
Console.WriteLine("Запущенный Quik найден по пути " + quikPath);
Console.Write("Введите номер счета, через который будет выставлена заявка: ");
var account = "1636";
using (var waitHandle = new AutoResetEvent(false))
{
// создаем шлюз к Quik-у
using (var trader = new QuikTrader(quikPath))
{
// необходимо раскомментировать, если идет работа с РТС Стандарт
//trader.FormatTransaction += builder => builder.RemoveInstruction(TransactionBuilder.ExecutionCondition);
// подписываемся на событие успешного подключения
// все действия необходимо производить только после подключения
trader.Connected += () =>
{
_candleManager = new CandleManager(trader);
Console.WriteLine("Подключение было произведено успешно.");
// извещаем об успешном соединени
waitHandle.Set();
};
Console.WriteLine("Производим подключение...");
trader.Connect();
// дожидаемся события об успешном соединении
waitHandle.WaitOne();
trader.NewPortfolios += portfolios =>
{
if (_portfolio == null)
{
// находим Лукойл и присваиваем ее переменной lkoh
_portfolio = portfolios.FirstOrDefault(p => p.Name == account);
if (_portfolio != null)
{
Console.WriteLine("Портфель {0} появился.", account);
// если инструмент и стакан уже появились,
// то извещаем об этом основной поток для выставления заявки
if (_lkoh != null && _depth != null)
waitHandle.Set();
}
}
};
// подписываемся на событие появление инструментов
trader.NewSecurities += securities =>
{
if (_lkoh == null)
{
// находим Лукойл и присваиваем ее переменной lkoh
_lkoh = securities.FirstOrDefault(sec => sec.Code == secCode);
if (_lkoh != null)
{
Console.WriteLine("Инструмент Лукойл появился.");
// запускаем экспорт стакана
trader.RegisterQuotes(_lkoh);
_candleManager.RegisterTimeFrameCandles(_lkoh, _timeFrame);
if (_portfolio != null)
waitHandle.Set();
}
}
};
// подписываемся на событие появления моих новых сделок
trader.NewMyTrades += myTrades =>
{
foreach (var myTrade in myTrades)
{
var trade = myTrade.Trade;
Console.WriteLine("Сделка {0} по цене {1} по бумаге {2} по объему {3} в {4}.", trade.Id, trade.Price, trade.Security.Code, trade.Volume, trade.Time);
}
};
// подписываемся на событие обновления стакана
trader.QuotesChanged += depths =>
{
if (_depth == null && _lkoh != null)
{
_depth = depths.FirstOrDefault(d => d.Security == _lkoh);
if (_depth != null)
{
Console.WriteLine("Стакан Лукойла появился.");
// если портфель уже появился, то извещаем об этом основной поток для выставления заявки
if (_portfolio != null)
waitHandle.Set();
}
}
};
Console.WriteLine("Дожидаемся появления в программе инструмента Лукойл и портфеля {0}...".Put(account));
_candleManager.NewCandles += (token, candles) =>
{
Console.WriteLine("Событие NewCandles произошло");
};
_candleManager.CandlesChanged += (token, candles) =>
{
Console.WriteLine("Событие CandlesChanged произошло");
};
// запускаем экспорт по DDE
trader.StartExport(trader.SecuritiesTable, trader.MyTradesTable, trader.EquityPositionsTable);
// дожидаемся появления портфеля и инструмента
waitHandle.WaitOne();
// 0.1% от изменения цены
const decimal delta = 0.001m;
// запоминаем первоначальное значение середины спреда
var firstMid = _lkoh.BestPair.SpreadPrice / 2;
Console.WriteLine("Первоначальное значение середины спреда {0:0.##}", _lkoh.BestBid.Price + firstMid);
while (true)
{
var mid = _lkoh.BestPair.SpreadPrice / 2;
// если спред вышел за пределы нашего диапазона
if (
((firstMid + firstMid * delta) <= mid) ||
((firstMid - firstMid * delta) >= mid) ||(0==0)
)
{
var order = new Order
{
Portfolio = _portfolio,
Price = _lkoh.ShrinkPrice(_lkoh.BestBid.Price + mid),
Security = _lkoh,
Volume = 1,
Direction = OrderDirections.Buy,
};
trader.RegisterOrder(order);
Console.WriteLine("Заявка {0} зарегистрирована.", order.Id);
Thread.Sleep(1000);
try
{
if (!order.IsMatched() && (order.State == OrderStates.Active))
trader.CancelOrder(order);
}
catch (Exception ex)
{
Console.WriteLine("Заявка не может быть снята");
}
}
else
Console.WriteLine("Текущее значение середины спреда {0:0.##}", _lkoh.BestBid.Price + mid);
// ждем 1 секунду
Thread.Sleep(1000);
}
// останавливаем экспорт по DDE
trader.StopExport(trader.SecuritiesTable, trader.MyTradesTable, trader.EquityPositionsTable);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
var getch = Console.ReadLine();
}
}
}</pre>
</div></div>Copyright @ StockSharp Platform LLC 2010 - 2024