tantin
|
Дата: 30.06.2012
|
|
|
|
esper Попробуйте вместо _candleManager.Start(series) вызвать _candleManager.Start(series, DateTime.Today, DateTime.Max), т.е. явно указать за какой период нужны свечки.
пробовал еще до того как к вам обратиться, никаких изменений. По поводу экспорта,в моем коде он вызываеться так - _trader.StartExport(); а не _trader.StartExport(new[] { _trader.SecuritiesTable, _trader.TradesTable }); возможно это и играет решающую роль, я проверю в понедельник. Даже скорее всего это и есть. по поводу Доктор Сальватор tantin, обратите внимание на пример SampleCandles. Вот как он работает: 1. Подключаемся 2. Запускаем экспорт DDE командой _trader.StartExport(new[] { _trader.SecuritiesTable, _trader.TradesTable }); То есть начинаем экспорт таблицы инструментов и таблицы всех сделок. 3. Выбираем инструмент, тип свечи и таймфрейм. 4. Вызываем окно с графиком.
Если время, прошедшее между действиями 2 и 4 составит секунд 5-10, то график, который начинается с 10:00, вы не увидите. Он начнётся с 11:00 или более позднего времени. Это происходит от того, что экспорт таблицы всех сделок начался до того, как вы дадите команду _candleManager.Start(series) в методе ShowChartClick.
какбе он(экспорт) и в вашей последовательности действий стоит до вызова графика, и как влияют 5-10 секунд тоже непонятно. Но не суть - мне то как раз график не нужен совершенно, только свечу. OvcharenkoVI Доктор Сальватор тоже истину глаголит. Я использую Альфа-Директ, тут можно выгрузить свечи с сервера. По поводу старта экспорта - он, наверно, имел ввиду старт серии до старта экспорта сделок, хотя метод корявый. Попробуйте со скриптом на qpile Я пока только с Квиком работаю. Alexander Mukhanchikov используйте 4.1.2 а где ее взять то? по ссылке, последнее обновление за 29 мая
|
tantin
|
Дата: 30.06.2012
ок всем спасибо за советы, в понедельник все потестирую, если все получиться, выложу на ваше суждение прогу, и потом возможно ее можно будет как тестовый пример можно использовать, для новичков полезно будет наверно.
|
Arhn
|
Дата: 16.12.2013
|
|
|
|
Ребята, может я не в тему, но это потому что у меня уже мозги вскипели. Ни как не могу понять, что я делаю не так, вроде все по мануалу, но свечки не появляются, один пустой график. XAML Код
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Charting="clr-namespace:StockSharp.Xaml.Charting;assembly=StockSharp.Xaml" xmlns:Custom="http://schemas.stocksharp.com/xaml" x:Class="TestWpfA.MainWindow"
Title="MainWindow" Height="600" Width="800">
<Grid>
<Button x:Name="Cnnect" Content="Connect" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="75" Click="Cnnect_Click" Height="33"/>
<Button x:Name="Start" Content="Start" HorizontalAlignment="Left" Margin="697,10,0,0" VerticalAlignment="Top" Width="75" Click="Start_Click" Height="33"/>
<Charting:Chart x:Name="Chart" ChartTheme="Chrome" IsAutoScroll="True" CrossHair="True" Margin="10,62,10,10"/>
<ComboBox x:Name="PortfoliosComboBox" HorizontalAlignment="Left" Margin="95,21,0,0" VerticalAlignment="Top" Width="120"/>
<Label x:Name="Portfolius" Content="Портфель:" HorizontalAlignment="Left" Margin="104,-2,0,0" VerticalAlignment="Top"/>
<ComboBox x:Name="SecurityComboBox" HorizontalAlignment="Left" Margin="223,21,0,0" VerticalAlignment="Top" Width="120"/>
<Label x:Name="Securities" Content="Инструмент:" HorizontalAlignment="Left" Margin="231,-2,0,0" VerticalAlignment="Top"/>
<DatePicker x:Name="DatePickerFrom" HorizontalAlignment="Left" Margin="452,19,0,0" VerticalAlignment="Top" SelectedDateFormat="Short" Text="Дата с:" IsTodayHighlighted="True" IsEnabled="False"/>
<DatePicker x:Name="DatePickerTo" HorizontalAlignment="Left" Margin="585,19,0,0" VerticalAlignment="Top" Text="Дата по:" IsEnabled="False"/>
<Label x:Name="LabelTo" Content="по" HorizontalAlignment="Left" Margin="558,17,0,0" VerticalAlignment="Top" RenderTransformOrigin="1.485,0.565" IsEnabled="False"/>
<CheckBox x:Name="CheckBoxPeriod" Content="Выбрать
период" HorizontalAlignment="Left" Margin="362,17,0,0" VerticalAlignment="Top" Click="CheckBoxPeriod_Click"/>
<Label x:Name="LabelFrom" Content="с:" HorizontalAlignment="Left" Margin="430,17,0,0" VerticalAlignment="Top" IsEnabled="False"/>
</Grid>
</Window>
КОД Код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Ecng.Collections;
using Ecng.Common;
using Ecng.Configuration;
using Ecng.Xaml;
using StockSharp.Quik;
using StockSharp.Algo;
using StockSharp.Algo.Candles;
using StockSharp.Algo.Indicators;
using StockSharp.Algo.Strategies;
using StockSharp.Algo.Testing;
using StockSharp.BusinessEntities;
using StockSharp.Logging;
using StockSharp.Messages;
using StockSharp.Xaml.Charting;
namespace TestWpfA
{
/// <summary>
/// Логика взаимодействия для MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private QuikTrader _trader;
private CandleSeries _candleSeries;
private CandleManager _candleManager;
private ChartCandleElement _chartCandleElement;
private ChartArea _chartArea;
private void Cnnect_Click(object sender, RoutedEventArgs e)
{
_trader = new QuikTrader(QuikTerminal.GetDefaultPath());
_trader.NewSecurities += securities => this.GuiAsync(() =>
{
SecurityComboBox.ItemsSource = _trader.Securities;
});
_trader.NewPortfolios += portfolios => this.GuiAsync(() =>
{
PortfoliosComboBox.ItemsSource = _trader.Portfolios;
});
_trader.Connected += () => _trader.StartExport();
_trader.Connect();
}
private void Start_Click(object sender, RoutedEventArgs e)
{
_candleManager = new CandleManager(_trader);
_candleSeries = new CandleSeries(typeof(TimeFrameCandle), (Security)SecurityComboBox.SelectedItem, TimeSpan.FromMinutes(1));
_chartCandleElement = new ChartCandleElement();
_chartArea = new ChartArea();
_chartArea.Elements.Add(_chartCandleElement);
Chart.Areas.Add(_chartArea);
_candleManager.Processing += DrawCandle;
if (CheckBoxPeriod.IsChecked == true)
{
_candleManager.Start(_candleSeries, DatePickerFrom.SelectedDate.Value, DatePickerTo.SelectedDate.Value);
}
else
{
_candleManager.Start(_candleSeries);
}
}
private void DrawCandle(CandleSeries series, Candle candle)
{
if (candle.State == CandleStates.Finished) this.GuiAsync(() => Chart.ProcessCandle(_chartCandleElement, candle));
}
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
if (_trader != null)
{
_trader.StopExport();
_trader.Disconnect();
}
base.OnClosing(e);
}
private void CheckBoxPeriod_Click(object sender, RoutedEventArgs e)
{
if (CheckBoxPeriod.IsChecked == true)
{
this.LabelFrom.IsEnabled = true;
this.DatePickerFrom.IsEnabled = true;
this.LabelTo.IsEnabled = true;
this.DatePickerTo.IsEnabled = true;
}
else
{
this.LabelFrom.IsEnabled = false;
this.DatePickerFrom.IsEnabled = false;
this.LabelTo.IsEnabled = false;
this.DatePickerTo.IsEnabled = false;
}
}
}
|