помогите со свечками
Atom
28.06.2012
tantin


я решительно не понимаю, как мне получить свечку за прошедшее время. мой код private QuikTrader _trader; private readonly TimeSpan _timeFrame = TimeSpan.FromMinutes(1);

_candleManager_lkoh = new CandleManager(_trader); series_lkoh = new CandleSeries(typeof(TimeFrameCandle), _lkoh, _timeFrame); _candleManager_lkoh.Start(series_lkoh); var candle_lkoh = series_lkoh.GetCandle(1); MessageBox.Show(candle_lkoh.ClosePrice.ToString()); выдает неверные данные в течение 1 минуты. Просветите нуба!


Теги:


Спасибо:


< 1 2 
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 мая

Спасибо:

Доктор Сальватор

Фотография
Дата: 30.06.2012
Ответить


какбе он(экспорт) и в вашей последовательности действий стоит до вызова графика Команда _trader.StartExport(new[] ) экспортрует только таблицу инструментов. А свечки получают из таблицы всех сделок. Посмотрите ещё раз внимательно код, который я привёл.

и как влияют 5-10 секунд тоже непонятно Запустите в понедельник этот пример и поэкспериментируйте с 5-10 секундами. Ведь свечки для графика берутся тоже из серии свечек. Просто вы вместо графика используете MessageBox.Show(candle_lkoh.ClosePrice.ToString());

Я пока только с Квиком работаю. Посмотрите по этой ссылке http://www.quik.ru/user/download/ в разделе "Прочее" ссылку "Краткая инструкция по языку QPILE ". А также прочитайте раздел документации S# "QUIK/Экспорт произвольных таблиц"

а где ее взять то? по ссылке, последнее обновление за 29 мая Сходите по ссылке http://stocksharp.codeplex.com/. Раздел "source code" содержит последние обновления.

Спасибо: tantin

tantin

Фотография
Дата: 30.06.2012
Ответить


ок всем спасибо за советы, в понедельник все потестирую, если все получиться, выложу на ваше суждение прогу, и потом возможно ее можно будет как тестовый пример можно использовать, для новичков полезно будет наверно.

Спасибо:

tantin

Фотография
Дата: 02.07.2012
Ответить


все изменил как вы советовали - не помогло, пошел курить "экспорт произвольных таблиц", а вы то сами как свечки экспортите? Ps все в порядке - разобрался, все работает, в ближайшее время выложу прогу на ваше суждение

Спасибо:

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="Выбрать&#xD;&#xA;период" 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;
            }
        }        
    }

Спасибо:

Arhn

Фотография
Дата: 19.12.2013
Ответить


Ребята, извините пожалуйста, оказывается все работает. Просто я до этого проверял на ММВБ после закрытия и на демке.[blush]

Спасибо:
< 1 2 

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy