コード例 #1
0
ファイル: TotalCounter.cs プロジェクト: smther/FreeOQ
		public void Add(TradeEventArgs args)
		{
			lock (this.lockObject)
			{
				this.GetProviderCounter((IProvider)((IntradayEventArgs)args).Provider).AddTrade(((IntradayEventArgs)args).Instrument);
				this.Trades.Increment();
			}
		}
コード例 #2
0
 private static void EmitNewTrade(object sender, TradeEventArgs e)
 {
     if (ProviderManager.threadSafe)
     {
         Monitor.Enter(ProviderManager.dataLock);
     }
     try
     {
         if (ProviderManager.NewTrade != null)
         {
             ProviderManager.NewTrade(sender, e);
         }
     }
     finally
     {
         if (ProviderManager.threadSafe)
         {
             Monitor.Exit(ProviderManager.dataLock);
         }
     }
 }
コード例 #3
0
ファイル: DataCaptureWindow.cs プロジェクト: smther/FreeOQ
 private void OnNewTrade(object sender, TradeEventArgs args)
 {
   if (!this.isRunning || !this.cbxTrades.Checked)
     return;
   this.queue.Enqueue((Action) (() =>
   {
     Instrument local_0 = ((IntradayEventArgs) args).Instrument as Instrument;
     InstrumentRow local_1 = this.instruments[local_0] as InstrumentRow;
     if (local_1 == null)
       return;
     local_0.Add(args.Trade);
     ++local_1.Trades;
   }));
 }
コード例 #4
0
ファイル: DataManager.cs プロジェクト: heber/FreeOQ
        private static void OnNewTrade(object sender, TradeEventArgs e)
        {
            Instrument instrument = e.Instrument as Instrument ?? InstrumentManager.Instruments[e.Instrument.Symbol, e.Provider.Name];
            if (instrument == null)
                return;

            Trade trade = e.Trade;
            if (DataManager.tradeArrayLength != 0)
            {
                TradeArray tradeArray = DataManager.tradeArrayList[instrument];
                tradeArray.Add(trade);
                if (DataManager.tradeArrayLength != -1 && tradeArray.Count > DataManager.tradeArrayLength)
                {
                    tradeArray.RemoveAt(0);
                }
            }
            instrument.EmitNewTrade(new TradeEventArgs(trade, instrument, e.Provider));
        }
コード例 #5
0
ファイル: EventMonitorWindow.cs プロジェクト: smther/FreeOQ
 private void ProviderManager_NewTrade(object sender, TradeEventArgs args)
 {
     this.counter.Add(args);
 }
コード例 #6
0
ファイル: MetaStrategyBase.cs プロジェクト: heber/FreeOQ
		internal void CMFW95B91R(TradeEventArgs obj0)
		{
			try
			{
				Instrument instrument = obj0.Instrument as Instrument;
				Trade trade = obj0.Trade;
				foreach (StrategyBase strategyBase in this.MU0WP1r0b1(obj0.Provider, instrument))
					strategyBase.gSQVAlpOg(instrument, trade);
				this.metaMoneyManager.OnTrade(instrument, trade);
				this.OnNewTrade(instrument, trade);
			}
			catch (Exception ex)
			{
				this.x6bWBlLIvv(ex);
			}
		}
コード例 #7
0
ファイル: zo21q6cy3fImtUHATQ.cs プロジェクト: heber/FreeOQ
		private void YGKFrq1UXP(object obj0, TradeEventArgs obj1)
		{
			this.Y18FFPmDy5((Quote) null, obj1.Trade, (Bar) null);
		}
コード例 #8
0
ファイル: Portfolio.cs プロジェクト: smther/FreeOQ
 private void OnNewTrade(object sender, TradeEventArgs e)
 {
     lock (this.dataLock)
     {
         Position position = this.positions[(Instrument)e.Instrument];
         if (position != null)
         {
             position.EmitValueChanged();
             this.EmitValueChanged(position);
         }
     }
 }
コード例 #9
0
ファイル: Instrument.cs プロジェクト: heber/FreeOQ
 internal void EmitNewTrade(TradeEventArgs e)
 {
     if (this.Trade.Price != 0.0 && this.Trade.Price != e.Trade.Price)
         this.Change = e.Trade.Price - this.Trade.Price;
     this.Trade = e.Trade;
     if (this.NewTrade != null)
     {
         this.NewTrade(this, e);
     }
 }
コード例 #10
0
ファイル: InstrumentPad.cs プロジェクト: smther/FreeOQ
		public void OnNewTrade(object sender, TradeEventArgs args)
		{
			if (((IntradayEventArgs)args).Instrument != this.instrument)
				return;
			if (((DataArray)DataManager.Trades[this.instrument]).Count == 1 && ((DataArray)DataManager.Quotes[this.instrument]).Count == 0)
				this.isFirstTime = true;
			DateTime lastDateTime = ((DataArray)DataManager.Trades[this.instrument]).LastDateTime;
			int num = ((DataArray)DataManager.Trades[this.instrument]).Count - 2;
			while (num >= 0 && DataManager.Trades[this.instrument][num].DateTime == lastDateTime)
				--num;
			if (num < 0)
				return;
//			DataManager.Trades[this.instrument][num].DateTime;
			if (lastDateTime >= this.lastUpdateDate)
			{
				if (this.isFirstTime)
				{
					this.pad.SetRangeX((double)(((DataArray)DataManager.Trades[this.instrument]).LastDateTime.Ticks - 9000000000L), (double)((DataArray)DataManager.Trades[this.instrument]).LastDateTime.Ticks);
					this.isFirstTime = false;
				}
				else
					this.pad.SetRangeX((double)((DataArray)DataManager.Trades[this.instrument]).LastDateTime.Ticks + this.pad.XMin - (double)this.lastUpdateDate.Ticks, (double)((DataArray)DataManager.Trades[this.instrument]).LastDateTime.Ticks + (this.pad.XMax - (double)this.lastUpdateDate.Ticks));
			}
			this.lastUpdateDate = lastDateTime;
		}
コード例 #11
0
ファイル: ProviderManager.cs プロジェクト: heber/FreeOQ
 private static void EmitNewTrade(object sender, TradeEventArgs e)
 {
     if (ProviderManager.threadSafe)
         Monitor.Enter(ProviderManager.dataLock);
     try
     {
         if (ProviderManager.NewTrade != null)
             ProviderManager.NewTrade(sender, e);
     }
     finally
     {
         if (ProviderManager.threadSafe)
             Monitor.Exit(ProviderManager.dataLock);
     }
 }
コード例 #12
0
ファイル: PerformanceCounter.cs プロジェクト: smther/FreeOQ
 private void ProviderManager_NewTrade(object sender, TradeEventArgs args)
 {
   lock (this)
   {
     ++this.countTrade;
     ++this.countMarketDataTotal;
   }
 }
コード例 #13
0
ファイル: SolutionRunner.cs プロジェクト: smther/FreeOQ
 private void marketDataProvider_NewTrade(object sender, TradeEventArgs args)
 {
     FreeQuant.Instruments.Instrument instrument = args.Instrument as FreeQuant.Instruments.Instrument;
     List<StrategyRunner> list = (List<StrategyRunner>)null;
     if (!this.instrumentTable.TryGetValue(instrument, out list))
         return;
     foreach (StrategyRunner strategyRunner in list)
     {
         if (strategyRunner.Enabled)
             strategyRunner.SetNewTrade(instrument, args.Trade);
     }
 }
コード例 #14
0
ファイル: QuoteMonitorWindow.cs プロジェクト: smther/FreeOQ
 protected virtual void OnNewTrade(object sender, TradeEventArgs args)
 {
     if (((IntradayEventArgs)args).Provider != this.marketDataProvider)
         return;
     QuoteViewRow quoteViewRow;
     bool flag;
     lock (this.lockObject)
         flag = this.quoteRows.TryGetValue(((IntradayEventArgs)args).Instrument, out quoteViewRow);
     if (!flag)
         return;
     if (this.eventQueue.Enabled)
         this.eventQueue.Enqueue(new MarketDataUpdateItem((MarketDataViewRow)quoteViewRow, null, args.Trade, null));
     else
         quoteViewRow.Update((Quote)null, args.Trade, null);
     this.instrumentPad.OnNewTrade(sender, args);
 }