Mikhail Sukhov
|
Дата: 30.11.2010
1. Посмотрите, изменяется ли текущая свечка через CandleManager.CandlesChanged. Кстати, ctv= ActionStrategyConditionHelper.CurrentCandleTotalVolumeMore(token, 1); -> или короче, ctv= token.CurrentCandleTotalVolumeMore(1); Почитайте про extension methods в C# 2. а. using Ecng.Collections; (те же extension methods). Да, trades. Опечатка. _takeProfit - это делегаты. Тело обычное - new TakeProfitStrategy(trades, new Unit()); 2. б. Хм, логично. Надо проверять.
|
|
|
|
|
ustas
|
Дата: 30.11.2010
Mikhail Sukhov1. Посмотрите, изменяется ли текущая свечка через CandleManager.CandlesChanged. да свечка меняется , я её вывожу там же в DrawCandles. (как я уже написал "при этом данные по свечкам ок") Mikhail Sukhov Кстати, ctv= ActionStrategyConditionHelper.CurrentCandleTotalVolumeMore(token, 1); -> или короче, ctv= token.CurrentCandleTotalVolumeMore(1); Почитайте про extension methods в C#
Спасибо. Mikhail Sukhov 2. а. using Ecng.Collections; (те же extension methods). Да, trades. Опечатка. _takeProfit - это делегаты. Тело обычное - new TakeProfitStrategy(trades, new Unit());
Понятно, спасибо.
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 30.11.2010
ustasMikhail Sukhov1. Посмотрите, изменяется ли текущая свечка через CandleManager.CandlesChanged. да свечка меняется , я её вывожу там же в DrawCandles. (как я уже написал "при этом данные по свечкам ок") Посмотрите в обработчике, что выдает token.Manager.GetCurrentTimeFrameCandle(token.Security, timeFrame); и чему у такой свечки равен TotalVolume.
|
|
Спасибо:
|
|
|
|
|
ustas
|
Дата: 30.11.2010
Mikhail Sukhov Посмотрите в обработчике, что выдает token.Manager.GetCurrentTimeFrameCandle(token.Security, timeFrame); и чему у такой свечки равен TotalVolume.
а вот token.Manager.GetCurrentTimeFrameCandle(token.Security, timeFrame); выдаёт всё врема null почему то :( хотя свечки рисуются, правда рисую я их по candles В 2.5.2 работало 100 пудов, я ничего не менял :) Вы вот тут что то правили, не могли задеть? Спасибо и с уважением!
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 30.11.2010
ustasMikhail Sukhov Посмотрите в обработчике, что выдает token.Manager.GetCurrentTimeFrameCandle(token.Security, timeFrame); и чему у такой свечки равен TotalVolume.
а вот token.Manager.GetCurrentTimeFrameCandle(token.Security, timeFrame); выдаёт всё врема null почему то :( хотя свечки рисуются, правда рисую я их по candles В 2.5.2 работало 100 пудов, я ничего не менял :) Вы вот тут что то правили, не могли задеть? Спасибо и с уважением! ITrader.MarketTime все корректно возвращает? Если копнуть еще поглубже, CandleManager.GetTimeFrameCandle для необходимо времени так же null возвращает?
|
|
Спасибо:
|
|
|
|
|
ustas
|
Дата: 01.12.2010
Mikhail Sukhov
ITrader.MarketTime все корректно возвращает? Если копнуть еще поглубже, CandleManager.GetTimeFrameCandle для необходимо времени так же null возвращает?
Извиняюсь за паузу. Отъезжал. Да ITrader.MarketTime - верный , а вот CandleManager.GetTimeFrameCandle всё время даёт null :(
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 01.12.2010
ustasMikhail Sukhov
ITrader.MarketTime все корректно возвращает? Если копнуть еще поглубже, CandleManager.GetTimeFrameCandle для необходимо времени так же null возвращает?
Извиняюсь за паузу. Отъезжал. Да ITrader.MarketTime - верный , а вот CandleManager.GetTimeFrameCandle всё время даёт null :( А свечки то вообще формируются? NewCandles CandlesChanged?
|
|
Спасибо:
|
|
|
|
|
ustas
|
Дата: 01.12.2010
Mikhail Sukhov
А свечки то вообще формируются? NewCandles CandlesChanged?
ну да, как я говорил, я же их рисую в DrawCandles по candles из событий NewCandles и CandlesChanged
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 02.12.2010
ustasMikhail Sukhov
А свечки то вообще формируются? NewCandles CandlesChanged?
ну да, как я говорил, я же их рисую в DrawCandles по candles из событий NewCandles и CandlesChanged У меня по тестам свечка выдается. Попробуйте все таки точно определить, то ли время передается в CandleManager и есть ли на тот момент свечка (получив их через GetTimeFrameCandles и сравнив, имеет ли необходимая среди нет).
|
|
Спасибо:
|
|
|
|
|
ustas
|
Дата: 02.12.2010
|
|
|
|
Mikhail Sukhov У меня по тестам свечка выдается. Попробуйте все таки точно определить, то ли время передается в CandleManager и есть ли на тот момент свечка (получив их через GetTimeFrameCandles и сравнив, имеет ли необходимая среди нет).
А у меня нет :( Ну вот полностью код примера c выводом Кодnamespace testHelper { using System; using System.Linq; using System.Threading; using System.Collections.Generic; using System.ComponentModel;
using Ecng.Trading.Algo; using Ecng.Trading.Algo.Candles; using Ecng.Trading.Algo.Strategies; using Ecng.Trading.Algo.Logging; using Ecng.Trading.BusinessEntities; using Ecng.Trading.Quik; using Ecng.Interop; using Ecng.Data; using Ecng.Common; using Ecng.ComponentModel;
public class Program { private static Portfolio _port; private static Security _sec; private static QuikTrader _trader; private static Func<bool> ctv; private static CandleManager _candleManager; private static readonly TimeSpan _timeFrame = TimeSpan.FromMinutes(1.0 / 6.0);
static void Main() {
using (var waitHandle = new ManualResetEvent(false)) {
_trader = new QuikTrader(); _trader.Connect();
_trader.NewPortfolios += portfolios => { if (_port == null) { _port = portfolios.FirstOrDefault();
if (_port != null) { Console.WriteLine("Портфель {0} появился.", _port.Name); waitHandle.Set(); } } };
_trader.NewSecurities += securities => { if (_sec == null) { _sec = securities.FirstOrDefault(sec => sec.Code == "SRZ0"); if (_sec != null) { Console.WriteLine(_sec.Code + " появился"); waitHandle.Set();
} } };
waitHandle.WaitOne();
_trader.IsAsyncMode = true; _trader.Terminal.StartDde(new[] { _trader.SecuritiesTable, _trader.TradesTable });
_trader.Connected += () => {
Console.WriteLine("Connected"); waitHandle.Set();
};
if (_sec != null) { _candleManager = new CandleManager(_trader); _candleManager.RegisterTimeFrameCandles(_sec, _timeFrame);
_candleManager.NewCandles += (token, candles) => {
var _nextTime = _timeFrame.GetCandleBounds(_trader).Max; var candle = _candleManager.GetTimeFrameCandle(_sec, _timeFrame, _nextTime - _timeFrame); ctv = ActionStrategyConditionHelper.CurrentCandleTotalVolumeMore(token, 1);
if (candle != null) { ctv = ActionStrategyConditionHelper.CurrentCandleTotalVolumeMore(token,1); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("new candle time:{0} TotalVolume:{1} ctv:{2}",candle.Time, candle.TotalVolume, ctv()); Console.ForegroundColor = ConsoleColor.Gray; } DrawCandles(candles); };
_candleManager.CandlesChanged += (token, candles) => { // _strat.Dispose(); ctv = ActionStrategyConditionHelper.CurrentCandleTotalVolumeMore(token, 1); DrawCandles(candles); }; }
waitHandle.WaitOne();
Console.WriteLine("Чтобы закончить, нажмите любую кнопку..."); Console.Read();
}
}
private static void DrawCandles(IEnumerable<Candle> candles) { foreach (var candle in candles) { if (_trader != null && candle.Time >= _timeFrame.GetCandleBounds(_trader).Min) { string str = _trader.MarketTime + "? " + ctv() + " " + candle.Security.Code + " " + candle.Time.TimeOfDay + " " + _trader.MarketTime.TimeOfDay + " " + candle.ClosePrice + " " + candle.TotalVolume ; Console.WriteLine(str); } } }
} }
вывод Цитата:Портфель ..... появился. SRZ0 появился Чтобы закончить, нажмите любую кнопку... new candle time:02.12.2010 17:31:00 TotalVolume:238 ctv:False 02.12.2010 17:31:08? False SRZ0 17:31:00 17:31:08.0237782 10273 238 02.12.2010 17:31:08? False SRZ0 17:31:00 17:31:08.3317958 10275 261 02.12.2010 17:31:08? False SRZ0 17:31:00 17:31:08.6288128 10275 311 new candle time:02.12.2010 17:31:10 TotalVolume:86 ctv:False 02.12.2010 17:31:10? False SRZ0 17:31:10 17:31:10.8129377 10275 86 02.12.2010 17:31:12? False SRZ0 17:31:10 17:31:12.3740270 10275 146 02.12.2010 17:31:12? False SRZ0 17:31:10 17:31:12.6860449 10279 222 02.12.2010 17:31:13? False SRZ0 17:31:10 17:31:13.3090805 10274 292 02.12.2010 17:31:13? False SRZ0 17:31:10 17:31:13.6220984 10275 293 02.12.2010 17:31:15? False SRZ0 17:31:10 17:31:15.1811876 10275 301 02.12.2010 17:31:15? False SRZ0 17:31:10 17:31:15.4932054 10273 313 02.12.2010 17:31:16? False SRZ0 17:31:10 17:31:16.1172411 10275 314 02.12.2010 17:31:16? False SRZ0 17:31:10 17:31:16.7412768 10276 317 02.12.2010 17:31:19? False SRZ0 17:31:10 17:31:19.2364195 10277 318 new candle time:02.12.2010 17:31:20 TotalVolume:13 ctv:False 02.12.2010 17:31:20? False SRZ0 17:31:20 17:31:20.1734731 10276 13 02.12.2010 17:31:21? False SRZ0 17:31:20 17:31:21.1115268 10276 16 02.12.2010 17:31:21? False SRZ0 17:31:20 17:31:21.7375626 10275 20 02.12.2010 17:31:22? False SRZ0 17:31:20 17:31:22.6776164 10276 32 02.12.2010 17:31:23? False SRZ0 17:31:20 17:31:23.6056694 10276 44 02.12.2010 17:31:24? False SRZ0 17:31:20 17:31:24.5407229 10276 49 02.12.2010 17:31:25? False SRZ0 17:31:20 17:31:25.7947947 10276 52 new candle time:02.12.2010 17:31:30 TotalVolume:113 ctv:False 02.12.2010 17:31:30? False SRZ0 17:31:30 17:31:30.1570442 10278 113 02.12.2010 17:31:30? False SRZ0 17:31:30 17:31:30.4770625 10276 122 02.12.2010 17:31:30? False SRZ0 17:31:30 17:31:30.7930805 10276 126 02.12.2010 17:31:31? False SRZ0 17:31:30 17:31:31.4191163 10276 128 02.12.2010 17:31:31? False SRZ0 17:31:30 17:31:31.7171334 10277 131 02.12.2010 17:31:32? False SRZ0 17:31:30 17:31:32.3411691 10279 139 02.12.2010 17:31:32? False SRZ0 17:31:30 17:31:32.9672049 10278 140 02.12.2010 17:31:33? False SRZ0 17:31:30 17:31:33.2772226 10277 143 02.12.2010 17:31:33? False SRZ0 17:31:30 17:31:33.5892405 10277 146 02.12.2010 17:31:34? False SRZ0 17:31:30 17:31:34.2122761 10280 363 02.12.2010 17:31:34? False SRZ0 17:31:30 17:31:34.5252940 10282 749 02.12.2010 17:31:34? False SRZ0 17:31:30 17:31:34.8363118 10284 755 02.12.2010 17:31:35? False SRZ0 17:31:30 17:31:35.1483296 10281 758 02.12.2010 17:31:35? False SRZ0 17:31:30 17:31:35.4783485 10280 777 02.12.2010 17:31:36? False SRZ0 17:31:30 17:31:36.7114191 10279 784 02.12.2010 17:31:37? False SRZ0 17:31:30 17:31:37.0234369 10279 792 02.12.2010 17:31:38? False SRZ0 17:31:30 17:31:38.5825261 10278 952 new candle time:02.12.2010 17:31:40 TotalVolume:135 ctv:False 02.12.2010 17:31:40? False SRZ0 17:31:40 17:31:40.1446154 10281 135 02.12.2010 17:31:40? False SRZ0 17:31:40 17:31:40.4646337 10281 339 02.12.2010 17:31:42? False SRZ0 17:31:40 17:31:42.0157224 10282 343 02.12.2010 17:31:42? False SRZ0 17:31:40 17:31:42.9687770 10283 344 02.12.2010 17:31:45? False SRZ0 17:31:40 17:31:45.4449186 10281 346 02.12.2010 17:31:46? False SRZ0 17:31:40 17:31:46.0709544 10280 372 02.12.2010 17:31:48? False SRZ0 17:31:40 17:31:48.5650970 10279 382
Видим что Helper всё время false Что же я всё таки делаю не так? В 2.5.2 это работало Спасибо и с уважением! (Update) только что собрал этот же пример не поменяв ни строчки на 2.5.2 вот вывод Цитата:Портфель ...... появился. SRZ0 появился Чтобы закончить, нажмите любую кнопку... new candle time:02.12.2010 17:46:10 TotalVolume:4 ctv:True 02.12.2010 17:46:12? True SRZ0 17:46:10 17:46:12.0266640 10315 4 02.12.2010 17:46:14? True SRZ0 17:46:10 17:46:14.1737868 10316 16 new candle time:02.12.2010 17:46:20 TotalVolume:251 ctv:True 02.12.2010 17:46:21? True SRZ0 17:46:20 17:46:21.9742329 10316 251 02.12.2010 17:46:23? True SRZ0 17:46:20 17:46:23.5333221 10320 281 new candle time:02.12.2010 17:46:30 TotalVolume:32 ctv:True 02.12.2010 17:46:30? True SRZ0 17:46:30 17:46:30.3977147 10316 32 02.12.2010 17:46:31? True SRZ0 17:46:30 17:46:31.6497863 10317 39 02.12.2010 17:46:35? True SRZ0 17:46:30 17:46:35.0769824 10316 40 02.12.2010 17:46:38? True SRZ0 17:46:30 17:46:38.1981609 10315 55 02.12.2010 17:46:39? True SRZ0 17:46:30 17:46:39.1352145 10313 193 new candle time:02.12.2010 17:46:30 TotalVolume:193 ctv:True 02.12.2010 17:46:39? True SRZ0 17:46:40 17:46:39.7612503 10312 1 02.12.2010 17:46:40? True SRZ0 17:46:40 17:46:40.3812858 10314 21
|
|
Спасибо:
|
|
|
|