전저가 전고가 계산 방식에 초단위를 추가(초단위떄문에 1개 짜리가 잡히는 순간이 있음)

This commit is contained in:
kyh
2025-02-20 11:33:19 +09:00
parent 05a314349c
commit a9b551cfee

View File

@@ -582,11 +582,21 @@ namespace BitgetAPI.IndicatorConditionSetup
var 전전봉3_5 = candleData_5_전전봉.movingAverageDataList[3].Value;
var 전전전봉3_5 = candleData_5_전전전봉.movingAverageDataList[3].Value;
var 현재봉4_5 = candleData_5.movingAverageDataList[4].Value;
var 전봉4_5 = candleData_5_전봉.movingAverageDataList[4].Value;
var 전전봉4_5 = candleData_5_전전봉.movingAverageDataList[4].Value;
var 전전전봉4_5 = candleData_5_전전전봉.movingAverageDataList[4].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 현재봉4_30 = candleData_30.movingAverageDataList[4].Value;
var 전봉4_30 = candleData_30_전봉.movingAverageDataList[4].Value;
var 전전봉4_30 = candleData_30_전전봉.movingAverageDataList[4].Value;
var 전전전봉4_30 = candleData_30_전전전봉.movingAverageDataList[4].Value;
var oneList = new List<double>() {
현재봉24,
현재봉48,
@@ -605,11 +615,11 @@ namespace BitgetAPI.IndicatorConditionSetup
var 저고점_5 = 전저고점[market + "5m"];
var 저고점_30 = 전저고점[market + "30m"];
var returnVal = Calculate전고점(market, "1m", MCandleTimeType.M1, 전봉3, 전전봉3, 전전전봉3, candleData);
var returnVal = Calculate전고점(market, "1m", MCandleTimeType.M1, 전봉4, 전전봉4, 전전전봉4, candleData);
if (!returnVal) continue;
returnVal = Calculate전고점(market, "5m", MCandleTimeType.M5, 전봉3_5, 전전봉3_5, 전전전봉3_5, candleData_5);
returnVal = Calculate전고점(market, "5m", MCandleTimeType.M5, 전봉4_5, 전전봉4_5, 전전전봉4_5, candleData_5);
if (!returnVal) continue;
returnVal = Calculate전고점(market, "30m", MCandleTimeType.M30, 전봉3_30, 전전봉3_30, 전전전봉3_30, candleData_30);
returnVal = Calculate전고점(market, "30m", MCandleTimeType.M30, 전봉4_30, 전전봉4_30, 전전전봉4_30, candleData_30);
if (!returnVal) continue;
@@ -636,16 +646,15 @@ namespace BitgetAPI.IndicatorConditionSetup
// 30분봉
var flag_30 =
//(저고점_30["전전전저가"] > 저고점_30["전전저가"]
// && (저고점_30["전전저가"] < 전봉3 && 저고점_30["전전저가"] < 전전봉3 && 저고점_30["전전저가"] < 현재봉3 && 전전봉3 > 전봉3 && 전봉3 < 현재봉3)
//&& 현재봉3_30 > 저고점_30["전고가"]) ||
(저고점_30["전전전저가"] > 저고점_30["전전저가"] && 저고점_30["전전저가"] < 저고점_30["전저가"] && 전봉3_30 < 저고점_30["전고가"] && 현재봉3_30 > 저고점_30["전고가"]);
//|| (저고점_30["전전전고가"] > 저고점_30["전전고가"] && 저고점_30["전전고가"] > 저고점_30["전고가"] && 현재봉3_30 > 저고점_30["전고가"]);
(저고점_30["전전전저가"] > 저고점_30["전전저가"] && 저고점_30["전전저가"] > 저고점_30["전저가"] && 전봉4_30 < 저고점_30["전고가"] && 현재봉4_30 > 저고점_30["전고가"] &&
저고점_30["전전전고가"] > 저고점_30["전전고가"] && 저고점_30["전전고가"] > 저고점_30["전고가"])
|| (저고점_30["전전전저가"] > 저고점_30["전전저가"] && 저고점_30["전전저가"] < 저고점_30["전저가"] && 전봉4_30 < 저고점_30["전고가"] && 현재봉4_30 > 저고점_30["전고가"]);
var flag_5 = (저고점_5["전전전저가"] > 저고점_5["전전저가"] && 저고점_5["전전저가"] < 저고점_5["전저가"] && 현재봉3_5 > 저고점_5["전고가"])
|| (저고점_5["전전전고가"] > 저고점_5["전전고가"] && 저고점_5["전전고가"] > 저고점_5["전고가"] && 현재봉3_5 > 저고점_5["전고가"]);
var flag_5 = (저고점_5["전전전저가"] > 저고점_5["전전저가"] && 저고점_5["전전저가"] < 저고점_5["전저가"] && 현재봉4_5 > 저고점_5["전고가"])
|| (저고점_5["전전전고가"] > 저고점_5["전전고가"] && 저고점_5["전전고가"] > 저고점_5["전고가"] && 현재봉4_5 > 저고점_5["전고가"])
|| (저고점_5["전전저가"] < 저고점_5["전저가"] && 저고점_5["전전고가"] < 저고점_5["전고가"]);
var flag_1 = 현재봉3 > oneList.Max();
var flag_1 = 현재봉4 > oneList.Max();
if (flag_30 && flag_5 && flag_1)
{
@@ -738,8 +747,7 @@ namespace BitgetAPI.IndicatorConditionSetup
}
var sellFlag = false;
if (저고점_30["전저가"] > 전봉3_30)
sellFlag = true;
if (flag)
{
@@ -748,17 +756,15 @@ namespace BitgetAPI.IndicatorConditionSetup
sellFlag = true;
}
if (저고점_30["전전고가"] > 현재봉3_30)
if (저고점_30["전전고가"] > 현재봉4_30)
{
sellFlag = true;
}
}
else
{
if (저고점_30["전저가"] > 현재봉3_30)
{
if (저고점_30["전저가"] > 현재봉4_30)
sellFlag = true;
}
if (저고점_30["전고가"] > 저고점_30["전전고가"])
{
@@ -862,16 +868,14 @@ namespace BitgetAPI.IndicatorConditionSetup
// || (저고점_30["전전전고가"] < 저고점_30["전전고가"] && 저고점_30["전전고가"] < 저고점_30["전고가"] && 현재봉3_30 < 저고점_30["전저가"]);
var flag_30 =
//(저고점_30["전전전고가"] < 저고점_30["전전고가"]
//&& (저고점_30["전전고가"] > 전봉3 && 저고점_30["전전고가"] > 전전봉3 && 저고점_30["전전고가"] > 현재봉3 && 전전봉3 < 전봉3 && 전봉3 > 현재봉3)
//&& 현재봉3_30 < 저고점_30["전저가"]) ||
(저고점_30["전전전고가"] < 저고점_30["전전고가"] && 저고점_30["전전고가"] > 저고점_30["전고가"] && 전봉3_30 > 저고점_30["전저가"] && 현재봉3_30 < 저고점_30["전저가"]);
//|| (저고점_30["전전전저가"] < 저고점_30["전전저가"] && 저고점_30["전전저가"] < 저고점_30["전저가"] && 현재봉3_30 < 저고점_30["전저가"]);
(저고점_30["전전전고가"] < 저고점_30["전전고가"] && 저고점_30["전전고가"] < 저고점_30["전고가"] && 전봉4_30 > 저고점_30["전저가"] && 현재봉4_30 < 저고점_30["전저가"] &&
저고점_30["전전전저가"] < 저고점_30["전전저가"] && 저고점_30["전전저가"] < 저고점_30["전저가"])
|| (저고점_30["전전전고가"] < 저고점_30["전전고가"] && 저고점_30["전전고가"] > 저고점_30["전고가"] && 전봉4_30 > 저고점_30["전저가"] && 현재봉4_30 < 저고점_30["전저가"]);
var flag_5 = (저고점_5["전전전고가"] < 저고점_5["전전고가"] && 저고점_5["전전고가"] > 저고점_5["전고가"] && 현재봉3_5 < 저고점_5["전저가"])
|| (저고점_5["전전전저가"] < 저고점_5["전전저가"] && 저고점_5["전전저가"] < 저고점_5["전저가"] && 현재봉3_5 < 저고점_5["전저가"]);
var flag_1 = 현재봉3 < oneList.Min();
var flag_5 = (저고점_5["전전전고가"] < 저고점_5["전전고가"] && 저고점_5["전전고가"] > 저고점_5["전고가"] && 현재봉4_5 < 저고점_5["전저가"])
|| (저고점_5["전전전저가"] < 저고점_5["전전저가"] && 저고점_5["전전저가"] < 저고점_5["전저가"] && 현재봉4_5 < 저고점_5["전저가"])
|| (저고점_5["전전저가"] > 저고점_5["전저가"] && 저고점_5["전전고가"] > 저고점_5["전고가"]);
var flag_1 = 현재봉4 < oneList.Min();
if (flag_30 && flag_5 && flag_1)
{
@@ -963,23 +967,20 @@ namespace BitgetAPI.IndicatorConditionSetup
}
var sellFlag = false;
if (저고점_30["전고가"] < 전봉3_30)
sellFlag = true;
if (flag)
{
if (저고점_30["전저가"] > 저고점_30["전전저가"])
{
sellFlag = true;
}
if (저고점_30["전전저가"] < 현재봉3_30)
if (저고점_30["전전저가"] < 현재봉4_30)
{
sellFlag = true;
}
}
else
{
if (저고점_30["전고가"] < 현재봉3_30)
if (저고점_30["전고가"] < 현재봉4_30)
{
sellFlag = true;
}
@@ -1082,7 +1083,7 @@ namespace BitgetAPI.IndicatorConditionSetup
//전저가
if (전봉3 > 전전봉3 && 전전봉3 < 전전전봉3 &&
저고점["tempLowVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() &&
((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempHighVal"] >= 120 * (int)type)
((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempHighVal"] >= 120 * (int)type + 59.9999)
{
저고점["tempLow2Val"] = 저고점["tempLowVal"];
저고점["tempLowVal"] = ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds();
@@ -1095,7 +1096,7 @@ namespace BitgetAPI.IndicatorConditionSetup
}
else if (전봉3 > 전전봉3 && 전전봉3 < 전전전봉3 &&
저고점["tempLowVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() &&
((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempHighVal"] < 120 * (int)type)
((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempHighVal"] < 120 * (int)type + 59.9999)
{
//이전으로 초기화 작업(High)
저고점["전고가"] = 저고점["전전고가"];
@@ -1111,7 +1112,7 @@ namespace BitgetAPI.IndicatorConditionSetup
//전고가
if (전전봉3 > 전봉3 && 전전봉3 > 전전전봉3 &&
저고점["tempHighVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() &&
((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempLowVal"] >= 120 * (int)type)
((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempLowVal"] >= 120 * (int)type + 59.9999)
{
저고점["tempHigh2Val"] = 저고점["tempHighVal"];
저고점["tempHighVal"] = ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds();
@@ -1123,7 +1124,7 @@ namespace BitgetAPI.IndicatorConditionSetup
}
else if (전전봉3 > 전봉3 && 전전봉3 > 전전전봉3 &&
저고점["tempHighVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() &&
((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempLowVal"] < 120 * (int)type)
((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempLowVal"] < 120 * (int)type + 59.9999)
{
//이전으로 초기화 작업(Low)
저고점["전저가"] = 저고점["전전저가"];