diff --git a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs index 2b4080f..970a0a3 100644 --- a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs +++ b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs @@ -251,6 +251,10 @@ namespace BitgetAPI.IndicatorConditionSetup dic.Add("tempLowVal", 0); dic.Add("tempHigh2Val", 0); dic.Add("tempLow2Val", 0); + dic.Add("tempHigh3Val", 0); + dic.Add("tempLow3Val", 0); + dic.Add("tempHigh4Val", 0); + dic.Add("tempLow4Val", 0); dic.Add("switchLowVal", 0); dic.Add("switchHighVal", 0); 전저고점.Add(market + strInterval, dic); @@ -274,12 +278,12 @@ namespace BitgetAPI.IndicatorConditionSetup movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_Temp_List, candleData_Main); if (i > 210) { - var 현재봉3_Temp = candleDatas_Temp_List[i].movingAverageDataList[3].Value; - var 전봉3_Temp = candleDatas_Temp_List[i - 1].movingAverageDataList[3].Value; - var 전전봉3_Temp = candleDatas_Temp_List[i - 2].movingAverageDataList[3].Value; - var 전전전봉3_Temp = candleDatas_Temp_List[i - 3].movingAverageDataList[3].Value; - var 전전전전봉3_Temp = candleDatas_Temp_List[i - 4].movingAverageDataList[3].Value; - var returnVal = Calculate전고점(market, strInterval, interval, 전봉3_Temp, 전전봉3_Temp, 전전전봉3_Temp, candleDatas_Temp_List[candleDatas_Temp_List.Count - 1]); + var 현재봉5_Temp = candleDatas_Temp_List[i].movingAverageDataList[5].Value; + var 전봉5_Temp = candleDatas_Temp_List[i - 1].movingAverageDataList[5].Value; + var 전전봉5_Temp = candleDatas_Temp_List[i - 2].movingAverageDataList[5].Value; + var 전전전봉5_Temp = candleDatas_Temp_List[i - 3].movingAverageDataList[5].Value; + var 전전전전봉5_Temp = candleDatas_Temp_List[i - 4].movingAverageDataList[5].Value; + var returnVal = Calculate전고점(market, strInterval, interval, 전봉5_Temp, 전전봉5_Temp, 전전전봉5_Temp, candleDatas_Temp_List[candleDatas_Temp_List.Count - 1]); } } } @@ -289,12 +293,14 @@ namespace BitgetAPI.IndicatorConditionSetup BuyLongStep[market + strInterval] = false; } - if (!(전저고점.ContainsKey(market + "15m") && 전저고점.ContainsKey(market + "1H"))) - continue; + if (!전저고점.ContainsKey(market + "30m")) continue; - #region 임시 15분봉 처리 + //if (!(전저고점.ContainsKey(market + "5m") && 전저고점.ContainsKey(market + "15m") && 전저고점.ContainsKey(market + "1H"))) + // continue; + + #region 5분봉 처리 -> 임시로 30분봉 처리 // 시간별로 정렬하기 (임시 리스트) - var candleDatas = findedMarket.candleDataList[MCandleTimeType.M15]; + var candleDatas = findedMarket.candleDataList[MCandleTimeType.M30]; var candleDatas_정렬 = candleDatas.OrderBy(i => i.Argument).ToList(); var candleData = candleDatas.Find(i => i.Argument == candleDatas_정렬.Last().Argument); @@ -335,6 +341,7 @@ namespace BitgetAPI.IndicatorConditionSetup #endregion #region 15분봉 처리 + /* // 시간별로 정렬하기 (임시 리스트) var candleDatas_15 = findedMarket.candleDataList[MCandleTimeType.M15]; var candleDatas_15_정렬 = candleDatas_15.OrderBy(i => i.Argument).ToList(); @@ -374,10 +381,12 @@ namespace BitgetAPI.IndicatorConditionSetup if (candleData_15_전전전전봉 == null) continue; ichimokuConditionSetup.calIchimokuData(candleDatas_15_정렬, candleData_15_전전전전봉); movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_15_정렬, candleData_15_전전전전봉); + */ #endregion #region 60분봉 처리 // 시간별로 정렬하기 (임시 리스트) + /* var candleDatas_60 = findedMarket.candleDataList[MCandleTimeType.H1]; var candleDatas_60_정렬 = candleDatas_60.OrderBy(i => i.Argument).ToList(); @@ -416,6 +425,7 @@ namespace BitgetAPI.IndicatorConditionSetup if (candleData_60_전전전전봉 == null) continue; ichimokuConditionSetup.calIchimokuData(candleDatas_60_정렬, candleData_60_전전전전봉); movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_60_정렬, candleData_60_전전전전봉); + */ #endregion if (checked구름떼상향돌파 && candleData_전봉.Open < candleData_전봉.IchimokData.상한선 && candleData.Open > candleData.IchimokData.상한선 && candleData.Low > candleData.IchimokData.상한선 @@ -485,6 +495,7 @@ namespace BitgetAPI.IndicatorConditionSetup var 전전전봉2 = candleData_전전전봉.movingAverageDataList[2].Value; var 전전전봉3 = candleData_전전전봉.movingAverageDataList[3].Value; var 전전전봉4 = candleData_전전전봉.movingAverageDataList[4].Value; + var 전전전봉5 = candleData_전전전봉.movingAverageDataList[5].Value; var 전전전봉8 = candleData_전전전봉.movingAverageDataList[8].Value; var 전전전봉12 = candleData_전전전봉.movingAverageDataList[12].Value; var 전전전봉24 = candleData_전전전봉.movingAverageDataList[24].Value; @@ -496,6 +507,7 @@ namespace BitgetAPI.IndicatorConditionSetup var 전전봉2 = candleData_전전봉.movingAverageDataList[2].Value; var 전전봉3 = candleData_전전봉.movingAverageDataList[3].Value; var 전전봉4 = candleData_전전봉.movingAverageDataList[4].Value; + var 전전봉5 = candleData_전전봉.movingAverageDataList[5].Value; var 전전봉8 = candleData_전전봉.movingAverageDataList[8].Value; var 전전봉12 = candleData_전전봉.movingAverageDataList[12].Value; var 전전봉24 = candleData_전전봉.movingAverageDataList[24].Value; @@ -513,6 +525,7 @@ namespace BitgetAPI.IndicatorConditionSetup var 전봉2 = candleData_전봉.movingAverageDataList[2].Value; var 전봉3 = candleData_전봉.movingAverageDataList[3].Value; var 전봉4 = candleData_전봉.movingAverageDataList[4].Value; + var 전봉5 = candleData_전봉.movingAverageDataList[5].Value; var 전봉8 = candleData_전봉.movingAverageDataList[8].Value; var 전봉12 = candleData_전봉.movingAverageDataList[12].Value; var 전봉24 = candleData_전봉.movingAverageDataList[24].Value; @@ -531,6 +544,7 @@ namespace BitgetAPI.IndicatorConditionSetup var 현재봉2 = candleData.movingAverageDataList[2].Value; var 현재봉3 = candleData.movingAverageDataList[3].Value; var 현재봉4 = candleData.movingAverageDataList[4].Value; + var 현재봉5 = candleData.movingAverageDataList[5].Value; var 현재봉8 = candleData.movingAverageDataList[8].Value; var 현재봉12 = candleData.movingAverageDataList[12].Value; var 현재봉24 = candleData.movingAverageDataList[24].Value; @@ -575,7 +589,7 @@ namespace BitgetAPI.IndicatorConditionSetup var Bol24_Up = candleData.movingAverageDataList[24].BolangerValue_Up; var Bol72_Up = candleData.movingAverageDataList[72].BolangerValue_Up; #endregion - + /* var 현재봉2_15 = candleData_15.movingAverageDataList[2].Value; var 전봉2_15 = candleData_15_전봉.movingAverageDataList[2].Value; var 전전봉2_15 = candleData_15_전전봉.movingAverageDataList[2].Value; @@ -593,6 +607,11 @@ namespace BitgetAPI.IndicatorConditionSetup var 전전봉4_15 = candleData_15_전전봉.movingAverageDataList[4].Value; var 전전전봉4_15 = candleData_15_전전전봉.movingAverageDataList[4].Value; + var 현재봉5_15 = candleData_15.movingAverageDataList[5].Value; + var 전봉5_15 = candleData_15_전봉.movingAverageDataList[5].Value; + var 전전봉5_15 = candleData_15_전전봉.movingAverageDataList[5].Value; + var 전전전봉5_15 = candleData_15_전전전봉.movingAverageDataList[5].Value; + var 현재봉2_60 = candleData_60.movingAverageDataList[2].Value; var 전봉2_60 = candleData_60_전봉.movingAverageDataList[2].Value; @@ -610,7 +629,12 @@ namespace BitgetAPI.IndicatorConditionSetup var 전봉4_60 = candleData_60_전봉.movingAverageDataList[4].Value; var 전전봉4_60 = candleData_60_전전봉.movingAverageDataList[4].Value; var 전전전봉4_60 = candleData_60_전전전봉.movingAverageDataList[4].Value; - + + var 현재봉5_60 = candleData_60.movingAverageDataList[5].Value; + var 전봉5_60 = candleData_60_전봉.movingAverageDataList[5].Value; + var 전전봉5_60 = candleData_60_전전봉.movingAverageDataList[5].Value; + var 전전전봉5_60 = candleData_60_전전전봉.movingAverageDataList[5].Value; + */ var oneList = new List() { 현재봉24, @@ -626,18 +650,50 @@ namespace BitgetAPI.IndicatorConditionSetup }; - //var 저고점_1 = 전저고점[market + "1m"]; - var 저고점_15 = 전저고점[market + "15m"]; - var 저고점_60 = 전저고점[market + "1H"]; + //var 저고점_5 = 전저고점[market + "5m"]; + var 저고점_30 = 전저고점[market + "30m"]; + //var 저고점_60 = 전저고점[market + "1H"]; - //var returnVal = Calculate전고점(market, "1m", MCandleTimeType.M1, 전봉2, 전전봉2, 전전전봉2, candleData); + //var returnVal = Calculate전고점(market, "5m", MCandleTimeType.M5, 전봉5, 전전봉5, 전전전봉5, candleData); //if (!returnVal) continue; - var returnVal = Calculate전고점(market, "15m", MCandleTimeType.M15, 전봉3_15, 전전봉3_15, 전전전봉3_15, candleData_15); - if (!returnVal) continue; - returnVal = Calculate전고점(market, "1H", MCandleTimeType.H1, 전봉3_60, 전전봉3_60, 전전전봉3_60, candleData_60); + var returnVal = Calculate전고점(market, "30m", MCandleTimeType.M30, 전봉5, 전전봉5, 전전전봉5, candleData); if (!returnVal) continue; + //returnVal = Calculate전고점(market, "1H", MCandleTimeType.H1, 전봉5_60, 전전봉5_60, 전전전봉5_60, candleData_60); + //if (!returnVal) continue; + var tempFlag = (저고점_30["Type"] == 0 + && 저고점_30["전저가"] > 저고점_30["전전저가"] + && 저고점_30["전전전저가"] > 저고점_30["전전저가"] + && 저고점_30["전전전고가"] > 저고점_30["전전고가"] + && 저고점_30["tempHighVal"] > 저고점_30["tempLow2Val"] + && 저고점_30["tempLowVal"] > 저고점_30["tempHighVal"] + && 저고점_30["tempLow2Val"] > 저고점_30["tempHigh2Val"] + && 저고점_30["tempHigh2Val"] > 저고점_30["tempLow3Val"]) + || + (저고점_30["Type"] == 1 + && 저고점_30["전고가"] < 저고점_30["전전고가"] + && 저고점_30["전전전고가"] < 저고점_30["전전고가"] + && 저고점_30["전전전저가"] < 저고점_30["전전저가"] + && 저고점_30["tempLowVal"] > 저고점_30["tempHigh2Val"] + && 저고점_30["tempLowVal"] < 저고점_30["tempHighVal"] + && 저고점_30["tempLow2Val"] < 저고점_30["tempHigh2Val"] + && 저고점_30["tempLow2Val"] > 저고점_30["tempHigh3Val"]); + var tempFlag2 = (저고점_30["Type"] == 1 + && 저고점_30["전저가"] < 저고점_30["전전저가"] + && 저고점_30["전전전고가"] > 저고점_30["전전고가"] + && 저고점_30["tempHighVal"] > 저고점_30["tempLow2Val"] + && 저고점_30["tempLowVal"] > 저고점_30["tempHighVal"] + && 저고점_30["tempLow2Val"] > 저고점_30["tempHigh2Val"] + && 저고점_30["tempHigh2Val"] > 저고점_30["tempLow3Val"]) + || + (저고점_30["Type"] == 0 + && 저고점_30["전고가"] > 저고점_30["전전고가"] + && 저고점_30["전전전저가"] < 저고점_30["전전저가"] + && 저고점_30["tempLowVal"] > 저고점_30["tempHigh2Val"] + && 저고점_30["tempLowVal"] < 저고점_30["tempHighVal"] + && 저고점_30["tempLow2Val"] < 저고점_30["tempHigh2Val"] + && 저고점_30["tempLow2Val"] > 저고점_30["tempHigh3Val"]); if (영호조건식_상향돌파) { @@ -649,8 +705,6 @@ namespace BitgetAPI.IndicatorConditionSetup var description = string.Format("{0} 72,24,4 상승", strInterval); var signalData = signals_SD.Find(i => i.MarketName.Equals(market) && i.Description.Equals(description)); - //전 저점 계산 - try { //사는 시점 @@ -661,21 +715,81 @@ namespace BitgetAPI.IndicatorConditionSetup // 60분봉 - var flag_60 = 저고점_60["Type"] == 0 && 저고점_60["전저가"] < 현재봉3_60 && 저고점_60["전고가"] > 현재봉3_60; + //var flag_60 = 현재봉3_60 > 전봉3_60 && candleData_60.Open < candleData_60.Close; + ////저고점_60["Type"] == 1 && 저고점_60["전고가"] > 현재봉3_60 && 현재봉3_60 > 전봉3_60 && 전봉3_60 < 전전봉3_60 && candleData_60.Open < candleData_60.Close; - var flag_15 = 저고점_15["Type"] == 0 - && 저고점_15["전저가"] < 현재봉3_15 - && 저고점_15["전고가"] < 현재봉3_15 - && 저고점_15["전고가"] > 전봉3_15 - && 저고점_15["전저가"] > 저고점_15["전전저가"] - && 저고점_15["전저가"] < 저고점_15["전고가"] - && 저고점_15["전고가"] > 저고점_15["전전저가"] && 저고점_15["전고가"]< 저고점_15["전전고가"]; + //var flag_15 = 저고점_30["Type"] == 0 + // && 저고점_30["전고가"] > 현재봉3_15 + // && 저고점_30["전고가"] < 현재봉3_15 + // && 저고점_30["전고가"] > 전봉3_15 + // && 저고점_30["전저가"] > 저고점_30["전전저가"] + // && 저고점_30["전저가"] < 저고점_30["전고가"] + // && 저고점_30["전고가"] > 저고점_30["전전저가"] && 저고점_30["전고가"]< 저고점_30["전전고가"]; - if (flag_60 && flag_15) + //var max = 저고점_30["전고가"]; + //if (저고점_30["전고가"] < 저고점_30["전전고가"]) + // max = 저고점_30["전전고가"]; + + //역헤드앤 숄더와 헤드앤 숄더는 둘다 공통 + // var flag_15 = 저고점_30["Type"] == 0 + // && 저고점_30["전저가"] > 저고점_30["전전저가"] + // && 저고점_30["전전전저가"] > 저고점_30["전전저가"] + // && 저고점_30["전전전고가"] > 저고점_30["전전고가"] + // && 저고점_30["tempHighVal"] > 저고점_30["tempLow2Val"] + // && 저고점_30["tempLowVal"] > 저고점_30["tempHighVal"] + // && 저고점_30["tempLow2Val"] > 저고점_30["tempHigh2Val"] + // && 저고점_30["tempHigh2Val"] > 저고점_30["tempLow3Val"] + // //&& max > 현재봉5 + // //&& max < candleData.Close + // //&& max < candleData.Open; + // && 저고점_30["전고가"] > 현재봉5 + // && 현재봉5 > 전봉5 + + // && 저고점_30["전고가"] < candleData.Close; + //// && 저고점_30["전고가"] > candleData.Open; + + + var minSec = 0.0; + if (tempFlag2) { - buyFlag = true; + if (저고점_30["Type"] == 1) + { + minSec = 저고점_30["tempLow2Val"]; + } + else + { + minSec = 저고점_30["tempHigh2Val"]; + } } + if (tempFlag) + { + if (저고점_30["Type"] == 0) + { + minSec = 저고점_30["tempLow3Val"]; + } + else + { + minSec = 저고점_30["tempHigh3Val"]; + } + } + + if(minSec > 0) { + var minData = new DateTime(1970, 1, 1, 0, 0, 0); + minData = minData.AddSeconds(minSec); + minData = minData.AddMinutes(-90); + var candleDataList = candleDatas.OrderBy(i => i.Argument).ToList(); + + var list = candleDataList.Where(t => t.Argument > minData).ToList(); + list.RemoveAt(list.Count - 1); + var maxData =list.Max(t => t.High); + + if(candleData.Close > maxData) + { + buyFlag = true; + } + } + if (buyFlag) { // 없으면 생성 @@ -699,7 +813,7 @@ namespace BitgetAPI.IndicatorConditionSetup { "MarketName", market }, { "BuyDate", nowTime }, { "Price", price }, - { "Flag", 저고점_15["전고가"] > 저고점_15["전전고가"]}, + { "Flag", 저고점_30["전고가"] > 저고점_30["전전고가"]}, { "MCandleTimeType", (int)interval }, { "CandleTime", candleData.Argument }, { "Candle", candleData } @@ -771,36 +885,51 @@ namespace BitgetAPI.IndicatorConditionSetup var sellFlag = false; //예외처리 - if (저고점_60["전저가"] > 현재봉3_60) - sellFlag = true; + //if (저고점_60["전저가"] > 현재봉3_60) + // sellFlag = true; - if (저고점_15["전저가"] > 전봉3_15) - sellFlag = true; + //if (저고점_30["전저가"] > 전봉5) + // sellFlag = true; - if (flag) - { - if (저고점_15["전고가"] < 저고점_15["전전고가"]) - { - sellFlag = true; - } + //if (저고점_30["전고가"] < 저고점_30["전전고가"]) + // sellFlag = true; - if (저고점_15["전전고가"] > 현재봉3_15) - { - sellFlag = true; - } - } - else - { - if (저고점_15["전저가"] > 현재봉3_15) - { - sellFlag = true; - } + //if (저고점_30["전전고가"] > 현재봉5) + // sellFlag = true; - if (저고점_15["전고가"] > 저고점_15["전전고가"]) - { - buyItem["Flag"] = true; - } - } + //var 전전Data = 저고점_30["전전고가"] - 저고점_30["전전전고가"]; + + //var 전Data = 저고점_30["전고가"] - 저고점_30["전전고가"]; + + + //if (전전Data > 전Data) sellFlag = true; + + if(현재봉5 < 전봉5) sellFlag = true; + + //if (flag) + //{ + // if (저고점_5["전고가"] < 저고점_5["전전고가"]) + // { + // sellFlag = true; + // } + + // if (저고점_5["전전고가"] > 현재봉3) + // { + // sellFlag = true; + // } + //} + //else + //{ + // if (저고점_5["전저가"] > 현재봉3) + // { + // sellFlag = true; + // } + + // if (저고점_5["전고가"] > 저고점_5["전전고가"]) + // { + // buyItem["Flag"] = true; + // } + //} if (sellFlag) { @@ -894,19 +1023,77 @@ namespace BitgetAPI.IndicatorConditionSetup var buyFlag = false; - var flag_60 = 저고점_60["Type"] == 1 && 저고점_60["전고가"] > 현재봉3_60 && 저고점_60["전저가"] < 현재봉3_60; + //var flag_60 = 현재봉3_60 < 전봉3_60 && candleData_60.Open > candleData_60.Close; + ////저고점_60["Type"] == 0 && 저고점_60["전저가"] < 현재봉3_60 && 현재봉3_60 < 전봉3_60 && 전봉3_60> 전전봉3_60 && candleData_60.Open > candleData_60.Close; - var flag_15 = 저고점_15["Type"] == 1 - && 저고점_15["전고가"] > 현재봉3_15 - && 저고점_15["전저가"] > 현재봉3_15 - && 저고점_15["전저가"] < 전봉3_15 - && 저고점_15["전고가"] < 저고점_15["전전고가"] - && 저고점_15["전고가"] > 저고점_15["전저가"] - && 저고점_15["전저가"] < 저고점_15["전전고가"] && 저고점_15["전저가"] > 저고점_15["전전저가"]; + //var flag_15 = 저고점_30["Type"] == 1 + // && 저고점_30["전저가"] < 현재봉3_15 + // && 저고점_30["전저가"] > 현재봉3_15 + // && 저고점_30["전저가"] < 전봉3_15 + // && 저고점_30["전고가"] < 저고점_30["전전고가"] + // && 저고점_30["전고가"] > 저고점_30["전저가"] + // && 저고점_30["전저가"] < 저고점_30["전전고가"] && 저고점_30["전저가"] > 저고점_30["전전저가"]; - if (flag_60 && flag_15) + //var flag_15 = 저고점_30["Type"] == 1 + // && 저고점_30["전고가"] < 저고점_30["전전고가"] + // && 저고점_30["전전전고가"] < 저고점_30["전전고가"] + // && 저고점_30["전전전저가"] < 저고점_30["전전저가"] + // && 저고점_30["tempLowVal"] > 저고점_30["tempHigh2Val"] + // && 저고점_30["tempLowVal"] < 저고점_30["tempHighVal"] + ////&& min < 현재봉5 + ////&& candleData.Close < min + ////&& min < candleData.Open; + //&& 저고점_30["전저가"] < 현재봉5 + //&& 현재봉5 < 전봉5 + //&& 저고점_30["전저가"] < 저고점_30["전전저가"] + //&& candleData.Close < 저고점_30["전저가"]; + // && 저고점_30["전저가"] < candleData.Open; + + //if (flag_15) + //{ + // buyFlag = true; + //} + + var minSec = 0.0; + if (tempFlag2) { - buyFlag = true; + if (저고점_30["Type"] == 1) + { + minSec = 저고점_30["tempLow2Val"]; + } + else + { + minSec = 저고점_30["tempHigh2Val"]; + } + } + + if (tempFlag) + { + if (저고점_30["Type"] == 0) + { + minSec = 저고점_30["tempLow3Val"]; + } + else + { + minSec = 저고점_30["tempHigh3Val"]; + } + } + + if (minSec > 0) + { + var minDate = new DateTime(1970, 1, 1, 0, 0, 0); + minDate = minDate.AddSeconds(minSec); + minDate = minDate.AddMinutes(-90); + var candleDataList = candleDatas.OrderBy(i => i.Argument).ToList(); + + var list = candleDataList.Where(t => t.Argument > minDate).ToList(); + list.RemoveAt(list.Count - 1); + var minData = list.Min(t => t.High); + + if (candleData.Close < minData) + { + buyFlag = true; + } } if (buyFlag) @@ -933,7 +1120,7 @@ namespace BitgetAPI.IndicatorConditionSetup { "MarketName", market }, { "BuyDate", nowTime }, { "Price", price }, - { "Flag", 저고점_60["전저가"] < 저고점_60["전전저가"]}, + { "Flag", 저고점_30["전저가"] < 저고점_30["전전저가"] }, { "MCandleTimeType", (int)interval }, { "CandleTime", candleData.Argument }, { "Candle", candleData } @@ -1003,35 +1190,53 @@ namespace BitgetAPI.IndicatorConditionSetup var sellFlag = false; - if (저고점_60["전고가"] < 현재봉3_60) + //if (저고점_60["전고가"] < 현재봉3_60) + // sellFlag = true; + + //if (저고점_30["전고가"] < 전봉5) + // sellFlag = true; + + //if (저고점_30["전저가"] > 저고점_30["전전저가"]) + // sellFlag = true; + + //if (저고점_30["전전저가"] < 현재봉5) + // sellFlag = true; + + //var 전전Data = 저고점_30["전전전저가"] - 저고점_30["전전저가"]; + + //var 전Data = 저고점_30["전전저가"] - 저고점_30["전저가"]; + + //if (전전Data > 전Data) sellFlag = true; + + if(현재봉5 > 전봉5) sellFlag = true; - if (저고점_15["전고가"] < 전봉3_15) - sellFlag = true; - - if (flag) - { - if (저고점_15["전저가"] > 저고점_15["전전저가"]) - { - sellFlag = true; - } - if (저고점_15["전전저가"] < 현재봉3_15) - { - sellFlag = true; - } - } - else - { - if (저고점_15["전고가"] < 현재봉3_15) - { - sellFlag = true; - } - if (저고점_15["전저가"] < 저고점_15["전전저가"]) - { - buyItem["Flag"] = true; - } - } + //if (저고점_5["tempLowVal"] > ((DateTimeOffset)buyItem["CandleTime"]).ToUnixTimeSeconds()) + //{ + // if (flag) + // { + // if (저고점_5["전저가"] > 저고점_5["전전저가"]) + // { + // sellFlag = true; + // } + // if (저고점_5["전전저가"] < 현재봉3) + // { + // sellFlag = true; + // } + // } + // else + // { + // if (저고점_5["전고가"] < 현재봉3) + // { + // sellFlag = true; + // } + // if (저고점_5["전저가"] < 저고점_5["전전저가"]) + // { + // buyItem["Flag"] = true; + // } + // } + //} if (sellFlag) { @@ -1128,6 +1333,8 @@ namespace BitgetAPI.IndicatorConditionSetup 저고점["tempLowVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() && ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempHighVal"] >= 120 * (int)type) { + 저고점["tempLow4Val"] = 저고점["tempLow3Val"]; + 저고점["tempLow3Val"] = 저고점["tempLow2Val"]; 저고점["tempLow2Val"] = 저고점["tempLowVal"]; 저고점["tempLowVal"] = ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds(); 저고점["switchLowVal"] = 저고점["전전전전저가"]; @@ -1149,6 +1356,8 @@ namespace BitgetAPI.IndicatorConditionSetup 저고점["Type"] = 0; 저고점["전전전전고가"] = 저고점["switchLowVal"]; 저고점["tempHighVal"] = 저고점["tempHigh2Val"]; + 저고점["tempHigh2Val"] = 저고점["tempHigh3Val"]; + 저고점["tempHigh3Val"] = 저고점["tempHigh4Val"]; if (저고점["전저가"] > 전전봉3) 저고점["전저가"] = 전전봉3; @@ -1158,7 +1367,9 @@ namespace BitgetAPI.IndicatorConditionSetup if (전전봉3 > 전봉3 && 전전봉3 > 전전전봉3 && 저고점["tempHighVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() && ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempLowVal"] >= 120 * (int)type) - { + { + 저고점["tempHigh4Val"] = 저고점["tempHigh3Val"]; + 저고점["tempHigh3Val"] = 저고점["tempHigh2Val"]; 저고점["tempHigh2Val"] = 저고점["tempHighVal"]; 저고점["tempHighVal"] = ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds(); 저고점["switchHighVal"] = 저고점["전전전전고가"]; @@ -1179,6 +1390,8 @@ namespace BitgetAPI.IndicatorConditionSetup 저고점["전전전전저가"] = 저고점["switchHighVal"]; 저고점["Type"] = 1; 저고점["tempLowVal"] = 저고점["tempLow2Val"]; + 저고점["tempLow2Val"] = 저고점["tempLow3Val"]; + 저고점["tempLow3Val"] = 저고점["tempLow4Val"]; if (저고점["전고가"] < 전전봉3) 저고점["전고가"] = 전전봉3; diff --git a/BitgetApi/IndicatorConditionSetup/MovingAverageConditionSetup.cs b/BitgetApi/IndicatorConditionSetup/MovingAverageConditionSetup.cs index 48f50fe..de6dc76 100644 --- a/BitgetApi/IndicatorConditionSetup/MovingAverageConditionSetup.cs +++ b/BitgetApi/IndicatorConditionSetup/MovingAverageConditionSetup.cs @@ -21,6 +21,7 @@ namespace BitgetAPI.IndicatorConditionSetup public int CandleLength48 { get; set; } = 48; // 기간 public int CandleLength4 { get; set; } = 4; + public int CandleLength5 { get; set; } = 5; public int CandleLength2 { get; set; } = 2; public int CandleLength3 { get; set; } = 3; public int CandleLength36 { get; set; } = 36; @@ -56,6 +57,7 @@ namespace BitgetAPI.IndicatorConditionSetup candleData.movingAverageDataList = new Dictionary(); candleData.movingAverageDataList.Add(CandleLength2, new MovingAverageData()); candleData.movingAverageDataList.Add(CandleLength4, new MovingAverageData()); + candleData.movingAverageDataList.Add(CandleLength5, new MovingAverageData()); candleData.movingAverageDataList.Add(CandleLength12, new MovingAverageData()); candleData.movingAverageDataList.Add(CandleLength24, new MovingAverageData()); candleData.movingAverageDataList.Add(CandleLength36, new MovingAverageData());