diff --git a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs index 4cad8d4..0ef4ab4 100644 --- a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs +++ b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs @@ -420,12 +420,13 @@ namespace BitgetAPI.IndicatorConditionSetup && 전봉4 < 높은값_74_24_전봉) && // 현재의 4가 74,21 보다 작고나서 (현재봉4 < 낮은값_74_24 && - candleData.Close < candleData.IchimokData.상한선 && + candleData.Close < candleData.IchimokData.상한선 && 높은값_74_24 < candleData.IchimokData.상한선) && - 최초조건Flag.ContainsKey(market + interval) && 최초조건Flag[market + interval] == true && + //최초조건Flag.ContainsKey(market + interval) && 최초조건Flag[market + interval] == true && //볼랜저 12 24중 12가 크고 전전봉 전봉 12 차이보다 전전봉 전봉 24가 작아야함(하향) - buyFlag && - candle30Flag) + buyFlag //&& + //candle30Flag + ) { var buyDic = new Dictionary diff --git a/BitgetApi/WebService/WebConnection.cs b/BitgetApi/WebService/WebConnection.cs index f2ce046..2c9310f 100644 --- a/BitgetApi/WebService/WebConnection.cs +++ b/BitgetApi/WebService/WebConnection.cs @@ -18,6 +18,7 @@ using DevExpress.Utils.Extensions; using static BitgetAPI.CommonProperty; using DateTime = System.DateTime; using DevExpress.Xpo.Logger; +using DevExpress.XtraTreeList.Filtering.Provider; namespace BitgetAPI.WebService { @@ -316,16 +317,23 @@ namespace BitgetAPI.WebService //Thread.Sleep(100); - byte[] buffer = new byte[1024]; + byte[] buffer = new byte[4096 * 10]; WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment(buffer), CancellationToken.None); message = ""; // 수신한 데이터 처리 message = System.Text.Encoding.UTF8.GetString(buffer, 0, result.Count); - if (!ValidateJSON(message)) + if (tempStrData == "") { + if (!ValidateJSON(message)) + { + tempStrData = message; + continue; + } + } + else { tempStrData += message; - if (!ValidateJSON(message)) + if (!ValidateJSON(tempStrData)) { continue; } @@ -334,11 +342,31 @@ namespace BitgetAPI.WebService message = tempStrData; } } - var datalist = JsonConvert.DeserializeObject>(message); - lock (obj) + + if (message.Contains("{\"action")) { - webSocketDataList.Add(datalist); - } + string[] separatingStrings = { "{\"action" }; + + var splitData = message.Split(separatingStrings, System.StringSplitOptions.RemoveEmptyEntries); + + foreach (var item in splitData) + { + var temp = "{\"action" + item; + try + { + var datalist = JsonConvert.DeserializeObject>(temp); + lock (obj) + { + webSocketDataList.Add(datalist); + } + } + catch (JsonReaderException) + { + + } + } + } + #region 접어 둘거 //if (datalist.ContainsKey("data")) @@ -661,7 +689,33 @@ namespace BitgetAPI.WebService { try { - JToken.Parse(s); + if (s.Contains("{\"action")) + { + string[] separatingStrings = { "{\"action" }; + + var splitData = s.Split(separatingStrings, System.StringSplitOptions.RemoveEmptyEntries); + + bool flag = true; + foreach (var item in splitData) + { + var temp = "{\"action" + item; + try + { + JToken.Parse(temp); + } + catch (JsonReaderException) + { + flag = false; + } + } + return flag; + } + else + { + JToken.Parse(s); + } + + return true; } catch (JsonReaderException) @@ -744,8 +798,8 @@ namespace BitgetAPI.WebService if (candleDataList.Count == 0) candleDataList.Add(candleData); else - { - var lastCandleData_Edit = candleDataList.ToList(); + { + var lastCandleData_Edit = candleDataList.OrderBy(t => t.Argument).ToList(); // 마지막 시간 데이터 가져오기 var lastCandleData = lastCandleData_Edit.Find(j => j.Argument == lastCandleData_Edit.Max(i => i.Argument));