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. Событие вызывается всегда, когда происходит сделка.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 |