임시수정

This commit is contained in:
kyh
2025-03-24 14:50:05 +09:00
parent 5052acd464
commit d1d5ed6fb9

View File

@@ -294,7 +294,7 @@ namespace BitgetAPI.IndicatorConditionSetup
BuyLongStep[market] = false; BuyLongStep[market] = false;
} }
if (!(전저고점.ContainsKey(market + "30m") && 전저고점.ContainsKey(market + "4H"))) continue; if (!(전저고점.ContainsKey(market + "30m"))) continue;
//if (!(전저고점.ContainsKey(market + "5m") && 전저고점.ContainsKey(market + "15m") && 전저고점.ContainsKey(market + "1H"))) //if (!(전저고점.ContainsKey(market + "5m") && 전저고점.ContainsKey(market + "15m") && 전저고점.ContainsKey(market + "1H")))
// continue; // continue;
@@ -387,7 +387,7 @@ namespace BitgetAPI.IndicatorConditionSetup
#region 60분봉 처리 #region 60분봉 처리
// 시간별로 정렬하기 (임시 리스트) // 시간별로 정렬하기 (임시 리스트)
/*
var candleDatas_240 = findedMarket.candleDataList[MCandleTimeType.H4]; var candleDatas_240 = findedMarket.candleDataList[MCandleTimeType.H4];
var candleDatas_240_정렬 = candleDatas_240.OrderBy(i => i.Argument).ToList(); var candleDatas_240_정렬 = candleDatas_240.OrderBy(i => i.Argument).ToList();
@@ -426,7 +426,7 @@ namespace BitgetAPI.IndicatorConditionSetup
if (candleData_240_전전전전봉 == null) continue; if (candleData_240_전전전전봉 == null) continue;
ichimokuConditionSetup.calIchimokuData(candleDatas_240_정렬, candleData_240_전전전전봉); ichimokuConditionSetup.calIchimokuData(candleDatas_240_정렬, candleData_240_전전전전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_240_정렬, candleData_240_전전전전봉); movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_240_정렬, candleData_240_전전전전봉);
*/
#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.상한선
@@ -613,7 +613,7 @@ namespace BitgetAPI.IndicatorConditionSetup
var 전전봉5_1 = candleData_1_전전봉.movingAverageDataList[5].Value; var 전전봉5_1 = candleData_1_전전봉.movingAverageDataList[5].Value;
var 전전전봉5_1 = candleData_1_전전전봉.movingAverageDataList[5].Value; var 전전전봉5_1 = candleData_1_전전전봉.movingAverageDataList[5].Value;
*/ */
/*
var 현재봉2_240 = candleData_240.movingAverageDataList[2].Value; var 현재봉2_240 = candleData_240.movingAverageDataList[2].Value;
var 전봉2_240 = candleData_240_전봉.movingAverageDataList[2].Value; var 전봉2_240 = candleData_240_전봉.movingAverageDataList[2].Value;
var 전전봉2_240 = candleData_240_전전봉.movingAverageDataList[2].Value; var 전전봉2_240 = candleData_240_전전봉.movingAverageDataList[2].Value;
@@ -638,7 +638,7 @@ namespace BitgetAPI.IndicatorConditionSetup
var 현재봉24_240 = candleData_240.movingAverageDataList[24].Value; var 현재봉24_240 = candleData_240.movingAverageDataList[24].Value;
var 전봉24_240 = candleData_240_전봉.movingAverageDataList[24].Value; var 전봉24_240 = candleData_240_전봉.movingAverageDataList[24].Value;
*/
var oneList = new List<double>() { var oneList = new List<double>() {
현재봉24, 현재봉24,
현재봉48, 현재봉48,
@@ -668,11 +668,7 @@ namespace BitgetAPI.IndicatorConditionSetup
|| (저고점_30["전저가"] < 저고점_30["전전저가"] || (저고점_30["전저가"] < 저고점_30["전전저가"]
&& 저고점_30["전고가"] < 저고점_30["전전고가"]) && 저고점_30["전고가"] < 저고점_30["전전고가"])
|| (저고점_30["전저가"] < 저고점_30["전전저가"] || (저고점_30["전저가"] < 저고점_30["전전저가"]
&& 저고점_30["전고가"] > 저고점_30["전전고가"])) && 저고점_30["전고가"] > 저고점_30["전전고가"])))
&& 저고점_30["tempHighVal"] > 저고점_30["tempLowVal"]
&& 저고점_30["tempLowVal"] > 저고점_30["tempHigh2Val"]
&& 저고점_30["tempHigh2Val"] > 저고점_30["tempLow2Val"]
&& 저고점_30["tempLow2Val"] > 저고점_30["tempHigh3Val"])
&& candleData.IchimokData.상한선 > candleData.Close && candleData.IchimokData.상한선 > candleData.Close
//&& candleData_240.Close < 현재봉24_240 //&& candleData_240.Close < 현재봉24_240
//&& 현재봉24_240 < 전봉24_240 //&& 현재봉24_240 < 전봉24_240
@@ -685,32 +681,36 @@ namespace BitgetAPI.IndicatorConditionSetup
&& 전봉3 < 저고점_30["전고가"]) && 전봉3 < 저고점_30["전고가"])
|| (저고점_30["전저가"] < 저고점_30["전전저가"] || (저고점_30["전저가"] < 저고점_30["전전저가"]
&& 전봉3 > 저고점_30["전고가"])) && 전봉3 > 저고점_30["전고가"]))
&& 전전봉3 < 전봉3 && 전봉3 > 현재봉3 && 전전봉3 < 전봉3 && 전봉3 > 현재봉3)
&& 저고점_30["tempHighVal"] < 저고점_30["tempLowVal"]
&& 저고점_30["tempLowVal"] < 저고점_30["tempHigh2Val"]
&& 저고점_30["tempHigh2Val"] < 저고점_30["tempLow2Val"]
&& 저고점_30["tempLow2Val"] < 저고점_30["tempHigh3Val"])
&& candleData.IchimokData.상한선 > candleData.Close && candleData.IchimokData.상한선 > candleData.Close
//&& candleData_240.Close < 현재봉24_240 //&& candleData_240.Close < 현재봉24_240
//&& 현재봉24_240 < 전봉24_240 //&& 현재봉24_240 < 전봉24_240
&& 현재봉24 > 현재봉72; && 현재봉24 > 현재봉72;
var tempFlag1Long = (저고점_30["Type"] == 0
&& ((저고점_30["전저가"] > 저고점_30["전전저가"]
&& 저고점_30["전전고가"] < 저고점_30["전고가"])
|| (저고점_30["전저가"] > 저고점_30["전전저가"]
&& 저고점_30["전고가"] < 저고점_30["전전고가"])
|| (저고점_30["전저가"] > 저고점_30["전전저가"]
&& 저고점_30["전고가"] < 저고점_30["전전고가"])))
&& candleData.IchimokData.하한선 < candleData.Close
//&& candleData_240.Close > 현재봉24_240
//&& 현재봉24_240 > 전봉24_240;
&& 현재봉24 < 현재봉72;
var tempFlag2Long = (저고점_30["Type"] == 0 var tempFlag2Long = (저고점_30["Type"] == 1
&& ((저고점_30["전저가"] > 저고점_30["전전저가"] && ((전봉3 > 저고점_30["전저가"]
&& 저고점_30["전전고가"] < 저고점_30["전고가"]) && 저고점_30["전전고가"] < 저고점_30["전고가"])
|| (저고점_30["전저가"] > 저고점_30["전전저가"] || (전봉3 > 저고점_30["전저가"]
&& 저고점_30["전고가"] < 저고점_30["전전고가"]) && 저고점_30["전고가"] < 저고점_30["전전고가"])
|| (저고점_30["전저가"] < 저고점_30["전전저가"] || (전봉3 > 저고점_30["전저가"]
&& 저고점_30["전고가"] > 저고점_30["전전고가"])) && 저고점_30["전고가"] < 저고점_30["전전고가"]))
&& 저고점_30["tempLowVal"] > 저고점_30["tempHighVal"] && 전전봉3 > 전봉3 && 전봉3 < 현재봉3)
&& 저고점_30["tempHighVal"] > 저고점_30["tempLow2Val"] && candleData.IchimokData.하한선 < candleData.Close
&& 저고점_30["tempLow2Val"] > 저고점_30["tempHigh2Val"] //&& candleData_240.Close > 현재봉24_240
&& 저고점_30["tempHigh2Val"] > 저고점_30["tempLow3Val"]) //&& 현재봉24_240 > 전봉24_240;
//&& candleData.IchimokData.상한선 > candleData.Close && 현재봉24 < 현재봉72;
&& candleData_240.Close > 현재봉24_240
&& 현재봉24_240 > 전봉24_240;
//&& 현재봉24 < 현재봉72;
//var tempFlagShort = (저고점_30["Type"] == 1 //var tempFlagShort = (저고점_30["Type"] == 1
// && 저고점_30["전고가"] < 저고점_30["전전고가"] // && 저고점_30["전고가"] < 저고점_30["전전고가"]
@@ -738,7 +738,7 @@ namespace BitgetAPI.IndicatorConditionSetup
if (영호조건식_상향돌파) if (영호조건식_상향돌파)
{ {
if (!tempFlag2Long && !BuyLongStep[market]) if (!tempFlag1Long && !tempFlag2Long && !BuyLongStep[market])
{ {
BuyLongStep[market] = true; BuyLongStep[market] = true;
} }
@@ -760,7 +760,7 @@ namespace BitgetAPI.IndicatorConditionSetup
if (!UpBuyList.ContainsKey(market)) if (!UpBuyList.ContainsKey(market))
{ {
var buyFlag = false; var buyFlag = false;
if (tempFlag2Long) if (tempFlag2Long || tempFlag1Long)
{ {
// 60분봉 // 60분봉
@@ -797,20 +797,33 @@ namespace BitgetAPI.IndicatorConditionSetup
// && 저고점_30["전고가"] < candleData.Close; // && 저고점_30["전고가"] < candleData.Close;
//// && 저고점_30["전고가"] > candleData.Open; //// && 저고점_30["전고가"] > candleData.Open;
var finalSellPrice = 0.0;
var minSec = 저고점_30["tempHighVal"]; var minSec = 저고점_30["tempHighVal"];
if (minSec > 0) if (minSec > 0)
{ {
var minData = new DateTime(1970, 1, 1, 0, 0, 0); var minDate = new DateTime(1970, 1, 1, 0, 0, 0);
minData = minData.AddSeconds(minSec); minDate = minDate.AddSeconds(minSec);
minData = minData.AddMinutes(-3 * (int)interval); minDate = minDate.AddHours(8);
minDate = minDate.AddMinutes(-3 * (int)interval);
var candleDataList = candleDatas.OrderBy(i => i.Argument).ToList(); var candleDataList = candleDatas.OrderBy(i => i.Argument).ToList();
var list = candleDataList.Where(t => t.Argument > minData).ToList(); var list = candleDataList.Where(t => t.Argument > minDate).ToList();
list.RemoveAt(list.Count - 1);
finalSellPrice = list.Min(t => t.Close); var closeDataList = new List<double>();
var maxData = list.Max(t => t.Close);
if (list.Count > 3)
{
closeDataList.Add(list[0].Close);
closeDataList.Add(list[1].Close);
closeDataList.Add(list[2].Close);
}
else
{
closeDataList = list.Select(t => t.Close).ToList();
}
var maxData = closeDataList.Max();
if (candleData.Close > maxData && 현재봉3 > 전봉3) if (candleData.Close > maxData && 현재봉3 > 전봉3)
{ {
@@ -840,8 +853,7 @@ namespace BitgetAPI.IndicatorConditionSetup
{ {
{ "MarketName", market }, { "MarketName", market },
{ "BuyDate", nowTime }, { "BuyDate", nowTime },
{ "Price", price }, { "Price", price },
{ "finalSellPrice", finalSellPrice },
{ "Flag", 저고점_30["전고가"] > 저고점_30["전전고가"]}, { "Flag", 저고점_30["전고가"] > 저고점_30["전전고가"]},
{ "MCandleTimeType", (int)interval }, { "MCandleTimeType", (int)interval },
{ "CandleTime", candleData.Argument }, { "CandleTime", candleData.Argument },
@@ -891,7 +903,7 @@ namespace BitgetAPI.IndicatorConditionSetup
var buyItem = UpBuyList[market]; var buyItem = UpBuyList[market];
var flag = (bool)buyItem["Flag"]; var flag = (bool)buyItem["Flag"];
var finalSellPrice = (double)buyItem["finalSellPrice"];
if (interval < MCandleTimeType.H1) if (interval < MCandleTimeType.H1)
{ {
var buyTime = ((DateTime)buyItem["CandleTime"]).AddMinutes((int)interval); var buyTime = ((DateTime)buyItem["CandleTime"]).AddMinutes((int)interval);
@@ -916,21 +928,6 @@ namespace BitgetAPI.IndicatorConditionSetup
var sellFlag = false; var sellFlag = false;
if (finalSellPrice > candleData.Close)
sellFlag = true;
if (buyTimeUnix < 저고점_30["tempHighVal"])
{
if (저고점_30["전고가"] < 저고점_30["전전고가"])
{
sellFlag = true;
}
if (저고점_30["전전고가"] > candleData.Close)
{
sellFlag = true;
}
}
if (candleData.Close < candleData_전봉.Low || if (candleData.Close < candleData_전봉.Low ||
candleData.Close < candleData_전전봉.Low || candleData.Close < candleData_전전봉.Low ||
candleData.Close < candleData_전전전봉.Low) candleData.Close < candleData_전전전봉.Low)
@@ -1023,7 +1020,7 @@ namespace BitgetAPI.IndicatorConditionSetup
var description = string.Format("{0} 72,24,4 하락", strInterval); var description = string.Format("{0} 72,24,4 하락", strInterval);
var signalData = signals_SD.Find(i => i.MarketName.Equals(market) && i.Description.Equals(description)); var signalData = signals_SD.Find(i => i.MarketName.Equals(market) && i.Description.Equals(description));
if (!tempFlag2Short && !BuyShortStep[market]) if (!tempFlag1Short && !tempFlag2Short && !BuyShortStep[market])
{ {
BuyShortStep[market] = true; BuyShortStep[market] = true;
} }
@@ -1068,20 +1065,33 @@ namespace BitgetAPI.IndicatorConditionSetup
//{ //{
// buyFlag = true; // buyFlag = true;
//} //}
var finalSellPrice = 0.0;
var minSec = 저고점_30["tempLowVal"]; var minSec = 저고점_30["tempLowVal"];
if (minSec > 0) if (minSec > 0)
{ {
var minDate = new DateTime(1970, 1, 1, 0, 0, 0); var minDate = new DateTime(1970, 1, 1, 0, 0, 0);
minDate = minDate.AddSeconds(minSec); minDate = minDate.AddSeconds(minSec);
minDate = minDate.AddHours(8);
minDate = minDate.AddMinutes(-3 * (int)interval); minDate = minDate.AddMinutes(-3 * (int)interval);
var candleDataList = candleDatas.OrderBy(i => i.Argument).ToList(); var candleDataList = candleDatas.OrderBy(i => i.Argument).ToList();
var list = candleDataList.Where(t => t.Argument > minDate).ToList(); var list = candleDataList.Where(t => t.Argument > minDate).ToList();
list.RemoveAt(list.Count - 1); var closeDataList = new List<double>();
var minData = list.Min(t => t.Close);
finalSellPrice = list.Max(t => t.Close); if (list.Count > 3)
{
closeDataList.Add(list[0].Close);
closeDataList.Add(list[1].Close);
closeDataList.Add(list[2].Close);
}
else
{
closeDataList = list.Select(t => t.Close).ToList();
}
var minData = closeDataList.Min();
if (candleData.Close < minData && 현재봉3 < 전봉3) if (candleData.Close < minData && 현재봉3 < 전봉3)
{ {
buyFlag = true; buyFlag = true;
@@ -1112,7 +1122,7 @@ namespace BitgetAPI.IndicatorConditionSetup
{ "MarketName", market }, { "MarketName", market },
{ "BuyDate", nowTime }, { "BuyDate", nowTime },
{ "Price", price }, { "Price", price },
{ "finalSellPrice", finalSellPrice },
{ "Flag", 저고점_30["전저가"] < 저고점_30["전전저가"] }, { "Flag", 저고점_30["전저가"] < 저고점_30["전전저가"] },
{ "MCandleTimeType", (int)interval }, { "MCandleTimeType", (int)interval },
{ "CandleTime", candleData.Argument }, { "CandleTime", candleData.Argument },
@@ -1162,7 +1172,7 @@ namespace BitgetAPI.IndicatorConditionSetup
{ {
var buyItem = DownBuyList[market]; var buyItem = DownBuyList[market];
var flag = (bool)buyItem["Flag"]; var flag = (bool)buyItem["Flag"];
var finalSellPrice = (double)buyItem["finalSellPrice"];
if (interval < MCandleTimeType.H1) if (interval < MCandleTimeType.H1)
{ {
var buyTime = ((DateTime)buyItem["CandleTime"]).AddMinutes((int)interval); var buyTime = ((DateTime)buyItem["CandleTime"]).AddMinutes((int)interval);
@@ -1188,20 +1198,6 @@ namespace BitgetAPI.IndicatorConditionSetup
var sellFlag = false; var sellFlag = false;
if (finalSellPrice < candleData.Close)
sellFlag = true;
if (buyTimeUnix < 저고점_30["tempLowVal"])
{
if (저고점_30["전저가"] > 저고점_30["전전저가"])
{
sellFlag = true;
}
if (저고점_30["전전저가"] < candleData.Close)
{
sellFlag = true;
}
}
if (candleData.Close > candleData_전봉.High || if (candleData.Close > candleData_전봉.High ||
candleData.Close > candleData_전전봉.High || candleData.Close > candleData_전전봉.High ||