재수정

This commit is contained in:
kyh
2025-08-06 15:06:38 +09:00
parent e02cb70d30
commit 73c30648d7

View File

@@ -115,11 +115,11 @@ namespace BitgetAPI.IndicatorConditionSetup
public Dictionary<string, Dictionary<int, bool>> SellShortStep = new Dictionary<string, Dictionary<int, bool>>(); public Dictionary<string, Dictionary<int, bool>> SellShortStep = new Dictionary<string, Dictionary<int, bool>>();
public Dictionary<string, Dictionary<int, bool>> SellLongStep = new Dictionary<string, Dictionary<int, bool>>(); public Dictionary<string, Dictionary<int, bool>> SellLongStep = new Dictionary<string, Dictionary<int, bool>>();
public Dictionary<string, int> BuyShortStep = new Dictionary<string, int>(); //public Dictionary<string, int> BuyShortStep = new Dictionary<string, int>();
public Dictionary<string, int> BuyLongStep = new Dictionary<string, int>(); //public Dictionary<string, int> BuyLongStep = new Dictionary<string, int>();
public Dictionary<string, double> BuyShortStepStampData = new Dictionary<string, double>(); //public Dictionary<string, double> BuyShortStepStampData = new Dictionary<string, double>();
public Dictionary<string, double> BuyLongStepStampData = new Dictionary<string, double>(); //public Dictionary<string, double> BuyLongStepStampData = new Dictionary<string, double>();
public Dictionary<string, bool> FirstFlag = new Dictionary<string, bool>(); public Dictionary<string, bool> FirstFlag = new Dictionary<string, bool>();
@@ -153,7 +153,7 @@ namespace BitgetAPI.IndicatorConditionSetup
//var sellData = FutureOrder("XRPUSDT", FutureMarginMode.isolated, 10, 0, FutureSide.SellShort, OrderType.market, 10, orderDic["orderId"]); //var sellData = FutureOrder("XRPUSDT", FutureMarginMode.isolated, 10, 0, FutureSide.SellShort, OrderType.market, 10, orderDic["orderId"]);
var totalImperseMACDData = new Dictionary<string, Dictionary<DateTime, ImpulseMacdData>>(); var totalImperseMACDData = new Dictionary<string, Dictionary<DateTime, ImpulseMacdData>>();
var 전저고점Flag = true;
// 추후 공통화 및 소스정리 필요 // 추후 공통화 및 소스정리 필요
while (true) while (true)
{ {
@@ -230,7 +230,7 @@ namespace BitgetAPI.IndicatorConditionSetup
// Description // Description
var strInterval = Utils.Convertor.GetEnumDescription((Enum)interval); var strInterval = Utils.Convertor.GetEnumDescription((Enum)interval);
if (!intervalList.Contains(strInterval)) continue; if (!intervalList.Contains(strInterval)) continue;
/*
if (nowTime.Minute == 0 && nowTime.Hour == 24 && 전저고점Flag) if (nowTime.Minute == 0 && nowTime.Hour == 24 && 전저고점Flag)
{ {
전저고점.Clear(); 전저고점.Clear();
@@ -311,8 +311,8 @@ namespace BitgetAPI.IndicatorConditionSetup
} }
if (!(전저고점.ContainsKey(market + "30m"))) if (!(전저고점.ContainsKey(market + "30m")))
continue; continue;
*/
#region 5분봉 처리 #region 30분봉 처리
var candleDatas_30 = findedMarket.candleDataList[MCandleTimeType.M30]; var candleDatas_30 = findedMarket.candleDataList[MCandleTimeType.M30];
var candleDatas_30_정렬 = candleDatas_30.OrderBy(i => i.Argument).ToList(); var candleDatas_30_정렬 = candleDatas_30.OrderBy(i => i.Argument).ToList();
@@ -353,7 +353,9 @@ namespace BitgetAPI.IndicatorConditionSetup
ichimokuConditionSetup.calIchimokuData(candleDatas_30_정렬, candleData_30_전전전전봉); ichimokuConditionSetup.calIchimokuData(candleDatas_30_정렬, candleData_30_전전전전봉);
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_30_정렬, candleData_30_전전전전봉); movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_30_정렬, candleData_30_전전전전봉);
#endregion #endregion
var 저고점 = 전저고점[market + strInterval]; //var 저고점 = 전저고점[market + strInterval];
if (영호조건식_상향돌파 || 영호조건식_하향돌파) if (영호조건식_상향돌파 || 영호조건식_하향돌파)
{ {
if (영호조건식_상향돌파) if (영호조건식_상향돌파)
@@ -373,21 +375,22 @@ namespace BitgetAPI.IndicatorConditionSetup
//사는 시점 //사는 시점
if (!UpBuyList.ContainsKey(market)) if (!UpBuyList.ContainsKey(market))
{ {
if(!FirstFlag[market + strInterval + "Long"]) //if(!FirstFlag[market + strInterval + "Long"])
{ //{
if(sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.LongSell, true)) // if(sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.LongSell, true))
{ // {
FirstFlag[market + strInterval + "Long"] = true; // FirstFlag[market + strInterval + "Long"] = true;
} // }
} //}
if (sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.LongBuy, true) && if (sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.LongBuy, true) &&
!sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.LongSell, true) && !sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.LongSell, true)
FirstFlag[market + strInterval + "Long"] //&& FirstFlag[market + strInterval + "Long"]
//&& 저고점["전저가"] > 저고점["전전저가"] //&& 저고점["전저가"] > 저고점["전전저가"]
) )
{ {
BuyLongStep[market] = 0; //BuyLongStep[market] = 0;
// 없으면 생성 // 없으면 생성
if (signalData == null) if (signalData == null)
{ {
@@ -409,7 +412,7 @@ namespace BitgetAPI.IndicatorConditionSetup
{ "MarketName", market }, { "MarketName", market },
{ "BuyDate", nowTime }, { "BuyDate", nowTime },
{ "Price", price }, { "Price", price },
{ "Flag", 저고점["전저가"] > 저고점["전전저가"] }, //{ "Flag", 저고점["전저가"] > 저고점["전전저가"] },
{ "MCandleTimeType", (int)interval }, { "MCandleTimeType", (int)interval },
{ "CandleTime", candleData_30.Argument }, { "CandleTime", candleData_30.Argument },
{ "Candle", candleData_30 } { "Candle", candleData_30 }
@@ -474,22 +477,22 @@ namespace BitgetAPI.IndicatorConditionSetup
var sellFlag = false; var sellFlag = false;
if (!flag) //if (!flag)
{ //{
if (저고점["전저가"] > 저고점["전전저가"]) // if (저고점["전저가"] > 저고점["전전저가"])
buyItem["Flag"] = true; // buyItem["Flag"] = true;
} //}
else //else
{ //{
if (저고점["전저가"] < 저고점["전전저가"] || 저고점["전저가"] > candleData_30_전봉.Close) // if (저고점["전저가"] < 저고점["전전저가"] || 저고점["전저가"] > candleData_30_전봉.Close)
sellFlag = true; // sellFlag = true;
} //}
if (sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.LongSell, true) || sellFlag) if (sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.LongSell, true) || sellFlag)
{ {
double.TryParse(buyItem["Price"].ToString(), out var buyPrice); double.TryParse(buyItem["Price"].ToString(), out var buyPrice);
var resultRate = ((price - buyPrice) / buyPrice) * 100; var resultRate = ((price - buyPrice) / buyPrice) * 100;
BuyLongStep[market] = 0; //BuyLongStep[market] = 0;
var result = new Dictionary<string, object>() var result = new Dictionary<string, object>()
{ {
{ "MarketName", market }, { "MarketName", market },
@@ -574,13 +577,6 @@ namespace BitgetAPI.IndicatorConditionSetup
//사는 시점 //사는 시점
if (!DownBuyList.ContainsKey(market)) if (!DownBuyList.ContainsKey(market))
{ {
if (!FirstFlag[market + strInterval + "Short"])
{
if (sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.ShortSell, true))
{
FirstFlag[market + strInterval + "Short"] = true;
}
}
if (sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.ShortBuy, true) && if (sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.ShortBuy, true) &&
@@ -589,7 +585,7 @@ namespace BitgetAPI.IndicatorConditionSetup
//&& 저고점["전고가"] < 저고점["전전고가"]) //&& 저고점["전고가"] < 저고점["전전고가"])
) )
{ {
BuyShortStep[market] = 0; //BuyShortStep[market] = 0;
// 없으면 생성 // 없으면 생성
if (signalData == null) if (signalData == null)
{ {
@@ -610,7 +606,7 @@ namespace BitgetAPI.IndicatorConditionSetup
{ "MarketName", market }, { "MarketName", market },
{ "BuyDate", nowTime }, { "BuyDate", nowTime },
{ "Price", price }, { "Price", price },
{ "Flag", 저고점["전고가"] < 저고점["전전고가"] }, //{ "Flag", 저고점["전고가"] < 저고점["전전고가"] },
{ "MCandleTimeType", (int)interval }, { "MCandleTimeType", (int)interval },
{ "CandleTime", candleData_30.Argument }, { "CandleTime", candleData_30.Argument },
{ "Candle", candleData_30 } { "Candle", candleData_30 }
@@ -678,20 +674,20 @@ namespace BitgetAPI.IndicatorConditionSetup
var sellFlag = false; var sellFlag = false;
if (!flag) //if (!flag)
{ //{
if (저고점["전고가"] < 저고점["전전고가"]) // if (저고점["전고가"] < 저고점["전전고가"])
buyItem["Flag"] = true; // buyItem["Flag"] = true;
} //}
else //else
{ //{
if (저고점["전고가"] > 저고점["전전고가"] || 저고점["전고가"] < candleData_30_전봉.Close) // if (저고점["전고가"] > 저고점["전전고가"] || 저고점["전고가"] < candleData_30_전봉.Close)
sellFlag = true; // sellFlag = true;
} //}
if (sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.ShortSell, true) || sellFlag) if (sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.ShortSell, true) || sellFlag)
{ {
BuyShortStep[market] = 0; //BuyShortStep[market] = 0;
double.TryParse(buyItem["Price"].ToString(), out var buyPrice); double.TryParse(buyItem["Price"].ToString(), out var buyPrice);
var resultRate = ((price - buyPrice) / buyPrice) * 100; var resultRate = ((price - buyPrice) / buyPrice) * 100;