public StrategyDecision GetDecision(IDictionary <string, IList <ICandle> > data, string name, string currentPos, Security security, DateTime CurrentDt) { StrategyDecision dec = new StrategyDecision() { Decision = null }; SimpleMovingAverage short_ma = new SimpleMovingAverage(data["60"], 9); SimpleMovingAverage long_ma = new SimpleMovingAverage(data["60"], 20); TRENDResult trend = new TREND(long_ma, 3).GetResult(); if (trend == TRENDResult.Up && new Crossover(short_ma, long_ma).GetResult()) { dec.Decision = "open long"; } if (trend == TRENDResult.Down && new Crossover(long_ma, short_ma).GetResult()) { dec.Decision = "open short"; } return(dec); }
public ActionResult DeleteConfirmed(int id) { TREND tREND = db.TRENDS.Find(id); db.TRENDS.Remove(tREND); db.SaveChanges(); return(RedirectToAction("Index")); }
public ActionResult Edit([Bind(Include = "TrendId,ProductId")] TREND tREND) { if (ModelState.IsValid) { db.Entry(tREND).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.ProductId = new SelectList(db.PRODUCTs, "ProductId", "ProductName", tREND.ProductId); return(View(tREND)); }
public ActionResult Create([Bind(Include = "TrendId,ProductId")] TREND tREND) { if (ModelState.IsValid) { db.TRENDS.Add(tREND); db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.ProductId = new SelectList(db.PRODUCTs, "ProductId", "ProductName", tREND.ProductId); return(View(tREND)); }
// GET: AdminProductTrend/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } TREND tREND = db.TRENDS.Find(id); if (tREND == null) { return(HttpNotFound()); } return(View(tREND)); }
// GET: AdminProductTrend/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } TREND tREND = db.TRENDS.Find(id); if (tREND == null) { return(HttpNotFound()); } ViewBag.ProductId = new SelectList(db.PRODUCTs, "ProductId", "ProductName", tREND.ProductId); return(View(tREND)); }
public FilterResult Exec() { FilterResult res = FilterResult.N; //скользящая средняя для 60ти минуток SimpleMovingAverage hours_ma = new SimpleMovingAverage(_data["60"], 30); //определяем тренд TRENDResult trend = new TREND(hours_ma, 3).GetResult(); if (trend == TRENDResult.Up) { res = FilterResult.L; } if (trend == TRENDResult.Down) { res = FilterResult.S; } return(res); }
public StrategyDecision GetDecision(IDictionary <string, IList <ICandle> > data, string name, string currentPos, Security security, DateTime CurrentDt) { StrategyDecision dec = new StrategyDecision() { Decision = null }; SimpleMovingAverage short_ma = new SimpleMovingAverage(data["5"], 9); SimpleMovingAverage long_ma = new SimpleMovingAverage(data["5"], 30); MACD macd = new MACD(data["5"], 12, 26, 9); TREND macdTrend = new TREND(macd, 2); TRENDResult power = macdTrend.GetResult(); TRENDResult trend = new TREND(long_ma, 3).GetResult(); AverageTrueRange atr = new AverageTrueRange(data["5"], 14); //dec.Profit = Math.Round(atr.Last() * 2m, 2); //dec.StopLoss = Math.Round(atr.Last(), 2); dec.Profit = Math.Round(data["5"].Last().close * 0.006m, 2); dec.StopLoss = Math.Round(data["5"].Last().close * 0.002m, 2); decimal vollast = data["5"].Last().volume; decimal volprev = data["5"][data["5"].Count - 2].volume; bool vol = vollast > volprev * 2m; //if (power == TRENDResult.StrongUp && new Crossover(short_ma, long_ma).GetResult()) //{ // //dec.Decision = "open long"; // //dec.Price = Math.Round(data["5"].Last().close * 1.005m, 2); // signals.Add(new Signal() { Security = name, Action = "open long", DateTime = CurrentDt, Price= data["5"].Last().close }); //} //else if (power == TRENDResult.StrongUp) { //dec.Decision = "open long"; //dec.Price = Math.Round(data["5"].Last().close * 1.005m, 2); signals.Add(new Signal() { Security = name, Action = "open long", DateTime = CurrentDt, Price = data["5"].Last().close }); } if (currentPos == "free") { DateTime minDt = CurrentDt.AddMinutes(-20); DateTime maxDt = CurrentDt.AddMinutes(-15); var lastSignals = signals.Where(s => s.Security == name && s.Action == "open long" && s.DateTime < maxDt && s.DateTime >= minDt).ToList(); Signal signal = lastSignals.FirstOrDefault(); decimal summ = 0; if (signal != null) { var candlesToCheck = data["5"].Where(c => c.begin >= signal.DateTime).ToList(); foreach (Candle c in candlesToCheck) { summ += c.close - c.open; } } if (summ > atr.Last() * 2m && data["5"].Last().close > signal.Price) { dec.Decision = "open long"; dec.LongPrice = Math.Round(data["5"].Last().close * 1.005m, 2); } } //if ((power == TRENDResult.Down || power == TRENDResult.StrongDown) && new Crossover(long_ma, short_ma).GetResult() && currentPos == "free") //{ // dec.Decision = "open short"; // dec.Price = Math.Round(data[5].Last().close * 0.995m, 2); //} if (security.MinStep == 1) { dec.Profit = Math.Round(dec.Profit); dec.StopLoss = Math.Round(dec.StopLoss); dec.LongPrice = Math.Round(dec.LongPrice); } //dec.Decision = "open long"; return(dec); }
public StrategyDecision GetDecision(IDictionary <string, IList <ICandle> > data, string name, string currentPos, Security security, DateTime CurrentDt) { StrategyDecision dec = new StrategyDecision() { Decision = null }; ExponentialMovingAverage hours_ema = new ExponentialMovingAverage(data["60"], 9); //ExponentialMovingAverage minutes_ema = new ExponentialMovingAverage(data[5], 4); MACD macd = new MACD(data["5"], 12, 26, 9); TREND hoursTrend = new TREND(hours_ema, 3); //TREND minutesTrend = new TREND(minutes_ema, 3); TREND macdTrend = new TREND(macd, 2); bool valueConfirm = new ValueConfirm(data["5"], 5).GetResult(); AverageTrueRange atr = new AverageTrueRange(data["5"], 14); Extremum extremum = new Extremum(atr, 3, 20); //hoursTrend.GetResult(); //macdTrend.GetResult(); //if ((hoursTrend.GetResult() == TRENDResult.Up && macdTrend.GetResult() == TRENDResult.Up || macdTrend.GetResult() == TRENDResult.StrongUp) && currentPos == "free") //{ // dec = "open long"; //} //if ((hoursTrend.GetResult() == TRENDResult.Down && macdTrend.GetResult() == TRENDResult.Down || macdTrend.GetResult() == TRENDResult.StrongDown) && currentPos == "free") //{ // dec = "open short"; //} TRENDResult trend = hoursTrend.GetResult(); TRENDResult power = macdTrend.GetResult(); decimal value = data["5"].Last().value; //*if (extremum.Count() > 0 && extremum.Last().ext == "L" && extremum.Last().val < atr.Last()) if (atr.Last() > 10m && valueConfirm) { dec.Profit = Math.Round(atr.Last() * 4m, 2); dec.StopLoss = Math.Round(atr.Last(), 2); if (trend == TRENDResult.Up && (power == TRENDResult.Up || power == TRENDResult.StrongUp) && currentPos == "free") { dec.Decision = "open long"; } if (trend == TRENDResult.Flat && power == TRENDResult.StrongUp && currentPos == "free") { dec.Decision = "open long"; } if (trend == TRENDResult.Down && (power == TRENDResult.Down || power == TRENDResult.StrongDown) && currentPos == "free") { dec.Decision = "open short"; } if (trend == TRENDResult.Flat && power == TRENDResult.StrongDown && currentPos == "free") { dec.Decision = "open short"; } } if (CurrentDt >= new DateTime(2017, 5, 15, 15, 20, 0)) { //dec = null; } return(dec); }