예제 #1
0
        public bool IsMatch(out Candlesticks.Signal signal, TradeContext tradeContext)
        {
            signal = null;
            DateTime date = tradeContext.Date;

            if (date.Add(CheckStartTime) > date.Add(CheckEndTime))
            {
                throw new Exception("checkStartDateTime > checkEndDateTime");
            }
            if (date.Add(CheckStartTime) >= DateTime.Now)
            {
                return(false);
            }
            signal = new Signal()
            {
                Pattern = this,
            };
            float startPrice = tradeContext.GetPrice(date.Add(CheckStartTime));

            ((Signal)signal).CheckStartPrice = startPrice;
            if (date.Add(CheckEndTime) >= DateTime.Now)
            {
                return(false);
            }

            float endPrice = tradeContext.GetPrice(date.Add(CheckEndTime));

            ((Signal)signal).CheckEndPrice = endPrice;

            if (this.IsCheckUp)
            {
                return(endPrice > startPrice);
            }
            else
            {
                return(endPrice < startPrice);
            }
        }
예제 #2
0
        public string GetTradeDescription(TradeContext tradeContext)
        {
            DateTime priceGettableTime = DateTime.Now.AddSeconds(-5);
            float    tradeStartPrice   = float.NaN;
            var      builder           = new StringBuilder();

            builder.Append(Time.ToString());
            builder.Append(" ");
            builder.Append(this.TradeType);
            builder.Append(" ");

            DateTime tradeStartDateTime = tradeContext.Date.AddTicks(this.Time.Ticks);

            if (tradeStartDateTime < priceGettableTime)
            {
                tradeStartPrice = tradeContext.GetPrice(tradeStartDateTime);
                builder.Append(PriceFormatter.Format(tradeStartPrice, Instrument));
            }
            else
            {
                builder.Append("???");
            }
            return(builder.ToString());
        }