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); } }
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()); }