示例#1
0
文件: Trade.cs 项目: fagan2888/CAT
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="setupid">Identifies the strategy</param>
        /// <param name="type">Buy (+1) or Sell (-1)</param>
        /// <param name="tick">Condition to start trade</param>
        /// <param name="discount">Discount on brokage commission</param>
        public Trade(int type, Tick tick, Setup setup)
        {
            this.Id         = Guid.NewGuid();
            this.SetupId    = setup.SetupId;
            this.Type       = type;
            this.Symbol     = tick.Symbol;
            this.EntryTime  = tick.Time;
            this.EntryValue = tick.Value;
            this.Slippage   = setup.Slippage;
            this.IStatus    = Status.Idle;

            this.AssetClass = tick.GetClass();
            this.MinVar     = tick.GetMinVar();
            this.Unit       = tick.GetUnit();
            var commissions = tick.GetCommissions();
            var rebate      = Math.Min(1, Math.Max(0, 1 - setup.Discount / 100));

            this.BkrFixComm = commissions[0] * rebate;
            _bkrvarcomm     = commissions[1] * rebate;
            _bspvarcomm     = commissions[2];

            this.State      = "WhiteSmoke";
            this.IsDayTrade = setup.DayTradeDuration > 0;
            this.CloseTime  = tick.Time.Date.AddDays(1).AddSeconds(-1);

            this.SetQnty(setup.Capital);
            this.SetLoss(setup.StaticLoss);
            this.SetGain(setup.StaticGain);
            this.GetNetResult(null);   // Clean up "initial" NetResult
        }
示例#2
0
        private void OnTickArrived(object sender, DdeAdviseEventArgs e)
        {
            var value = 0m;

            if (TickArrived == null || !decimal.TryParse(e.Text, out value))
            {
                return;
            }
            if (BvspTime.Hour < 9 || value == 0)
            {
                return;
            }

            Task.Factory.StartNew(() =>
            {
                var symbol = e.Item.Split('.')[0].Split(';')[0];
                var dde    = e.Item.Contains(";") ? "CMA" : "NPC";
                if (dde == "CMA")
                {
                    symbol = symbol.Substring(4);
                }

                var tick = new Tick(symbol, BvspTime, value);

                if (BvspTime.Hour == 9)
                {
                    if (!tick.GetClass().Contains("BMF"))
                    {
                        return;
                    }
                }

                TickArrived(tick); //NotifyOMS(tick.ToString() + " from " + dde);
                _lasttime[dde] = tick.Time;

                //if (!IsDeveloper) return;
                //Table.Execute(TableOperation.InsertOrReplace(tick));
            });
        }