Сообщество. StockSharphttps://stocksharp.ru/handlers/atom.ashx?category=community&page=255Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T14:37:45Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/topic/1507/PositionManager.Position & StrategyPositionManager.OnOrderChanged2011-04-10T15:17:49Z2011-04-10T15:17:49Zbleedhttps://stocksharp.ru/users/28060/info@stocksharp.ruВвиду с проблемой неправильного подсчета PositionManager.Position описанной <a href="http://stocksharp.com/forum/1469/-3-0-19--Niepravil-no-schitaietsia-Position-v-PositionManager/" title="http://stocksharp.com/forum/1469/-3-0-19--Niepravil-no-schitaietsia-Position-v-PositionManager/">здесь</a><br /><br />решил написать простую рабочую реализацию PositionManager для проведения тестов, по примеру который предложил Михаил по ссылке выше<br /><br />Итак простая реализация, как мне кажется правильного алгоритма <br /><div class="code"><strong>Код</strong><div class="innercode"> class NewPositionManager : StrategyPositionManager<br /> {<br /> public NewPositionManager(Strategy strategy, bool byOrders) : base(strategy, byOrders) {}<br /><br /> protected override void OnOrderChanged(Order order)<br /> {<br /> if (TraderHelper.IsFilledEmpty(order) || TraderHelper.IsCanceled(order))<br /> return;<br /> else if (TraderHelper.IsFilledPartially(order))<br /> {<br /> //TODO<br /> }<br /> else if(TraderHelper.IsMatched(order))<br /> {<br /> base.Position += (order.Direction == OrderDirections.Buy) ? order.Volume : -1*(order.Volume);<br /> }<br /><br /> }<br /> }</div></div><br /><br />при тестировании на обьеме в <b>1</b> контракт выявила также не правильный подсчет позиции, а именно позиция ровно в <b>2 раза</b> отлична от верной<br /><br />при отлатке через дебагер обнаружил что метод OnOrderChanged вызывается два раза для одной и тойже заявки, отсюда и неправильный подсчет..<br /><br />Ошибка? или чем вызван второй вызов OnOrderChanged?<br /><br />я просто в тупик встал, без правильного PositionManager.Position бесмысленно и стратегию писать, и вообще работать с библиотекойhttps://stocksharp.ru/topic/1506/Задать начальную позицию стратегии?2011-04-10T13:12:14Z2011-04-10T13:12:14ZGarryhttps://stocksharp.ru/users/430/info@stocksharp.ruДобрый день!<br />Допустим у меня есть 10 контрактов. Начинается новый день, хочу торговать 3 разные стратегии по данному инструменту. В 2 стратегиях использовать лот 3 и в одной лот 4. Соответсвенно мне нужно инициировать начальное значение позиции у 2х стратегий 3 контракта и у одной 4. Свойство PositionManager.Position - read only. Метод init работает через сделки, а сделок не было так-как начало дня. Как по другому можно инициировать начальную позицию стратегии?https://stocksharp.ru/topic/1504/"Папки решений не поддерживаются..."2011-04-09T09:48:35Z2011-04-09T09:48:35ZFreeFirehttps://stocksharp.ru/users/28157/info@stocksharp.ruУстановил Visual C# 2010 Express, открываю проект SampleConsole.csproj и получаю следующее:<br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAAAOMNrOLAuSOVIAHGXChwyzazFKYCt1bqXvSXAAIkTgNTUg25N54iXahWLmno32y0mEEz-SoA3Vwa97Q67_fin2t4D6505y24SsLtVWrMr5_w" title="http://dl.dropbox.com/u/17136439/net/stocksharp/2011_04_09__09_24_utc.png">http://dl.dropbox.com/u/1713643...011_04_09__09_24_utc.png</a><br />https://stocksharp.ru/topic/1503/Список задач 32011-04-08T19:46:14Z2011-04-08T19:46:14Zaspiranthttps://stocksharp.ru/users/6114/info@stocksharp.ruИз того что у меня осталось:<br /><ol><li>PlazaSchemeParser нужно исправить, но он в нынешней реализации не нужен, потому что мы ничего не парсим. Предлагаю оставить, как есть, и скрыть от пользователя.<br /><li>Доделать PlazaTrader.OnNewDataFromPosition()</ol><br />Что делать дальше?https://stocksharp.ru/topic/1502/GetCurrentTimeFrameCandle часто возвращает null2011-04-08T12:46:25Z2011-04-08T12:46:25Zsklementievhttps://stocksharp.ru/users/27969/info@stocksharp.ruимею код<br /><br /> protected override StrategyProcessResults OnProcess()<br /> {<br /> var candle = _candleManager.GetCurrentTimeFrameCandle(Security, TimeFrame);<br /><br />candle == null примерно каждый второй заход в OnProcess... <br />Это очень печально, ибо текущая несформированная свеча должна быть (есть) ВСЕГДА<br /><br />Михаил, мысли?https://stocksharp.ru/topic/1501/Зачем Вам всё это???2011-04-08T04:15:39Z2011-04-08T04:15:39Zatibatihttps://stocksharp.ru/users/27586/info@stocksharp.ruДобрый день.<br /><br />Прочитал описание проги, очень понравилось. Но вот не ясно одно - зачем вы всё это делаете? Должен же быть у Автора библиотеки какой-то интерес.https://stocksharp.ru/topic/1500/вывод таблици по дде2011-04-07T20:58:35Z2011-04-07T20:58:35ZSerghttps://stocksharp.ru/users/484/info@stocksharp.ruПриветствую. Подскажите пожалуйста как можно проверить начат ли вывод таблицы по дде? Есть ли какойто внутренний метод?<br />Если стратегия при запуске подписывается на изменение котировок в стакане и стартует вывод стакана, как при запуске другого экземпляра стратегии не перезапускать вывод стакана?<br />Или же сей подход есть неправильным и все выводы по дде следует реализовывать на верхнем уровне приложения?<br /><br />Спасибо.https://stocksharp.ru/topic/1499/Тестирование через RealTimeTestTrader2011-04-07T14:40:52Z2011-04-07T14:40:52Zbleedhttps://stocksharp.ru/users/28060/info@stocksharp.ruДобрый день,<br /><br />есть пару вопросов по принципу тестирования в s#<br /><br />пытаюсь потестить стратегию на реальных данных<br /><br />в стратегии формируется заявка<br /><div class="quote"><span class="quotetitle">Цитата:</span><div class="innerquote"> var direction = OrderDirections.Buy;<br /><br /> var order = base.CreateOrder(direction, base.Security.GetMarketPrice(direction), base.Volume);<br /><br /> base.RegisterOrder(order);</div></div><br /><br />В основном коде робота подписываюсь на NewOrder<br />вывожу инфо об ордере в консоль<br /><div class="quote"><span class="quotetitle">Цитата:</span><div class="innerquote"> private void onNewOrder(Order order)<br /> {<br /> Console.WriteLine("Новый order:"+ order.Price);<br /> }</div></div><br /><br />при тесте заявки создаются выводится инфо в консоль<br /><br />Там же подписываюсь на NewMyTrades<br /><div class="quote"><span class="quotetitle">Цитата:</span><div class="innerquote"> private void onNewMyTrades(IEnumerable<MyTrade> trades)<br /> {<br /> Console.WriteLine("count"+trades.Count());<br /> }</div></div><br />где также все данные вывожу в консоль<br /><br />однако при тесте данные о новых сделках не поступают, получается что создание собственных сделок не эмулируется?<br /><br />хотел протестировать стратегию тэйк-профит стоп-слос, а без событий о собственных сделках это невозможно.<br /><br />или сделки также эмулируются, но в моем примере просто ордер не исполняется?<br /><br />заранее спасибо за ответ!https://stocksharp.ru/topic/1498/Объединение исторических и текущих свечек2011-04-07T09:47:14Z2011-04-07T09:47:14Zmorincerhttps://stocksharp.ru/users/28225/info@stocksharp.ruПриветствую!<br /><br />Долго пытался разобраться самостоятельно, но так и не нашел ответов.<br />Задача состоит в следующем: необходимо получить "ленту" пятимянутных свечек - от текущего момента (после подключения) до, допустим, минус две недели назад. <br />Собственно, вопросы:<br />1) Если вызвать RegisterHistoryData и слушать NewHistoryCandle - как узнать, что я получил все свечки в заданном диапазоне?<br />2) В документации сказано, что RegisterHistoryData получает свечки за <b>предыдущие</b> торговые сессии. Как тогда получить данные за текущую сессию (предполагаю, что подключился в середине торгового дня и нужно получить свечки более ранние)? <br />3) И последнее, но не в последнюю очередь - адаптация решения первых двух вопросов к тестированию на исторических данных - как? <br /><br />Зараннее спасибо!https://stocksharp.ru/topic/1496/API Update - Order: Цена исполнения заявки2011-04-06T17:07:02Z2011-04-06T17:07:02ZSergey Masyurahttps://stocksharp.ru/users/701/info@stocksharp.ruВсем привет.<br /><br />Было бы хорошо расширить API для BusuinessEntities.Order и добавить туда поле цена исполнения заявки (ExecutionPrice). Сейчас есть только поле цена, то есть цена по которой была выставлена заявка. Конечно, есть ExtentionInfo и можно информацию туда поместить, но, на мой взгляд, это должно быть частью API.https://stocksharp.ru/topic/1495/2 вопроса для старта !2011-04-06T08:42:59Z2011-04-06T08:42:59ZКирилhttps://stocksharp.ru/users/28334/info@stocksharp.ruДобрый день. <br /> 1 - Как подписать событие ?<br /> 2 - Как выставить обработчика ?<br /><br /> И всё это делать под WindowsForms. <br /><br />В програмировании начальный уровень мне в нём легче. <br /><br /><br /><br />Вот что есть на данный момент<br /><br />using System;<br />using System.Collections.Generic;<br />using System.ComponentModel;<br />using System.Data;<br />using System.Drawing;<br />using System.Linq;<br />using System.Text;<br />using System.Windows.Forms;<br />using Ecng.Trading.Algo;<br />using Ecng.Trading.Smart;<br />using Ecng.Trading.BusinessEntities;<br />using System.Net;<br />using Ecng.Common;<br />namespace Stock_060411_podkluchenie<br />{<br /> public partial class Form1 : Form<br /> {<br /> public SmartTrader Trader;<br /> public Form1()<br /> {<br /> InitializeComponent();<br /> }<br /><br /> private void button1_Click(object sender, EventArgs e)<br /> { <br /> IPEndPoint IP = new IPEndPoint(IPAddress.Parse("82.204.220.34"), 8090);<br /> Trader = new SmartTrader(textBox1.Text, textBox2.Text, IP);<br /> Trader.Connect();<br /> }<br /> private void TraderConnected()<br /> { <br /> label3.Text = "Подключили";<br /> }<br /> }<br />}https://stocksharp.ru/topic/1494/Перестает вызываться OnProcess стратегии2011-04-05T06:31:53Z2011-04-05T06:31:53ZAlterhttps://stocksharp.ru/users/5036/info@stocksharp.ruЗаметил, что робот проворонил сигнал, в логах ничего не нашел, задебажил и увидел, что не вызывается OnProcess. В последнем вызове PropertyChanged у стратегии состояние Runned. Стратегия унаследована от TimeFrameStrategy, S# последний.https://stocksharp.ru/topic/1493/Работоспособность примеров2011-04-04T21:22:54Z2011-04-04T21:22:54ZAton5https://stocksharp.ru/users/28158/info@stocksharp.ruЗапускаю пример:<br />1. SampleHistoryTesting, и указываю путь к папке RIU9@RTS или даже RIU9@RTS/2009_09_10<br />Возникает ощибка , и пример не работает.<br />2. SampleRealTimeTesting. Тут указаны IP серверов, а не путь к QUIK-у. <br />Подскажите где написать путь к Квику или как сделать, чтобы программа находила мой Квик ?<br />3. SampleSMA. Указываю путь к КВИКу, подключаюсь, указываю счет свой SPBFUT из выпадающего списка, на этом практически все заканчивается, ошущение, что DDE не выводится, кнопка Старт – не активна, а при нажатии на кнопку Отчет – выпадает ощибка.<br />Как поправить, и вообше как запустить эти примеры, чтобы хоть посмотреть как работают и на их примере изучать.<br /><br />PS Как копипастить сюда ошибки из окон , если в них не выделяется текст?https://stocksharp.ru/topic/1492/как подключить библиотеку в проект c#?2011-04-04T20:26:06Z2011-04-04T20:26:06Zbleedhttps://stocksharp.ru/users/28060/info@stocksharp.ruДобрый день,<br /><br />читал мануал по c#, разбирался в api, изучал примеры вроде пока все понятно, <br />решил попробовать написать простенького анализатора,<br /><br />создал новый проект, консольное приложение<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><br />namespace ConsoleApplication1<br />{<br /> using System;<br /> using System.Collections.Generic;<br /> using System.Linq;<br /> using System.Text;<br /><br /> using Ecng.Common;<br /> using Ecng.Trading.Smart;<br /> <br /> class Program<br /> {<br /><br /> static void Main(string[] args)<br /> {<br /> SmartTrader trader = new SmartTrader("login", "pass");<br /><br /> trader.Connected += () =><br /> {<br /> Console.WriteLine("connected");<br /> };<br /><br /> trader.Disconnected += () =><br /> {<br /> Console.WriteLine("disconnected");<br /> };<br /><br /> trader.ConnectionError += error =><br /> {<br /> Console.WriteLine(error.ToString());<br /> };<br /><br /> trader.Connect();<br /> }<br /> }<br />}<br /></div></div><br /><br /><br />пишет что Ecng не находит, оки оно и понятно, надо указать путь к файлам либы,<br />открываю обозреватель решений->ссылки->добавляю новую ссылку на необходимый файл.<br /><br />ошибки уходят, Code Assist видит иерархию Ecng, будто все нормально отправляю на отладку,<br />выдает ошибки:<br />Имя типа или пространства имен "Trading" отсутствует в пространстве имен "Ecng" (пропущена ссылка на сборку?)<br /><br />Очевидно что что то я упустил, ткните носом плиз весь день убил сегодня, как всетаки правильно подключать файлы библиотеки?<br />https://stocksharp.ru/topic/1491/А не забацать ли нам индюки?2011-04-04T19:08:28Z2011-04-04T19:08:28ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ruВсем миром, тоесть всей комьюнити. Предлагаю организацию работы аналогичную Плазе. Как плюс такой работы - все индикаторы будут с исходниками и можно будет их подправить в случае своего уникального алгоритма.<br /><br />Кто что уже делал в этой области, откликнитесь. Можно сразу с кодом, как это уже <a href="http://stocksharp.com/forum/1435/Nabor-indikatorov/" title="http://stocksharp.com/forum/1435/Nabor-indikatorov/">сделали здесь</a>.<br /><br />Так же, отпишитесь, кто желает и у кого есть идеи по организации, наполнении БД индикаторов. Навыки в участии здесь шире, чем у Плазы. Сразу видится как минимум две роли: аналитик (кто помогает сформулировать требование, найти грамотное описание, провести зависимость между другими индикаторами) и разработчик (собственно, кто переводит это дело в код).https://stocksharp.ru/topic/1490/Кросс-заявки2011-04-04T16:28:25Z2011-04-04T16:28:25Zwatashihttps://stocksharp.ru/users/28457/info@stocksharp.ruДоброго времени суток, уважаемые коллеги!<br /><br />Столкнулся с проблемой кросс-заявок. Это ситуация, когда выставляемая заявка встречается со своей же уже выставленной противоположной заявкой. Такое происходит на не особо ликвидных бумагах и/или в вечернюю сессию, когда своя заявка стоит лучшей в стакане. Кто как борется?<br /><br /><b>Update.</b> Я пока ничего лучше этого не придумал:<br /><br /><div class="code"><strong>Код</strong><div class="innercode">double price = 100;<br />Order order;<br />String msg = "";<br /><br />while (true)<br />{<br /> order = new Order<br /> {<br /> Portfolio = _portfolio,<br /> Price = price,<br /> Direction = OrderDirections.Buy,<br /> Security = _lkoh,<br /> Volume = 1,<br /> };<br /><br /> try<br /> {<br /> trader.RegisterOrder(order);<br /> }<br /> catch (Exception ex)<br /> {<br /> msg = ex.Message;<br /> }<br /><br /> if (msg.IndexOf("Обработка кросс-заявок блокирована") >= 0)<br /> {<br /> price = price + 0.01;<br /> Console.WriteLine(msg);<br /> msg = "";<br /> }<br /> else<br /> {<br /> break; <br /> }<br />}<br /></div></div>https://stocksharp.ru/topic/1489/Verifier не видит quik.2011-04-04T12:28:33Z2011-04-04T12:28:33Zstillalivehttps://stocksharp.ru/users/28214/info@stocksharp.ruСобственно вот и проблема.<br />Квик скачал с сайта открытия. 5.21.0.21<br />s# 3.0.19<br /><b>Проблема решена</b>https://stocksharp.ru/topic/1488/VS 2010 vs Express2011-04-02T17:03:58Z2011-04-02T17:03:58Zstillalivehttps://stocksharp.ru/users/28214/info@stocksharp.ruУ меня возник вопрос, полностью ли работает S# под vs2010 express? <br />да и в чем отличие express от professional edition'a рпи работе со стоком?https://stocksharp.ru/topic/1487/Ошибка на сервере2011-03-30T16:46:51Z2011-03-30T16:46:51ZGreene-nskhttps://stocksharp.ru/users/27932/info@stocksharp.ru4ый раз за сегодня при работе на боевом сервере вылетает ошибка. Подскажите, из-за чего такое может быть?<br /><br />30.03.2011 20:20:27 [OpenWealth.GUI.MainWindow.HandleError] ERROR: Ошибка на сервере. (Исключение из HRESULT: 0x80010105 (RPC_E_SERVERFAULT)) в StClientLib.StServerClass.ListenQuotes(String symbol)<br /> в Ecng.Trading.Smart.SmartComWrapper.#=q83RC8QjwGE06bYxuClwq918sUQXQqYO1feg6VKvhYqI=.#=qpoEVZlP9guSr6dgFWp2iCpVGUKf6PtVDt4m9rK13oK8=(StServer #=qAlxNbaLCOD0HiKWsm_9OXQ==)<br /> в Ecng.Trading.Smart.SmartComWrapper.#=q6j2YX3oHz_lUUXkVf8me$A==(Action`1 #=q1KOHdk6GGSGdK9eoSLrYkw==)<br /> в Ecng.Trading.Smart.SmartComWrapper.RegisterSecurity(String securityId)<br /> в Ecng.Trading.Smart.SmartTrader.RegisterSecurity(Security security)<br /> в Ecng.Collections.CollectionHelper.ForEach[T](IEnumerable`1 source, Action`1 action)<br /> в Ecng.Trading.Smart.SmartTrader.#=qQCFKDdV38JU2Ih4XM79WOsrrbMRiLCQCKp9LzQEmKhM=(SynchronizedMultiDictionary`2 #=qgohONNrpRXtYaxKR42nU_g==)<br /> в Ecng.Collections.CollectionHelper.SyncDo[TCollection](TCollection collection, Action`1 action)<br /> в Ecng.Trading.Smart.SmartTrader.ReStartExport()<br /> в #=qPaOSmxcDNS5CuIUgtMiZSiOo7q7sTnVldRbJs7__AlQl92FFNdIuRUDp8OG4kQ5E.#=qKJkHzbVoHxwkiIHT3F_rqMDa5qLkcoyA5PxjgOknG2U=.#=q0s6fqMUJxDorvnlZNpkD2KT_McYu3YpFHxTBO2V2haY=()<br /> в Ecng.Common.ThreadHelper.<>c__DisplayClass1.<CreateTimer>b__0(Object )<br /> в System.Threading._TimerCallback.TimerCallback_Context(Object state)<br /> в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)<br /> в System.Threading._TimerCallback.PerformTimerCallback(Object state)<br />https://stocksharp.ru/topic/1486/Торговля на ММВБ и РТС из S#2011-03-30T06:15:20Z2011-03-30T06:15:20ZVsevolodGhttps://stocksharp.ru/users/1525/info@stocksharp.ruУточните, пожалуйста, в чем разница в торговле на этих биржах? То есть, на что нужно обратить внимание при программировании робота?<br /><br />Я сделал робота, который без проблем работает на ММВБ, но не работает на РТС. Ума не приложу, где может быть проблема.