diff --git a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs index 97a12f7..b0540e1 100644 --- a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs +++ b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs @@ -279,12 +279,12 @@ namespace BitgetAPI.IndicatorConditionSetup //var sellFlag = 전봉Bol12 - 전봉Bol24 < Bol12 - Bol24 || 현재봉4 > 낮은값_74_24; - var buyFlag = 전전봉Bol12 - 전전봉Bol24 > 전봉Bol12 - 전봉Bol24 && 전전봉Bol4 > 전봉Bol4 && 현재봉12 > 낮은값_74_24; + var buyFlag = 전전봉Bol12 - 전전봉Bol24 > 전봉Bol12 - 전봉Bol24 && 전전봉Bol4 > 전봉Bol4 && 현재봉12 > 낮은값_74_24; //파는 시점 볼랜저 전전봉 12 - 24 값이 전봉 12 - 24보다 클경우 팜 //var sellFlag = 전봉Bol12 - 전봉Bol24 < Bol12 - Bol24 || 현재봉4 > 낮은값_74_24; //var sellFlag = 현재봉4 > 낮은값_74_24 || 전전봉Bol12 - 전전봉Bol24 < 전봉Bol12 - 전봉Bol24; - var sellFlag = 현재봉4 > 낮은값_74_24 || 현재봉12 < 현재봉4 || 전전봉Bol12 - 전전봉Bol24 < 전봉Bol12 - 전봉Bol24; + var sellFlag = 현재봉4 > 낮은값_74_24 || 현재봉12 < 현재봉4;// || 전전봉Bol12 - 전전봉Bol24 < 전봉Bol12 - 전봉Bol24; //파는 시점 볼랜저 전전봉 12 - 24 값이 전봉 12 - 24보다 클경우 팜 //var buyFlag = candleData_전봉.movingAverageDataList[12].BolangerValue > candleData_전봉.movingAverageDataList[24].BolangerValue && 전전봉Bol12 - 전전봉Bol24 > 전봉Bol12 - 전봉Bol24; diff --git a/BitgetApi/WebService/WebConnection.cs b/BitgetApi/WebService/WebConnection.cs index 224780e..107133f 100644 --- a/BitgetApi/WebService/WebConnection.cs +++ b/BitgetApi/WebService/WebConnection.cs @@ -767,6 +767,13 @@ namespace BitgetAPI.WebService var dataList = cloneList.Where(t => t.ContainsKey("data")).Select(t => t["data"]); var list = JsonConvert.DeserializeObject>>(JsonConvert.SerializeObject(dataList)); + + var calList = new List(); + foreach(var item in list) + { + calList.Add(item[0]); + } + var stringList = list.Select(t => t[0].instId).Distinct().ToList(); list = list.OrderBy(t => t[0].ts).ToList(); @@ -779,28 +786,31 @@ namespace BitgetAPI.WebService foreach (var item in stringList) { - var temp = list.Where(t => item == t[0].instId); + var temp = calList.Where(t => item == t.instId); if (temp.Count() > 0) { minList.Add(item, new List()); foreach (var t in temp) { - var tickerList = t[0]; + var tickerList = t; DateTime dt = new DateTime(1970, 01, 01); tickerList.reciveTime = dt.AddMilliseconds(Convert.ToDouble(tickerList.ts)).ToLocalTime(); } - var timeList = temp.Select(t => t[0].reciveTime.Minute); + var timeList = temp.Select(t => t.reciveTime.Minute).OrderBy(t=>t).ToList(); + foreach (var min in timeList) { - var minDataList = temp.Where(t => t[0].reciveTime.Minute == min); - var candleData = new CandleData(); + var minDataList = temp.Where(t => t.reciveTime.Minute == min).OrderBy(t=>t.reciveTime).ToList(); - candleData.Argument = minDataList.Last()[0].reciveTime; - candleData.Close = minDataList.Last()[0].lastPr; - candleData.Open = minDataList.First()[0].lastPr; - candleData.Low = minDataList.Min(t => t[0].lastPr); - candleData.High = minDataList.Max(t => t[0].lastPr); + var candleData = new CandleData(); + var dt = minDataList[minDataList.Count -1].reciveTime; + + candleData.Argument = dt; + candleData.Close = minDataList.Last().lastPr; + candleData.Open = minDataList.First().lastPr; + candleData.Low = minDataList.Min(t => t.lastPr); + candleData.High = minDataList.Max(t => t.lastPr); minList[item].Add(candleData); } @@ -877,11 +887,27 @@ namespace BitgetAPI.WebService candleDataList.Add(candleData); else { - var lastCandleData_Edit = candleDataList.OrderBy(t => t.Argument).ToList(); + var lastCandleData_Edit = candleDataList; // 마지막 시간 데이터 가져오기 var lastCandleData = lastCandleData_Edit.Find(j => j.Argument == lastCandleData_Edit.Max(i => i.Argument)); - if (lastCandleData == null || lastCandleData.Argument > candleData.Argument) return; + if (lastCandleData == null || lastCandleData.Argument > candleData.Argument) + { + if (lastCandleData != null) + { + var beforeList = candleDataList.OrderByDescending(t => t.Argument).ToList(); + var before = beforeList.FirstOrDefault(t => t.Argument < candleData.Argument); + if (before != null) + { + lastCandleData = lastCandleData_Edit.Find(t => t.Argument == before.Argument); + } + else + continue; + } + else + continue; + + } // 업데이트 or 추가 bool updateFlag = false;