쌍바닥으로 변경

This commit is contained in:
kyh
2025-02-21 13:55:44 +09:00
parent 502d1b330b
commit 9238487e16

View File

@@ -279,7 +279,7 @@ namespace BitgetAPI.IndicatorConditionSetup
var 전전봉3_Temp = candleDatas_Temp_List[i - 2].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 - 3].movingAverageDataList[3].Value;
var 전전전전봉3_Temp = candleDatas_Temp_List[i - 4].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, 전전전전봉3_Temp, candleDatas_Temp_List[candleDatas_Temp_List.Count - 1]); var returnVal = Calculate전고점(market, strInterval, interval, 전봉3_Temp, 전전봉3_Temp, 전전전봉3_Temp, candleDatas_Temp_List[candleDatas_Temp_List.Count - 1]);
} }
} }
} }
@@ -289,7 +289,7 @@ namespace BitgetAPI.IndicatorConditionSetup
BuyLongStep[market + strInterval] = false; BuyLongStep[market + strInterval] = false;
} }
if (!(전저고점.ContainsKey(market + "1m") && 전저고점.ContainsKey(market + "5m") && 전저고점.ContainsKey(market + "1H"))) if (!(전저고점.ContainsKey(market + "15m") && 전저고점.ContainsKey(market + "1H")))
continue; continue;
#region 1분봉 처리 #region 1분봉 처리
@@ -334,88 +334,88 @@ namespace BitgetAPI.IndicatorConditionSetup
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_정렬, candleData_전전전전봉); movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_정렬, candleData_전전전전봉);
#endregion #endregion
#region 5분봉 처리 #region 15분봉 처리
// 시간별로 정렬하기 (임시 리스트) // 시간별로 정렬하기 (임시 리스트)
var candleDatas_5 = findedMarket.candleDataList[MCandleTimeType.M5]; var candleDatas_15 = findedMarket.candleDataList[MCandleTimeType.M15];
var candleDatas_5_정렬 = candleDatas_5.OrderBy(i => i.Argument).ToList(); var candleDatas_15_정렬 = candleDatas_15.OrderBy(i => i.Argument).ToList();
var candleData_5 = candleDatas_5.Find(i => i.Argument == candleDatas_5_정렬.Last().Argument); var candleData_15 = candleDatas_15.Find(i => i.Argument == candleDatas_15_정렬.Last().Argument);
if (candleData_5 == null) continue; if (candleData_15 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_5_정렬, candleData_5); ichimokuConditionSetup.calIchimokuData(candleDatas_15_정렬, candleData_15);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_5_정렬, candleData_5); movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_15_정렬, candleData_15);
candleDatas_5_정렬.RemoveAt(candleDatas_5_정렬.Count - 1); candleDatas_15_정렬.RemoveAt(candleDatas_15_정렬.Count - 1);
var candleData_5_전봉 = candleDatas_5.Find(i => i.Argument == candleDatas_5_정렬.Last().Argument); var candleData_15_전봉 = candleDatas_15.Find(i => i.Argument == candleDatas_15_정렬.Last().Argument);
if (candleData_5_전봉 == null) continue; if (candleData_15_전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_5_정렬, candleData_5_전봉); ichimokuConditionSetup.calIchimokuData(candleDatas_15_정렬, candleData_15_전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_5_정렬, candleData_5_전봉); movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_15_정렬, candleData_15_전봉);
candleDatas_5_정렬.RemoveAt(candleDatas_5_정렬.Count - 1); candleDatas_15_정렬.RemoveAt(candleDatas_15_정렬.Count - 1);
var candleData_5_전전봉 = candleDatas_5.Find(i => i.Argument == candleDatas_5_정렬.Last().Argument); var candleData_15_전전봉 = candleDatas_15.Find(i => i.Argument == candleDatas_15_정렬.Last().Argument);
if (candleData_5_전전봉 == null) continue; if (candleData_15_전전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_5_정렬, candleData_5_전전봉); ichimokuConditionSetup.calIchimokuData(candleDatas_15_정렬, candleData_15_전전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_5_정렬, candleData_5_전전봉); movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_15_정렬, candleData_15_전전봉);
candleDatas_5_정렬.RemoveAt(candleDatas_5_정렬.Count - 1); candleDatas_15_정렬.RemoveAt(candleDatas_15_정렬.Count - 1);
var candleData_5_전전전봉 = candleDatas_5.Find(i => i.Argument == candleDatas_5_정렬.Last().Argument); var candleData_15_전전전봉 = candleDatas_15.Find(i => i.Argument == candleDatas_15_정렬.Last().Argument);
if (candleData_5_전전전봉 == null) continue; if (candleData_15_전전전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_5_정렬, candleData_5_전전전봉); ichimokuConditionSetup.calIchimokuData(candleDatas_15_정렬, candleData_15_전전전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_5_정렬, candleData_5_전전전봉); movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_15_정렬, candleData_15_전전전봉);
candleDatas_5_정렬.RemoveAt(candleDatas_5_정렬.Count - 1); candleDatas_15_정렬.RemoveAt(candleDatas_15_정렬.Count - 1);
var candleData_5_전전전전봉 = candleDatas_5.Find(i => i.Argument == candleDatas_5_정렬.Last().Argument); var candleData_15_전전전전봉 = candleDatas_15.Find(i => i.Argument == candleDatas_15_정렬.Last().Argument);
if (candleData_5_전전전전봉 == null) continue; if (candleData_15_전전전전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_5_정렬, candleData_5_전전전전봉); ichimokuConditionSetup.calIchimokuData(candleDatas_15_정렬, candleData_15_전전전전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_5_정렬, candleData_5_전전전전봉); movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_15_정렬, candleData_15_전전전전봉);
#endregion #endregion
#region 30분봉 처리 #region 60분봉 처리
// 시간별로 정렬하기 (임시 리스트) // 시간별로 정렬하기 (임시 리스트)
var candleDatas_30 = findedMarket.candleDataList[MCandleTimeType.M30]; var candleDatas_60 = findedMarket.candleDataList[MCandleTimeType.H1];
var candleDatas_30_정렬 = candleDatas_30.OrderBy(i => i.Argument).ToList(); var candleDatas_60_정렬 = candleDatas_60.OrderBy(i => i.Argument).ToList();
var candleData_30 = candleDatas_30.Find(i => i.Argument == candleDatas_30_정렬.Last().Argument); var candleData_60 = candleDatas_60.Find(i => i.Argument == candleDatas_60_정렬.Last().Argument);
if (candleData_30 == null) continue; if (candleData_60 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_30_정렬, candleData_30); ichimokuConditionSetup.calIchimokuData(candleDatas_60_정렬, candleData_60);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_30_정렬, candleData_30); movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_60_정렬, candleData_60);
candleDatas_30_정렬.RemoveAt(candleDatas_30_정렬.Count - 1); candleDatas_60_정렬.RemoveAt(candleDatas_60_정렬.Count - 1);
var candleData_30_전봉 = candleDatas_30.Find(i => i.Argument == candleDatas_30_정렬.Last().Argument); var candleData_60_전봉 = candleDatas_60.Find(i => i.Argument == candleDatas_60_정렬.Last().Argument);
if (candleData_30_전봉 == null) continue; if (candleData_60_전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_30_정렬, candleData_30_전봉); ichimokuConditionSetup.calIchimokuData(candleDatas_60_정렬, candleData_60_전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_30_정렬, candleData_30_전봉); movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_60_정렬, candleData_60_전봉);
candleDatas_30_정렬.RemoveAt(candleDatas_30_정렬.Count - 1); candleDatas_60_정렬.RemoveAt(candleDatas_60_정렬.Count - 1);
var candleData_30_전전봉 = candleDatas_30.Find(i => i.Argument == candleDatas_30_정렬.Last().Argument); var candleData_60_전전봉 = candleDatas_60.Find(i => i.Argument == candleDatas_60_정렬.Last().Argument);
if (candleData_30_전전봉 == null) continue; if (candleData_60_전전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_30_정렬, candleData_30_전전봉); ichimokuConditionSetup.calIchimokuData(candleDatas_60_정렬, candleData_60_전전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_30_정렬, candleData_30_전전봉); movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_60_정렬, candleData_60_전전봉);
candleDatas_30_정렬.RemoveAt(candleDatas_30_정렬.Count - 1); candleDatas_60_정렬.RemoveAt(candleDatas_60_정렬.Count - 1);
var candleData_30_전전전봉 = candleDatas_30.Find(i => i.Argument == candleDatas_30_정렬.Last().Argument); var candleData_60_전전전봉 = candleDatas_60.Find(i => i.Argument == candleDatas_60_정렬.Last().Argument);
if (candleData_30_전전전봉 == null) continue; if (candleData_60_전전전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_30_정렬, candleData_30_전전전봉); ichimokuConditionSetup.calIchimokuData(candleDatas_60_정렬, candleData_60_전전전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_30_정렬, candleData_30_전전전봉); movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_60_정렬, candleData_60_전전전봉);
candleDatas_30_정렬.RemoveAt(candleDatas_30_정렬.Count - 1); candleDatas_60_정렬.RemoveAt(candleDatas_60_정렬.Count - 1);
var candleData_30_전전전전봉 = candleDatas_30.Find(i => i.Argument == candleDatas_30_정렬.Last().Argument); var candleData_60_전전전전봉 = candleDatas_60.Find(i => i.Argument == candleDatas_60_정렬.Last().Argument);
if (candleData_30_전전전전봉 == null) continue; if (candleData_60_전전전전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_30_정렬, candleData_30_전전전전봉); ichimokuConditionSetup.calIchimokuData(candleDatas_60_정렬, candleData_60_전전전전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_30_정렬, candleData_30_전전전전봉); movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_60_정렬, candleData_60_전전전전봉);
#endregion #endregion
if (checked구름떼상향돌파 && candleData_전봉.Open < candleData_전봉.IchimokData.상한선 && candleData.Open > candleData.IchimokData.상한선 && candleData.Low > candleData.IchimokData.상한선 if (checked구름떼상향돌파 && candleData_전봉.Open < candleData_전봉.IchimokData.상한선 && candleData.Open > candleData.IchimokData.상한선 && candleData.Low > candleData.IchimokData.상한선
@@ -482,7 +482,7 @@ namespace BitgetAPI.IndicatorConditionSetup
{ {
#region Main 봉 계산 #region Main 봉 계산
var 전전전봉2 = candleData_전전전봉.movingAverageDataList[2].Value;
var 전전전봉3 = candleData_전전전봉.movingAverageDataList[3].Value; var 전전전봉3 = candleData_전전전봉.movingAverageDataList[3].Value;
var 전전전봉4 = candleData_전전전봉.movingAverageDataList[4].Value; var 전전전봉4 = candleData_전전전봉.movingAverageDataList[4].Value;
var 전전전봉8 = candleData_전전전봉.movingAverageDataList[8].Value; var 전전전봉8 = candleData_전전전봉.movingAverageDataList[8].Value;
@@ -491,9 +491,9 @@ namespace BitgetAPI.IndicatorConditionSetup
var 전전전봉36 = candleData_전전전봉.movingAverageDataList[36].Value; var 전전전봉36 = candleData_전전전봉.movingAverageDataList[36].Value;
var 전전전봉72 = candleData_전전전봉.movingAverageDataList[72].Value; var 전전전봉72 = candleData_전전전봉.movingAverageDataList[72].Value;
var 전전전봉40 = candleData_전전전봉.movingAverageDataList[40].Value; var 전전전봉40 = candleData_전전전봉.movingAverageDataList[40].Value;
var 전전전전봉2 = candleData_전전전전봉.movingAverageDataList[2].Value;
var 전전전전봉3 = candleData_전전전전봉.movingAverageDataList[3].Value; var 전전전전봉3 = candleData_전전전전봉.movingAverageDataList[3].Value;
var 전전봉2 = candleData_전전봉.movingAverageDataList[2].Value;
var 전전봉3 = candleData_전전봉.movingAverageDataList[3].Value; var 전전봉3 = candleData_전전봉.movingAverageDataList[3].Value;
var 전전봉4 = candleData_전전봉.movingAverageDataList[4].Value; var 전전봉4 = candleData_전전봉.movingAverageDataList[4].Value;
var 전전봉8 = candleData_전전봉.movingAverageDataList[8].Value; var 전전봉8 = candleData_전전봉.movingAverageDataList[8].Value;
@@ -510,7 +510,7 @@ namespace BitgetAPI.IndicatorConditionSetup
//var 전전봉240 = candleData_전전봉.movingAverageDataList[240].Value; //var 전전봉240 = candleData_전전봉.movingAverageDataList[240].Value;
var 전전봉80 = candleData_전전봉.movingAverageDataList[80].Value; var 전전봉80 = candleData_전전봉.movingAverageDataList[80].Value;
//var 전전봉480 = candleData_전전봉.movingAverageDataList[480].Value; //var 전전봉480 = candleData_전전봉.movingAverageDataList[480].Value;
var 전봉2 = candleData_전봉.movingAverageDataList[2].Value;
var 전봉3 = candleData_전봉.movingAverageDataList[3].Value; var 전봉3 = candleData_전봉.movingAverageDataList[3].Value;
var 전봉4 = candleData_전봉.movingAverageDataList[4].Value; var 전봉4 = candleData_전봉.movingAverageDataList[4].Value;
var 전봉8 = candleData_전봉.movingAverageDataList[8].Value; var 전봉8 = candleData_전봉.movingAverageDataList[8].Value;
@@ -528,7 +528,7 @@ namespace BitgetAPI.IndicatorConditionSetup
var 전봉160 = candleData_전봉.movingAverageDataList[160].Value; var 전봉160 = candleData_전봉.movingAverageDataList[160].Value;
//var 전봉240 = candleData_전봉.movingAverageDataList[240].Value; //var 전봉240 = candleData_전봉.movingAverageDataList[240].Value;
//var 전봉480 = candleData_전봉.movingAverageDataList[480].Value; //var 전봉480 = candleData_전봉.movingAverageDataList[480].Value;
var 현재봉2 = candleData.movingAverageDataList[2].Value;
var 현재봉3 = candleData.movingAverageDataList[3].Value; var 현재봉3 = candleData.movingAverageDataList[3].Value;
var 현재봉4 = candleData.movingAverageDataList[4].Value; var 현재봉4 = candleData.movingAverageDataList[4].Value;
var 현재봉8 = candleData.movingAverageDataList[8].Value; var 현재봉8 = candleData.movingAverageDataList[8].Value;
@@ -576,29 +576,40 @@ namespace BitgetAPI.IndicatorConditionSetup
var Bol72_Up = candleData.movingAverageDataList[72].BolangerValue_Up; var Bol72_Up = candleData.movingAverageDataList[72].BolangerValue_Up;
#endregion #endregion
var 현재봉3_5 = candleData_5.movingAverageDataList[3].Value; var 현재봉2_15 = candleData_15.movingAverageDataList[2].Value;
var 전봉3_5 = candleData_5_전봉.movingAverageDataList[3].Value; var 전봉2_15 = candleData_15_전봉.movingAverageDataList[2].Value;
var 전전봉3_5 = candleData_5_전전봉.movingAverageDataList[3].Value; var 전전봉2_15 = candleData_15_전전봉.movingAverageDataList[2].Value;
var 전전전봉3_5 = candleData_5_전전전봉.movingAverageDataList[3].Value; var 전전전봉2_15 = candleData_15_전전전봉.movingAverageDataList[2].Value;
var 전전전전봉3_5 = candleData_5_전전전전봉.movingAverageDataList[3].Value; var 전전전전봉2_15 = candleData_15_전전전전봉.movingAverageDataList[2].Value;
var 현재봉4_5 = candleData_5.movingAverageDataList[4].Value; var 현재봉3_15 = candleData_15.movingAverageDataList[3].Value;
var 전봉4_5 = candleData_5_전봉.movingAverageDataList[4].Value; var 전봉3_15 = candleData_15_전봉.movingAverageDataList[3].Value;
var 전전봉4_5 = candleData_5_전전봉.movingAverageDataList[4].Value; var 전전봉3_15 = candleData_15_전전봉.movingAverageDataList[3].Value;
var 전전전봉4_5 = candleData_5_전전전봉.movingAverageDataList[4].Value; var 전전전봉3_15 = candleData_15_전전전봉.movingAverageDataList[3].Value;
var 전전전전봉3_15 = candleData_15_전전전전봉.movingAverageDataList[3].Value;
var 현재봉4_15 = candleData_15.movingAverageDataList[4].Value;
var 전봉4_15 = candleData_15_전봉.movingAverageDataList[4].Value;
var 전전봉4_15 = candleData_15_전전봉.movingAverageDataList[4].Value;
var 전전전봉4_15 = candleData_15_전전전봉.movingAverageDataList[4].Value;
var 현재봉2_60 = candleData_60.movingAverageDataList[2].Value;
var 전봉2_60 = candleData_60_전봉.movingAverageDataList[2].Value;
var 전전봉2_60 = candleData_60_전전봉.movingAverageDataList[2].Value;
var 전전전봉2_60 = candleData_60_전전전봉.movingAverageDataList[2].Value;
var 전전전전봉2_60 = candleData_60_전전전전봉.movingAverageDataList[2].Value;
var 현재봉3_30 = candleData_30.movingAverageDataList[3].Value; var 현재봉3_60 = candleData_60.movingAverageDataList[3].Value;
var 전봉3_30 = candleData_30_전봉.movingAverageDataList[3].Value; var 전봉3_60 = candleData_60_전봉.movingAverageDataList[3].Value;
var 전전봉3_30 = candleData_30_전전봉.movingAverageDataList[3].Value; var 전전봉3_60 = candleData_60_전전봉.movingAverageDataList[3].Value;
var 전전전봉3_30 = candleData_30_전전전봉.movingAverageDataList[3].Value; var 전전전봉3_60 = candleData_60_전전전봉.movingAverageDataList[3].Value;
var 전전전전봉3_30 = candleData_30_전전전전봉.movingAverageDataList[3].Value; var 전전전전봉3_60 = candleData_60_전전전전봉.movingAverageDataList[3].Value;
var 현재봉4_30 = candleData_30.movingAverageDataList[4].Value; var 현재봉4_60 = candleData_60.movingAverageDataList[4].Value;
var 전봉4_30 = candleData_30_전봉.movingAverageDataList[4].Value; var 전봉4_60 = candleData_60_전봉.movingAverageDataList[4].Value;
var 전전봉4_30 = candleData_30_전전봉.movingAverageDataList[4].Value; var 전전봉4_60 = candleData_60_전전봉.movingAverageDataList[4].Value;
var 전전전봉4_30 = candleData_30_전전전봉.movingAverageDataList[4].Value; var 전전전봉4_60 = candleData_60_전전전봉.movingAverageDataList[4].Value;
var oneList = new List<double>() { var oneList = new List<double>() {
@@ -615,15 +626,15 @@ namespace BitgetAPI.IndicatorConditionSetup
}; };
var 저고점_1 = 전저고점[market + "1m"]; //var 저고점_1 = 전저고점[market + "1m"];
var 저고점_5 = 전저고점[market + "5m"]; var 저고점_15 = 전저고점[market + "15m"];
var 저고점_30 = 전저고점[market + "1H"]; var 저고점_60 = 전저고점[market + "1H"];
var returnVal = Calculate전고점(market, "1m", MCandleTimeType.M1, 전봉3, 전전봉3, 전전전봉3, 전전전전봉3, candleData); //var returnVal = Calculate전고점(market, "1m", MCandleTimeType.M1, 전봉2, 전전봉2, 전전전봉2, candleData);
//if (!returnVal) continue;
var returnVal = Calculate전고점(market, "15m", MCandleTimeType.M15, 전봉3_15, 전전봉3_15, 전전전봉3_15, candleData_15);
if (!returnVal) continue; if (!returnVal) continue;
returnVal = Calculate전고점(market, "5m", MCandleTimeType.M5, 전봉3_5, 전전봉3_5, 전전전봉3_5, 전전전전봉3_5, candleData_5); returnVal = Calculate전고점(market, "1H", MCandleTimeType.H1, 전봉3_60, 전전봉3_60, 전전전봉3_60, candleData_60);
if (!returnVal) continue;
returnVal = Calculate전고점(market, "30M", MCandleTimeType.M30, 전봉3_30, 전전봉3_30, 전전전전봉3_30, 전전전봉3_30, candleData_30);
if (!returnVal) continue; if (!returnVal) continue;
@@ -649,21 +660,14 @@ namespace BitgetAPI.IndicatorConditionSetup
var buyFlag = false; var buyFlag = false;
// 60분봉 // 60분봉
var flag_30 =
(저고점_30["전전전저가"] > 저고점_30["전전저가"] && 저고점_30["전전저가"] > 저고점_30["전저가"]
&& 전봉3_30 < 저고점_30["전고가"] && 현재봉3_30 > 저고점_30["전고가"] &&
저고점_30["전전전고가"] > 저고점_30["전전고가"] && 저고점_30["전전고가"] > 저고점_30["전고가"] && 현재봉3_30 < candleData_30.Close && candleData_30_전봉.Open < candleData_30_전봉.Close)
|| (저고점_30["전전전고가"] > 저고점_30 ["전전고가"] && 저고점_30["전전전저가"] > 저고점_30["전전저가"] && 저고점_30["전고가"] > 저고점_30["전저가"] && 저고점_30["전고가"] > 저고점_30["전전저가"] var flag_60 = 저고점_60["Type"] == 0 && 저고점_60["전저가"] < 현재봉3_60 && 저고점_60["전고가"] > 현재봉3_60;
&& 저고점_30["전전저가"] < 저고점_30["전저가"] && 현재봉3_30 > 저고점_30["전고가"] && 전봉3_30 < 저고점_30["전고가"] && candleData_30.Open < candleData_30.Close && candleData_30_전봉.Open < candleData_30_전봉.Close); var flag_15 = 저고점_15["Type"] == 0 && 저고점_60["전저가"] < 현재봉3_15 && 저고점_60["전고가"] < 현재봉3_15
&& 저고점_60["전저가"] > 저고점_60["전전저가"]
&& 저고점_60["전저가"] < 저고점_60["전고가"]
&& 저고점_60["전고가"] > 저고점_60["전전저가"] && 저고점_60["전고가"]< 저고점_60["전전고가"];
var flag_5 = (저고점_5["전전전저가"] > 저고점_5["전전저가"] && 저고점_5["전전저가"] < 저고점_5["전저가"] && 현재봉3_5 > 저고점_5["전고가"]) if (flag_60 && flag_15)
|| (저고점_5["전전전고가"] > 저고점_5["전전고가"] && 저고점_5["전전고가"] > 저고점_5["전고가"] && 현재봉3_5 > 저고점_5["전고가"])
|| (저고점_5["전전저가"] < 저고점_5["전저가"] && 저고점_5["전전전저가"] < 저고점_5["전전저가"] && 저고점_5["전전고가"] < 저고점_5["전고가"] && 저고점_5["전전전고가"] < 저고점_5["전전고가"]);
var flag_1 = 현재봉4 > oneList.Max();
if (flag_30 && flag_5 && flag_1)
{ {
buyFlag = true; buyFlag = true;
} }
@@ -691,7 +695,7 @@ namespace BitgetAPI.IndicatorConditionSetup
{ "MarketName", market }, { "MarketName", market },
{ "BuyDate", nowTime }, { "BuyDate", nowTime },
{ "Price", price }, { "Price", price },
{ "Flag", 저고점_30["전고가"] > 저고점_30["전전고가"]}, { "Flag", 저고점_60["전고가"] > 저고점_60["전전고가"]},
{ "MCandleTimeType", (int)interval }, { "MCandleTimeType", (int)interval },
{ "CandleTime", candleData.Argument }, { "CandleTime", candleData.Argument },
{ "Candle", candleData } { "Candle", candleData }
@@ -762,29 +766,11 @@ namespace BitgetAPI.IndicatorConditionSetup
var sellFlag = false; var sellFlag = false;
//예외처리
if (flag) if (저고점_60["전저가"] < 현재봉3_60)
{
if (저고점_30["전고가"] < 저고점_30["전전고가"])
{
sellFlag = true;
}
if (저고점_30["전전고가"] > 전봉3_30)
{
sellFlag = true;
}
}
else
{
if (저고점_30["전저가"] > 전봉3_30)
sellFlag = true; sellFlag = true;
if (저고점_30["전고가"] > 저고점_30["전전고가"]) if(전봉3_15 < 전전봉3_15) sellFlag = true;
{
buyItem["Flag"] = true;
}
}
if (sellFlag) if (sellFlag)
{ {
@@ -878,24 +864,13 @@ namespace BitgetAPI.IndicatorConditionSetup
var buyFlag = false; var buyFlag = false;
//var flag_30 = (저고점_30["전전전고가"] < 저고점_30["전전고가"] && 저고점_30["전전고가"] > 저고점_30["전고가"] && 현재봉3_30 < 저고점_30["전저가"]) var flag_60 = 저고점_60["Type"] == 1 && 저고점_60["전고가"] > 현재봉3_60 && 저고점_60["전저가"] < 현재봉3_60;
// || (저고점_30["전전전고가"] < 저고점_30["전전고가"] && 저고점_30["전전고가"] < 저고점_30["전고가"] && 현재봉3_30 < 저고점_30["전저가"]); var flag_15 = 저고점_15["Type"] == 1 && 저고점_60["전고가"] > 현재봉3_15 && 저고점_60["전저가"] > 현재봉3_15
&& 저고점_60["전고가"] < 저고점_60["전전고가"]
&& 저고점_60["전고가"] > 저고점_60["전저가"]
&& 저고점_60["전저가"] < 저고점_60["전전고가"] && 저고점_60["전저가"] > 저고점_60["전전저가"];
var flag_30 = if (flag_60 && flag_15)
(저고점_30["전전전고가"] < 저고점_30["전전고가"] && 저고점_30["전전고가"] < 저고점_30["전고가"]
&& 전봉3_30 > 저고점_30["전저가"] && candleData_30.Close < 저고점_30["전저가"] &&
저고점_30["전전전저가"] < 저고점_30["전전저가"] && 저고점_30["전전저가"] < 저고점_30["전저가"] && candleData_30.Open > candleData_30.Close && candleData_30_전봉.Open > candleData_30_전봉.Close)
|| (저고점_30["전전전저가"] < 저고점_30["전전저가"] && 저고점_30["전전전고가"] < 저고점_30["전전고가"] && 저고점_30["전저가"] < 저고점_30["전고가"] && 저고점_30["전저가"] < 저고점_30["전전고가"]
&& 저고점_30["전전고가"] > 저고점_30["전고가"] && candleData_30.Close < 저고점_30["전저가"] && 전봉3_30 > 저고점_30["전저가"] && candleData_30.Open > candleData_30.Close && candleData_30_전봉.Open > candleData_30_전봉.Close);
var flag_5 = (저고점_5["전전전고가"] < 저고점_5["전전고가"] && 저고점_5["전전고가"] > 저고점_5["전고가"] && 현재봉3_5 < 저고점_5["전저가"])
|| (저고점_5["전전전저가"] < 저고점_5["전전저가"] && 저고점_5["전전저가"] < 저고점_5["전저가"] && 현재봉3_5 < 저고점_5["전저가"])
|| (저고점_5["전전저가"] > 저고점_5["전저가"] && 저고점_5["전전전저가"] > 저고점_5["전전저가"] && 저고점_5["전전고가"] > 저고점_5["전고가"] && 저고점_5["전전전고가"] > 저고점_5["전전고가"]);
var flag_1 = 현재봉3 < oneList.Min();
if (flag_30 && flag_5 && flag_1)
{ {
buyFlag = true; buyFlag = true;
} }
@@ -925,7 +900,7 @@ namespace BitgetAPI.IndicatorConditionSetup
{ "MarketName", market }, { "MarketName", market },
{ "BuyDate", nowTime }, { "BuyDate", nowTime },
{ "Price", price }, { "Price", price },
{ "Flag", 저고점_30["전저가"] < 저고점_30["전전저가"]}, { "Flag", 저고점_60["전저가"] < 저고점_60["전전저가"]},
{ "MCandleTimeType", (int)interval }, { "MCandleTimeType", (int)interval },
{ "CandleTime", candleData.Argument }, { "CandleTime", candleData.Argument },
{ "Candle", candleData } { "Candle", candleData }
@@ -994,30 +969,12 @@ namespace BitgetAPI.IndicatorConditionSetup
} }
var sellFlag = false; var sellFlag = false;
//예외처리
if (저고점_60["전고가"] > 현재봉3_60)
sellFlag = true;
if (전봉3_15 > 전전봉3_15) sellFlag = true;
if (flag)
{
if (저고점_30["전저가"] > 저고점_30["전전저가"])
{
sellFlag = true;
}
if (저고점_30["전전저가"] < 전봉3_30)
{
sellFlag = true;
}
}
else
{
if (저고점_30["전고가"] < 전봉3_30)
{
sellFlag = true;
}
if (저고점_30["전저가"] < 저고점_30["전전저가"])
{
buyItem["Flag"] = true;
}
}
if (sellFlag) if (sellFlag)
{ {
@@ -1104,15 +1061,15 @@ namespace BitgetAPI.IndicatorConditionSetup
} }
} }
public bool Calculate전고점(string market, string strInterval, MCandleTimeType type, double 전봉3, double 전전봉3, double 전전전봉3, double 전전전전봉3, CandleData candleData) public bool Calculate전고점(string market, string strInterval, MCandleTimeType type, double 전봉3, double 전전봉3, double 전전전봉3, CandleData candleData)
{ {
var 저고점 = 전저고점[market + strInterval]; var 저고점 = 전저고점[market + strInterval];
//전저가 //전저가
if (전봉3 > 전전봉3 && 전전봉3 < 전전전봉3 && if (전봉3 > 전전봉3 && 전전봉3 < 전전전봉3 &&
저고점["tempLowVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() 저고점["tempLowVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() &&
&& 전전전봉3 < 전전전전봉3) ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempHighVal"] >= 120 * (int)type)
{ {
저고점["tempLow2Val"] = 저고점["tempLowVal"]; 저고점["tempLow2Val"] = 저고점["tempLowVal"];
저고점["tempLowVal"] = ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds(); 저고점["tempLowVal"] = ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds();
@@ -1121,18 +1078,29 @@ namespace BitgetAPI.IndicatorConditionSetup
저고점["전전전저가"] = 저고점["전전저가"]; 저고점["전전전저가"] = 저고점["전전저가"];
저고점["전전저가"] = 저고점["전저가"]; 저고점["전전저가"] = 저고점["전저가"];
저고점["전저가"] = 전전봉3; 저고점["전저가"] = 전전봉3;
저고점["Type"] = 0;
} }
else if (전봉3 > 전전봉3 && 전전봉3 < 전전전봉3 && else if (전봉3 > 전전봉3 && 전전봉3 < 전전전봉3 &&
저고점["tempLowVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() 저고점["tempLowVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() &&
&& 전전전봉3 > 전전전전봉3) ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempHighVal"] < 120 * (int)type)
{ {
//이전으로 초기화 작업(High)
저고점["전고가"] = 저고점["전전고가"];
저고점["전전고가"] = 저고점["전전전고가"];
저고점["전전전고가"] = 저고점["전전전전고가"];
저고점["Type"] = 0;
저고점["전전전전고가"] = 저고점["switchLowVal"];
저고점["tempHighVal"] = 저고점["tempHigh2Val"];
if (저고점["전저가"] > 전전봉3)
저고점["전저가"] = 전전봉3;
} }
//전고가 //전고가
if (전전봉3 > 전봉3 && 전전봉3 > 전전전봉3 && if (전전봉3 > 전봉3 && 전전봉3 > 전전전봉3 &&
저고점["tempHighVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() 저고점["tempHighVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() &&
&& 전전전봉3 > 전전전전봉3) ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempLowVal"] >= 120 * (int)type)
{ {
저고점["tempHigh2Val"] = 저고점["tempHighVal"]; 저고점["tempHigh2Val"] = 저고점["tempHighVal"];
저고점["tempHighVal"] = ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds(); 저고점["tempHighVal"] = ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds();
@@ -1140,6 +1108,22 @@ namespace BitgetAPI.IndicatorConditionSetup
저고점["전전전전고가"] = 저고점["전전전고가"]; 저고점["전전전전고가"] = 저고점["전전전고가"];
저고점["전전전고가"] = 저고점["전전고가"]; 저고점["전전전고가"] = 저고점["전전고가"];
저고점["전전고가"] = 저고점["전고가"]; 저고점["전전고가"] = 저고점["전고가"];
저고점["Type"] = 1;
저고점["전고가"] = 전전봉3;
}
else if (전전봉3 > 전봉3 && 전전봉3 > 전전전봉3 &&
저고점["tempHighVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() &&
((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempLowVal"] < 120 * (int)type)
{
//이전으로 초기화 작업(Low)
저고점["전저가"] = 저고점["전전저가"];
저고점["전전저가"] = 저고점["전전전저가"];
저고점["전전전저가"] = 저고점["전전전전저가"];
저고점["전전전전저가"] = 저고점["switchHighVal"];
저고점["Type"] = 1;
저고점["tempLowVal"] = 저고점["tempLow2Val"];
if (저고점["전고가"] < 전전봉3)
저고점["전고가"] = 전전봉3; 저고점["전고가"] = 전전봉3;
} }