15분봉과 1시간봉 처리

This commit is contained in:
kyh
2025-02-17 13:53:23 +09:00
parent 58396e1197
commit c548e01174

View File

@@ -334,47 +334,47 @@ namespace BitgetAPI.IndicatorConditionSetup
ichimokuConditionSetup.calIchimokuData(candleDatas_정렬, candleData_전전전전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_정렬, candleData_전전전전봉);
#endregion
#region 5분봉 처리
#region 15분봉 처리
// 시간별로 정렬하기 (임시 리스트)
var candleDatas_5 = findedMarket.candleDataList[MCandleTimeType.M5];
var candleDatas_5_정렬 = candleDatas_5.OrderBy(i => i.Argument).ToList();
var candleDatas_15 = findedMarket.candleDataList[MCandleTimeType.M15];
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);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_5_정렬, candleData_5);
ichimokuConditionSetup.calIchimokuData(candleDatas_15_정렬, candleData_15);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_15_정렬, candleData_15);
candleDatas_5_정렬.RemoveAt(candleDatas_5_정렬.Count - 1);
var candleData_5_전봉 = candleDatas_5.Find(i => i.Argument == candleDatas_5_정렬.Last().Argument);
candleDatas_15_정렬.RemoveAt(candleDatas_15_정렬.Count - 1);
var candleData_15_전봉 = candleDatas_15.Find(i => i.Argument == candleDatas_15_정렬.Last().Argument);
if (candleData_5_전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_5_정렬, candleData_5_전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_5_정렬, candleData_5_전봉);
if (candleData_15_전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_15_정렬, candleData_15_전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_15_정렬, candleData_15_전봉);
candleDatas_5_정렬.RemoveAt(candleDatas_5_정렬.Count - 1);
var candleData_5_전전봉 = candleDatas_5.Find(i => i.Argument == candleDatas_5_정렬.Last().Argument);
candleDatas_15_정렬.RemoveAt(candleDatas_15_정렬.Count - 1);
var candleData_15_전전봉 = candleDatas_15.Find(i => i.Argument == candleDatas_15_정렬.Last().Argument);
if (candleData_5_전전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_5_정렬, candleData_5_전전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_5_정렬, candleData_5_전전봉);
if (candleData_15_전전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_15_정렬, candleData_15_전전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_15_정렬, candleData_15_전전봉);
candleDatas_5_정렬.RemoveAt(candleDatas_5_정렬.Count - 1);
var candleData_5_전전전봉 = candleDatas_5.Find(i => i.Argument == candleDatas_5_정렬.Last().Argument);
candleDatas_15_정렬.RemoveAt(candleDatas_15_정렬.Count - 1);
var candleData_15_전전전봉 = candleDatas_15.Find(i => i.Argument == candleDatas_15_정렬.Last().Argument);
if (candleData_5_전전전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_5_정렬, candleData_5_전전전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_5_정렬, candleData_5_전전전봉);
if (candleData_15_전전전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_15_정렬, candleData_15_전전전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_15_정렬, candleData_15_전전전봉);
candleDatas_5_정렬.RemoveAt(candleDatas_5_정렬.Count - 1);
var candleData_5_전전전전봉 = candleDatas_5.Find(i => i.Argument == candleDatas_5_정렬.Last().Argument);
candleDatas_15_정렬.RemoveAt(candleDatas_15_정렬.Count - 1);
var candleData_15_전전전전봉 = candleDatas_15.Find(i => i.Argument == candleDatas_15_정렬.Last().Argument);
if (candleData_5_전전전전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_5_정렬, candleData_5_전전전전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_5_정렬, candleData_5_전전전전봉);
if (candleData_15_전전전전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_15_정렬, candleData_15_전전전전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_15_정렬, candleData_15_전전전전봉);
#endregion
#region 30분봉 처리
@@ -419,6 +419,49 @@ namespace BitgetAPI.IndicatorConditionSetup
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_30_정렬, candleData_30_전전전전봉);
#endregion
#region 60분봉 처리
// 시간별로 정렬하기 (임시 리스트)
var candleDatas_60 = findedMarket.candleDataList[MCandleTimeType.H1];
var candleDatas_60_정렬 = candleDatas_60.OrderBy(i => i.Argument).ToList();
var candleData_60 = candleDatas_60.Find(i => i.Argument == candleDatas_60_정렬.Last().Argument);
if (candleData_60 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_60_정렬, candleData_60);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_60_정렬, candleData_60);
candleDatas_60_정렬.RemoveAt(candleDatas_60_정렬.Count - 1);
var candleData_60_전봉 = candleDatas_60.Find(i => i.Argument == candleDatas_60_정렬.Last().Argument);
if (candleData_60_전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_60_정렬, candleData_60_전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_60_정렬, candleData_60_전봉);
candleDatas_60_정렬.RemoveAt(candleDatas_60_정렬.Count - 1);
var candleData_60_전전봉 = candleDatas_60.Find(i => i.Argument == candleDatas_60_정렬.Last().Argument);
if (candleData_60_전전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_60_정렬, candleData_60_전전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_60_정렬, candleData_60_전전봉);
candleDatas_60_정렬.RemoveAt(candleDatas_60_정렬.Count - 1);
var candleData_60_전전전봉 = candleDatas_60.Find(i => i.Argument == candleDatas_60_정렬.Last().Argument);
if (candleData_60_전전전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_60_정렬, candleData_60_전전전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_60_정렬, candleData_60_전전전봉);
candleDatas_60_정렬.RemoveAt(candleDatas_60_정렬.Count - 1);
var candleData_60_전전전전봉 = candleDatas_60.Find(i => i.Argument == candleDatas_60_정렬.Last().Argument);
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.상한선
&& candleData.Close > candleData.IchimokData.상한선)
{
@@ -577,16 +620,21 @@ namespace BitgetAPI.IndicatorConditionSetup
var Bol72_Up = candleData.movingAverageDataList[72].BolangerValue_Up;
#endregion
var 현재봉3_5 = candleData_5.movingAverageDataList[3].Value;
var 전봉3_5 = candleData_5_전봉.movingAverageDataList[3].Value;
var 전전봉3_5 = candleData_5_전전봉.movingAverageDataList[3].Value;
var 전전전봉3_5 = candleData_5_전전전봉.movingAverageDataList[3].Value;
var 현재봉3_15 = candleData_15.movingAverageDataList[3].Value;
var 전봉3_15 = candleData_15_전봉.movingAverageDataList[3].Value;
var 전전봉3_15 = candleData_15_전전봉.movingAverageDataList[3].Value;
var 전전전봉3_15 = candleData_15_전전전봉.movingAverageDataList[3].Value;
var 현재봉3_30 = candleData_30.movingAverageDataList[3].Value;
var 전봉3_30 = candleData_30_전봉.movingAverageDataList[3].Value;
var 전전봉3_30 = candleData_30_전전봉.movingAverageDataList[3].Value;
var 전전전봉3_30 = candleData_30_전전전봉.movingAverageDataList[3].Value;
var 현재봉3_60 = candleData_60.movingAverageDataList[3].Value;
var 전봉3_60 = candleData_60_전봉.movingAverageDataList[3].Value;
var 전전봉3_60 = candleData_60_전전봉.movingAverageDataList[3].Value;
var 전전전봉3_60 = candleData_60_전전전봉.movingAverageDataList[3].Value;
var oneList = new List<double>() {
현재봉24,
현재봉48,
@@ -603,11 +651,12 @@ namespace BitgetAPI.IndicatorConditionSetup
var 저고점_1 = 전저고점[market + "1m"];
var 저고점_5 = 전저고점[market + "5m"];
var 저고점_15 = 전저고점[market + "15m"];
var 저고점_30 = 전저고점[market + "30m"];
var returnVal = Calculate전고점(market, "1m", MCandleTimeType.M1, 전봉3, 전전봉3, 전전전봉3, candleData);
if (!returnVal) continue;
returnVal = Calculate전고점(market, "5m", MCandleTimeType.M5, 전봉3_5, 전전봉3_5, 전전전봉3_5, candleData_5);
returnVal = Calculate전고점(market, "15m", MCandleTimeType.M5, 전봉3_15, 전전봉3_15, 전전전봉3_15, candleData_15);
if (!returnVal) continue;
returnVal = Calculate전고점(market, "30m", MCandleTimeType.M30, 전봉3_30, 전전봉3_30, 전전전봉3_30, candleData_30);
if (!returnVal) continue;
@@ -634,20 +683,19 @@ namespace BitgetAPI.IndicatorConditionSetup
var buyFlag = false;
// 30분봉
var flag_30 =
//(저고점_30["전전전저가"] > 저고점_30["전전저가"]
// && (저고점_30["전전저가"] < 전봉3 && 저고점_30["전전저가"] < 전전봉3 && 저고점_30["전전저가"] < 현재봉3 && 전전봉3 > 전봉3 && 전봉3 < 현재봉3)
//&& 현재봉3_30 > 저고점_30["전고가"]) ||
(저고점_30["전전전저가"] > 저고점_30["전전저가"] && 저고점_30["전전저가"] < 저고점_30["전저가"] && candleData_30.Close > 저고점_30["전고가"])
|| (저고점_30["전전전고가"] > 저고점_30["전전고가"] && 저고점_30["전전고가"] > 저고점_30["전고가"] && 현재봉3_30 > 저고점_30["전고가"]);
var flag_1 = 현재봉3 > oneList.Max();
var flag_15 =
(저고점_15["전전전저가"] > 저고점_15["전전저가"] && 저고점_15["전전저가"] < 저고점_15["전저가"] && candleData_15.Close > 저고점_15["전고가"])
|| (저고점_15["전전전고가"] > 저고점_15["전전고가"] && 저고점_15["전전고가"] > 저고점_15["전고가"] && 현재봉3_15 > 저고점_15["전고가"])
|| (저고점_15["전전전고가"] < 저고점_15["전전고가"] && 저고점_15["전전고가"] > 저고점_15["전고가"] && 현재봉3_15 < 저고점_15["전전고가"]);
var flag_5 = (저고점_5["전전전저가"] > 저고점_5["전전저가"] && 저고점_5["전전저가"] < 저고점_5["전저가"] && 현재봉3_5 > 저고점_5["전고가"])
|| (저고점_5["전전전고가"] > 저고점_5["전전고가"] && 저고점_5["전전고가"] > 저고점_5["전고가"] && 현재봉3_5 > 저고점_5["전고가"]);
var flag_30 = 저고점_30["전고가"] < 현재봉3_30;
var flag_1 = 현재봉3 > oneList.Max() && 전봉3 < beforeOneList.Max();
var flag_60 = 현재봉3_60 > 전봉3_60 && 전봉3_60 > 전전봉3_60;
if (flag_30 && flag_5 && flag_1)
if (flag_1 && flag_15 && flag_30 && flag_60)
{
buyFlag = true;
}
@@ -678,7 +726,7 @@ namespace BitgetAPI.IndicatorConditionSetup
{ "Flag", 저고점_30["전고가"] > 저고점_30["전전고가"]},
{ "MCandleTimeType", (int)interval },
{ "CandleTime", candleData.Argument },
{ "Candle", candleData }
{ "Candle", candleData }
};
UpBuyList.Add(market, buyDic);
@@ -738,19 +786,29 @@ namespace BitgetAPI.IndicatorConditionSetup
}
var sellFlag = false;
if (저고점_30["전저가"] > 전봉3_30)
sellFlag = true;
if (flag)
{
if(저고점_30["전고가"] < 저고점_30["전전고가"])
if (저고점_15["전전고가"] > 저고점_15["전고가"])
{
sellFlag = true;
}
if (저고점_15["전전고가"] > 현재봉3_15)
{
sellFlag = true;
}
}
else
{
if (저고점_30["전고가"] > 저고점_30["전전고가"])
if (!flag)
{
if (저고점_15["전저가"] > 현재봉3_15)
sellFlag = true;
}
if (저고점_15["전고가"] > 저고점_15["전전고가"])
{
buyItem["Flag"] = true;
}
@@ -848,22 +906,19 @@ namespace BitgetAPI.IndicatorConditionSetup
var buyFlag = false;
//var flag_30 = (저고점_30["전전전고가"] < 저고점_30["전전고가"] && 저고점_30["전전고가"] > 저고점_30["전고가"] && 현재봉3_30 < 저고점_30["전저가"])
// || (저고점_30["전전전고가"] < 저고점_30["전전고가"] && 저고점_30["전전고가"] < 저고점_30["전고가"] && 현재봉3_30 < 저고점_30["전저가"]);
var flag_1 = 현재봉3 < oneList.Min();
var flag_30 =
//(저고점_30["전전전고가"] < 저고점_30["전전고가"]
//&& (저고점_30["전전고가"] > 전봉3 && 저고점_30["전전고가"] > 전전봉3 && 저고점_30["전전고가"] > 현재봉3 && 전전봉3 < 전봉3 && 전봉3 > 현재봉3)
//&& 현재봉3_30 < 저고점_30["전저가"]) ||
(저고점_30["전전전고가"] < 저고점_30["전전고가"] && 저고점_30["전전고가"] > 저고점_30["전고가"] && candleData_30.Close < 저고점_30["전저가"])
|| (저고점_30["전전전저가"] < 저고점_30["전전저가"] && 저고점_30["전전저가"] < 저고점_30["전저가"] && 현재봉3_30 < 저고점_30["전저가"]);
var flag_15 =
(저고점_15["전전전고가"] < 저고점_15["전전고가"] && 저고점_15["전전고가"] > 저고점_15["전고가"] && candleData_15.Close < 저고점_15["전저가"])
|| (저고점_15["전전전저가"] < 저고점_15["전전저가"] && 저고점_15["전전저가"] < 저고점_15["전저가"] && 현재봉3_15 < 저고점_15["전저가"])
|| (저고점_30["전전전저가"] > 저고점_15["전전저가"] && 저고점_15["전전저가"] < 저고점_15["전저가"] && 현재봉3_15 > 저고점_15["전전저가"]);
var flag_5 = (저고점_5["전전전고가"] < 저고점_5["전전고가"] && 저고점_5["전전고가"] > 저고점_5["전고가"] && candleData_5.Close < 저고점_5["전저가"])
|| (저고점_5["전전전저가"] < 저고점_5["전전저가"] && 저고점_5["전전저가"] < 저고점_5["전저가"] && 현재봉3_5 < 저고점_5["전저가"]);
var flag_30 = 저고점_30["전저가"] > 현재봉3_30;
var flag_1 = 현재봉3 < oneList.Min() && 전봉3 > beforeOneList.Min();
var flag_60 = 현재봉3_60 < 전봉3_60 && 전봉3_60 < 전전봉3_60;
if (flag_30 && flag_5 && flag_1)
if (flag_1 && flag_15 && flag_30 && flag_60)
{
buyFlag = true;
}
@@ -953,19 +1008,24 @@ namespace BitgetAPI.IndicatorConditionSetup
}
var sellFlag = false;
if (저고점_30["전고가"] < 전봉3_30)
sellFlag = true;
if (flag)
{
if (저고점_30["전저가"] > 저고점_30["전전저가"])
if (저고점_15["전전저가"] < 저고점_15["전저가"])
{
sellFlag = true;
}
if (저고점_15["전전저가"] < 현재봉3_15)
{
sellFlag = true;
}
}
else
{
if (저고점_30["전저가"] < 저고점_30["전전저가"])
if (저고점_15["전고가"] < 현재봉3_15)
sellFlag = true;
if (저고점_15["전저가"] < 저고점_15["전전저가"])
{
buyItem["Flag"] = true;
}