Roman0
|
Дата: 30.07.2011
Подскажите, пожалуйста, можно ли динамически задавать название таблицы в [DdeCustomTable("вот это название")] ( пример)? Вроде бы нельзя, т.к. по поводу атрибутов много ограничений, но может быть все-таки как-то можно? Смысл в том, чтобы брать исторические данные из соответствующей таблицы, название которой состоит из инструмента и таймфрейма и таким образом контролировать то, что получает программа. Наверное можно это все выводить в саму таблицу, но в таком случае как-то не очень рационально получается. Спасибо.
|
|
Спасибо:
|
|
|
|
|
Maxim K.
|
Дата: 30.07.2011
Теоретически вроде можно с помощью рефлекции что-нибудь такое замутить, но на практике - я думаю врядли стоит тратить на это время - придется MSIL курить, а он не так бодр как c#. Хотя если набор колонок у вас всегда постоянный, а меняется только название таблицы, то наверное будет проще намного.
|
|
|
|
|
Alex Ander
|
Дата: 30.07.2011
Roman0 Подскажите, пожалуйста, можно ли динамически задавать название таблицы в [DdeCustomTable("вот это название")] ( пример)? Вроде бы нельзя, т.к. по поводу атрибутов много ограничений, но может быть все-таки как-то можно? Смысл в том, чтобы брать исторические данные из соответствующей таблицы, название которой состоит из инструмента и таймфрейма и таким образом контролировать то, что получает программа. Наверное можно это все выводить в саму таблицу, но в таком случае как-то не очень рационально получается. Спасибо. Я убрал этот атрибут и задаю название таблицы в конструкторе. Код
DdeCustomTable _tableRI = new DdeCustomTable(typeof(QuikCandle), "RIU1 1H");
DdeCustomTable _tableGZ = new DdeCustomTable(typeof(QuikCandle), "GZU1 1H");
В таблицу и класс QuikCandle добавил еще одну колонку с названием инструмента.
|
|
|
|
|
Roman0
|
Дата: 30.07.2011
Alex Ander Roman0 Подскажите, пожалуйста, можно ли динамически задавать название таблицы в [DdeCustomTable("вот это название")] ( пример)? Вроде бы нельзя, т.к. по поводу атрибутов много ограничений, но может быть все-таки как-то можно? Смысл в том, чтобы брать исторические данные из соответствующей таблицы, название которой состоит из инструмента и таймфрейма и таким образом контролировать то, что получает программа. Наверное можно это все выводить в саму таблицу, но в таком случае как-то не очень рационально получается. Спасибо. Я убрал этот атрибут и задаю название таблицы в конструкторе. Код
DdeCustomTable _tableRI = new DdeCustomTable(typeof(QuikCandle), "RIU1 1H");
DdeCustomTable _tableGZ = new DdeCustomTable(typeof(QuikCandle), "GZU1 1H");
В таблицу и класс QuikCandle добавил еще одну колонку с названием инструмента. Большое спасибо! На конструкторы даже не посмотрел... [smile]
|
|
Спасибо:
|
|
|
|
|
freelancer
|
Дата: 02.08.2011
А как узнать текущую сумму на ФОРТС ? С учетом вариационной маржи ?
SelectedPortfolio.ExtensionInfo[DdeDerivativePortfolioColumns.CurrentLimitPositionsPrice] вызывает исключение (ключ не найден)
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 02.08.2011
freelancer А как узнать текущую сумму на ФОРТС ? С учетом вариационной маржи ?
SelectedPortfolio.ExtensionInfo[DdeDerivativePortfolioColumns.CurrentLimitPositionsPrice] вызывает исключение (ключ не найден) http://stocksharp.com/do...2c-9fc5-27ecb07bdf5e.htm
|
|
Спасибо:
|
|
|
|
|
Teddy
|
Дата: 03.08.2011
вопрос по выводу данных через произвольную таблицу quik/ делал как в примере данные выходят. но нужно чтобы строка просто обновлялась а не добавлялась новая. написано что нужно добавить IdentityAttribute. добавлял но всё так же. и как собственно обратиться к выводимым столбцам таблицы из кода своей стратегии. примеров на форуме не нашёл,если можно примеры кода. вот код Код
namespace SampleDdeCustomTable
{
using System;
using System.ComponentModel;
using Ecng.Common;
using Ecng.Serialization;
using StockSharp.Quik;
[DdeCustomTable("BOT2")]
public class BOT2 : INotifyPropertyChanged
{
public BOT2() { }
private string _instrument;
[DdeCustomColumn("Инструмент", Order = 0)]
public string instrument
{
get { return _instrument; }
set { _instrument = value; NotifyPropertyChanged("Инструмент"); }
}
private decimal _High;
[DdeCustomColumn("High", Order = 1)]
[Identity]
public decimal High
{
get { return _High; }
set{_High=value;NotifyPropertyChanged("High");}
}
private decimal _Low;
[DdeCustomColumn("Low", Order = 2)]
public decimal Low
{
get { return _Low; }
set { _Low = value; NotifyPropertyChanged("Low"); }
}
private decimal _SMA;
[DdeCustomColumn("SMA", Order = 3)]
public decimal SMA
{
get { return _SMA; }
set { _SMA = value; NotifyPropertyChanged("SMA"); }
}
private PropertyChangedEventHandler _propertyChanged;
event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged
{
add { _propertyChanged += value; }
remove { _propertyChanged -= value; }
}
private void NotifyPropertyChanged(string info)
{
if (_propertyChanged != null)
_propertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}
|
|
Спасибо:
|
|
|
|
|
freelancer
|
Дата: 04.08.2011
У меня сейчас так:
_trader.DerivativePortfoliosTable.Columns.Add(DdeDerivativePortfolioColumns.CurrentLimitPositionsPrice); Не добавляется, говорит что уже есть.
portfoliosComboBox.SelectedPortfolio.ExtensionInfo[DdeDerivativePortfolioColumns.CurrentLimitPositionsPrice] Нет такого ключа.
Как правильно получить лимит отк. поз. ?
|
|
Спасибо:
|
|
|
|
|
vader
|
Дата: 04.08.2011
Событие стратегии NewMyTrades происходит один раз. Почему? Код
this.NewMyTrades += mytrades => {
MessageBox.Show("Event");
MyTrades.PushRange(mytrades.ToArray());
};
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 04.08.2011
vader Событие стратегии NewMyTrades происходит один раз. Почему? Код
this.NewMyTrades += mytrades => {
MessageBox.Show("Event");
MyTrades.PushRange(mytrades.ToArray());
};
Запустил пример Sample. Событие вызывается всегда, когда происходит сделка.
|
|
Спасибо:
|
|
|
|