public static List <Model.Candle> GetCandles(string instrument, DateTime from, string granularity) { List <Model.Candle> candles = new List <Model.Candle>(); string responseString = Data.OANDARestResponse.Get(Constants.url.Candels(instrument, from, granularity)); var candlesResponse = JsonSerializer.Deserialize <CandleResponse>(responseString); foreach (var item in candlesResponse.candles) { Model.Candle _candle = new Model.Candle(); _candle.Open = Convert.ToDouble(item.mid.o); _candle.Close = Convert.ToDouble(item.mid.c); _candle.Hight = Convert.ToDouble(item.mid.h); _candle.Low = Convert.ToDouble(item.mid.l); _candle.Complete = item.complete; _candle.Time = item.time.AddDays(1); if (_candle.Close > _candle.Open) { _candle.OriginalColor = Constants.CandelColour.GREEN; } else if (_candle.Close < _candle.Open) { _candle.OriginalColor = Constants.CandelColour.RED; } candles.Add(_candle); } return(candles); }
static List <Model.Candle> _H1(Model.Communication.IEXCandleResponse[] candlesResponse) { int i = 0; int counter = 1; List <Model.Candle> candles = new List <Model.Candle>(); Model.Candle _candle = null; foreach (var item in candlesResponse) { if (i == 0) { //double open = item.open; //if (item.open == 0) //{ // open = item.marketOpen; //} _candle = new Model.Candle(); //_candle.Open = Convert.ToDouble(item.marketOpen); // _candle.Hight = Convert.ToDouble(item.marketHigh); // _candle.Low = Convert.ToDouble(item.marketLow); //string[] hm = item.minute.Split(':'); //_candle.Time = new DateTime(item.date.Year, item.date.Month, item.date.Day, Convert.ToInt16(hm[0]), Convert.ToInt16(hm[1]), 0); i += 1; } else if (i == 59 || counter == candlesResponse.Count()) { //double close = item.close; //if (item.close == 0) //{ // close = item.marketClose; //} //_candle.Close = Convert.ToDouble(item.marketClose); _candle.Complete = true; if (_candle.Close > _candle.Open) { _candle.OriginalColor = Constants.CandelColour.GREEN; } else if (_candle.Close < _candle.Open) { _candle.OriginalColor = Constants.CandelColour.RED; } candles.Add(_candle); i = 0; } else if (i < 59) { //_candle.Hight = Math.Max(_candle.Hight, Convert.ToDouble(item.marketHigh)); //_candle.Low = Math.Min(_candle.Low, Convert.ToDouble(item.marketLow)); //i += 1; } counter += 1; } return(candles); }
public static bool WhiteSpinningTop(Model.Candle candle) { double H = candle.High; double L = candle.Low; double O = candle.Open; double C = candle.Close; return((C > O && ((H - L) > (3 * (C - O))) && (((H - C) / (0.001 + H - L)) < 0.4) && (((O - L) / (0.001 + H - L)) < 0.4))); }
public static bool BlackSpinningTop(Model.Candle candle) { double H = candle.High; double L = candle.Low; double O = candle.Open; double C = candle.Close; return((O > C) && ((H - L) > (3 * (O - C)) && (((H - O) / (0.001 + H - L)) < 0.4) && (((C - L) / (0.001 + H - L)) < 0.4))); }
public static bool DragonflyDoji(Model.Candle candle) { double H = candle.High; double L = candle.Low; double O = candle.Open; double C = candle.Close; return(((H - L) > 3 * Math.Abs(O - C)) && ((C - L) > 0.8 * (H - L)) && ((O - L) > 0.8 * (H - L))); }
public static bool HangingMan(Model.Candle candle) { double H = candle.High; double L = candle.Low; double O = candle.Open; double C = candle.Close; return(((H - L) > 4 * (O - C)) && ((C - L) / (0.001 + H - L) >= 0.75) && ((O - L) / (0.001 + H - L) >= 0.75)); }
public static bool InvertedHammer(Model.Candle candle) { double H = candle.High; double L = candle.Low; double O = candle.Open; double C = candle.Close; return(((H - L) > 3 * (O - C)) && ((H - C) / (.001 + H - L) > 0.6) && ((H - O) / (.001 + H - L) > 0.6)); }
public static bool ShootingStar(Model.Candle candle) { double H = candle.High; double L = candle.Low; double O = candle.Open; double C = candle.Close; return(((H - L) > 4 * (O - C)) && ((H - C) / (.001 + H - L) >= 0.75) && ((H - O) / (.001 + H - L) >= 0.75)); }
static void DailyCandles(string instrument) { D = new List <Model.Candle>(); string responseString = Data.OANDARestResponse.Get(Constants.url.IEX.DAY_Candels(instrument)); var candlesResponse = JsonConvert.DeserializeObject <Model.Communication.IEXCandleResponse[]>(responseString, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); //List<Model.Candle> intradaycandles = D1; foreach (var item in candlesResponse) { Model.Candle _candle = new Model.Candle(); _candle.Open = Convert.ToDouble(item.uOpen); _candle.Close = Convert.ToDouble(item.uClose); _candle.Hight = Convert.ToDouble(item.uHigh); _candle.Low = Convert.ToDouble(item.uLow); _candle.Complete = true; _candle.Time = item.date; if (_candle.Close > _candle.Open) { _candle.OriginalColor = Constants.CandelColour.GREEN; Console.WriteLine("GREEN" + " " + _candle.Time + " " + _candle.Open + " " + _candle.Close); } else if (_candle.Close < _candle.Open) { _candle.OriginalColor = Constants.CandelColour.RED; Console.WriteLine("RED" + " " + _candle.Time + " " + _candle.Open + " " + _candle.Close); } D.Add(_candle); } //foreach (var item in intradaycandles) //{ // Model.Candle _candle = new Model.Candle(); // _candle.Open = Convert.ToDouble(item.Open); // _candle.Close = Convert.ToDouble(item.Close); // _candle.Hight = Convert.ToDouble(item.Hight); // _candle.Low = Convert.ToDouble(item.Low); // _candle.Complete = true; // _candle.Time = item.Time; // if (_candle.Close > _candle.Open) // { // _candle.OriginalColor = Constants.CandelColour.GREEN; // } // else if (_candle.Close < _candle.Open) // { // _candle.OriginalColor = Constants.CandelColour.RED; // } // D.Add(_candle); //} }
public static Model.Candle GeneratePrevious(Model.Candle currentCandel) { Model.Candle HAcandel = new Model.Candle(); if (currentCandel.Open < currentCandel.Close) { HAcandel.Low = currentCandel.Low; HAcandel.Hight = currentCandel.Hight; HAcandel.Color = Constants.CandelColour.GREEN; } else { HAcandel.Low = currentCandel.Hight; HAcandel.Hight = currentCandel.Low; HAcandel.Color = Constants.CandelColour.RED; } HAcandel.OriginalColor = currentCandel.OriginalColor; HAcandel.Open = currentCandel.Open; HAcandel.Close = currentCandel.Close; HAcandel.Time = currentCandel.Time; return(HAcandel); }
public static Model.Candle Generate(Model.Candle HApreviousCandel, Model.Candle currentCandel) { Model.Candle HAcandel = new Model.Candle(); HAcandel.Time = currentCandel.Time; HAcandel.Open = HeikinAshi.OpenValue(HApreviousCandel.Open, HApreviousCandel.Close); HAcandel.Close = HeikinAshi.CloseValue(currentCandel.Open, currentCandel.Close, currentCandel.Hight, currentCandel.Low); double low = HeikinAshi.MinValue(currentCandel.Low, HAcandel.Open, HAcandel.Close); double high = HeikinAshi.MaxValue(currentCandel.Hight, HAcandel.Open, HAcandel.Close); HAcandel.OriginalColor = currentCandel.OriginalColor; if (HAcandel.Open < HAcandel.Close) { HAcandel.Low = low; HAcandel.Hight = high; HAcandel.Color = Constants.CandelColour.GREEN; } else { HAcandel.Low = high; HAcandel.Hight = low; HAcandel.Color = Constants.CandelColour.RED; } return(HAcandel); }
public static Result GetResult_HA_EMAs1(Instrument instrument, List <Candle> haDailys, CandleColor H4_HA_Color, CandleColor H1_HA_Color, CandleColor M15_HA_Color, MyTrade.Core.Model.InstrumentDetails instrumentDetails) { Result result = null; string ppPosition = ""; Core.Model.Indicators.PivotPoint pps = instrumentDetails.W_PivotPoints; if (instrumentDetails.TimeFrame == TimeFrame.MONTHLY) { pps = instrumentDetails.M_PivotPoints; ppPosition = pps.Position; } else { ppPosition = pps.Position; } CandleColor D_RealColor = CandleColor.GREEN; CandleColor D_HA_Color = CandleColor.GREEN; D_RealColor = haDailys[haDailys.Count() - 1].OriginalColor; var ema50 = from x in instrumentDetails.EMAs where x.Period == 50 select x; var ema9 = from x in instrumentDetails.EMAs where x.Period == 9 select x; List <Model.Candle> last_ha_candles = haDailys.Reverse <Model.Candle>().Take(5).Reverse().ToList <Model.Candle>(); int i = last_ha_candles.Count() - 1; while (i > 0) { Model.Candle current = last_ha_candles[i]; Model.Candle previous = null; previous = last_ha_candles[i - 1]; if ((current.HaColor == CandleColor.GREEN && previous.HaColor == CandleColor.RED)) { if (D_RealColor == CandleColor.GREEN) { if (current.Close > ema50.FirstOrDefault().Value&& current.Close > ema9.FirstOrDefault().Value) { result = new Result(); D_HA_Color = current.HaColor; result.Instrument = instrument; result.NumberHaCandles = last_ha_candles.Count - i; result.D_HA_Color = D_HA_Color; result.D_RealColor = D_RealColor; result.H4_HA_Color = H4_HA_Color; result.H1_HA_Color = H1_HA_Color; result.M15_HA_Color = M15_HA_Color; result.InstrumentDetails = instrumentDetails; result.PivotPointsPosition = ppPosition; if (D_RealColor == D_HA_Color && H1_HA_Color == D_HA_Color && H4_HA_Color == D_HA_Color && M15_HA_Color == D_HA_Color) { result.Action = Core.Constants.Action.BUY; } else if (D_RealColor == D_HA_Color && D_RealColor == M15_HA_Color) { result.Action = Core.Constants.Action.BUY; } else { result.Action = Core.Constants.Action.WAIT; } break; } else { break; } } else { break; } } else if (current.HaColor == CandleColor.RED && previous.HaColor == CandleColor.GREEN) { if (D_RealColor == CandleColor.RED) { if (current.Close < ema50.FirstOrDefault().Value&& current.Close < ema9.FirstOrDefault().Value) { D_HA_Color = current.HaColor; result = new Result(); result.Instrument = instrument; result.NumberHaCandles = last_ha_candles.Count - i; result.D_HA_Color = D_HA_Color; result.D_RealColor = D_RealColor; result.H4_HA_Color = H4_HA_Color; result.H1_HA_Color = H1_HA_Color; result.M15_HA_Color = M15_HA_Color; result.InstrumentDetails = instrumentDetails; result.PivotPointsPosition = ppPosition; if (D_RealColor == D_HA_Color && H1_HA_Color == D_HA_Color && H4_HA_Color == D_HA_Color && M15_HA_Color == D_HA_Color) { result.Action = Core.Constants.Action.SELL; } else if (D_RealColor == D_HA_Color && D_RealColor == M15_HA_Color) { result.Action = Core.Constants.Action.SELL; } else { result.Action = Core.Constants.Action.WAIT; } break; } else { break; } } else { break; } } i -= 1; } if (result == null) { result = new Result(); result.Instrument = instrument; result.NumberHaCandles = 0; result.D_HA_Color = D_HA_Color; result.D_RealColor = D_RealColor; result.H4_HA_Color = H4_HA_Color; result.H1_HA_Color = H1_HA_Color; result.M15_HA_Color = M15_HA_Color; result.Action = Core.Constants.Action.WAIT; result.PivotPointsPosition = ppPosition; } return(result); }