This commit is contained in:
kyh
2024-11-26 11:53:19 +09:00
parent 944bcbe694
commit 8b364a59c8
2 changed files with 277 additions and 142 deletions

View File

@@ -367,24 +367,28 @@ namespace BitgetAPI.IndicatorConditionSetup
// 24,72 낮은값 // 24,72 낮은값
var 낮은값_8_12 = Math.Min(candleData.movingAverageDataList[8].Value, candleData.movingAverageDataList[12].Value); var 낮은값_8_12 = Math.Min(candleData.movingAverageDataList[8].Value, candleData.movingAverageDataList[12].Value);
var 전전전봉2 = candleData_전전전봉.movingAverageDataList[2].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;
var 전전전봉12 = candleData_전전전봉.movingAverageDataList[12].Value; var 전전전봉12 = candleData_전전전봉.movingAverageDataList[12].Value;
var 전전전봉24 = candleData_전전전봉.movingAverageDataList[24].Value; var 전전전봉24 = candleData_전전전봉.movingAverageDataList[24].Value;
var 전전전봉72 = candleData_전전전봉.movingAverageDataList[72].Value; var 전전전봉72 = candleData_전전전봉.movingAverageDataList[72].Value;
var 전전봉2 = candleData_전전봉.movingAverageDataList[2].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;
var 전전봉12 = candleData_전전봉.movingAverageDataList[12].Value; var 전전봉12 = candleData_전전봉.movingAverageDataList[12].Value;
var 전전봉24 = candleData_전전봉.movingAverageDataList[24].Value; var 전전봉24 = candleData_전전봉.movingAverageDataList[24].Value;
var 전전봉72 = candleData_전전봉.movingAverageDataList[72].Value; var 전전봉72 = candleData_전전봉.movingAverageDataList[72].Value;
var 전봉2 = candleData_전봉.movingAverageDataList[2].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;
var 전봉12 = candleData_전봉.movingAverageDataList[12].Value; var 전봉12 = candleData_전봉.movingAverageDataList[12].Value;
var 전봉24 = candleData_전봉.movingAverageDataList[24].Value; var 전봉24 = candleData_전봉.movingAverageDataList[24].Value;
var 전봉72 = candleData_전봉.movingAverageDataList[72].Value; var 전봉72 = candleData_전봉.movingAverageDataList[72].Value;
var 현재봉2 = candleData.movingAverageDataList[2].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;
var 현재봉12 = candleData.movingAverageDataList[12].Value; var 현재봉12 = candleData.movingAverageDataList[12].Value;
@@ -403,7 +407,7 @@ namespace BitgetAPI.IndicatorConditionSetup
var Bol12 = candleData.movingAverageDataList[12].BolangerValue; var Bol12 = candleData.movingAverageDataList[12].BolangerValue;
var Bol24 = candleData.movingAverageDataList[24].BolangerValue; var Bol24 = candleData.movingAverageDataList[24].BolangerValue;
if ((int)interval != 3) if ((int)interval != 1)
{ {
continue; continue;
} }
@@ -431,16 +435,11 @@ namespace BitgetAPI.IndicatorConditionSetup
if (!UpBuyList.ContainsKey(market + interval)) if (!UpBuyList.ContainsKey(market + interval))
{ {
if ( if (
candleData.Close > 현재봉24 && 낮은값_72_24_전봉 < 전봉2 && 전전봉2 < 낮은값_72_24_전전봉 &&
candleData.High == candleData.Close && candleData.Open < 현재봉24 && 낮은값_72_24_전봉 > 전봉8
전봉4 < 전봉24 &&
전봉24 > 전봉72 &&
전봉12 > 전봉4 && 전봉8 > 전봉4 &&
전봉4 > candleData.IchimokData.하한선 &&
FirstLongFlag[market + interval]
) )
{ {
FirstLongFlag[market + interval] = false;
// 없으면 생성 // 없으면 생성
if (signalData == null) if (signalData == null)
{ {
@@ -462,6 +461,9 @@ namespace BitgetAPI.IndicatorConditionSetup
{ "BuyDate", nowTime }, { "BuyDate", nowTime },
{ "Price", price }, { "Price", price },
{ "MCandleTimeType", (int)interval }, { "MCandleTimeType", (int)interval },
{ "Type", 전봉24 < 전봉72 ? 24 : 72 },
{ "CandleTime", candleData.Argument },
{ "MovingRate4_8", 현재봉8 - 현재봉4 },
{ "Candle", candleData } { "Candle", candleData }
}; };
@@ -490,37 +492,156 @@ namespace BitgetAPI.IndicatorConditionSetup
} }
} }
} }
else
{
if(!FirstLongFlag[market + interval] && 현재봉4 < 낮은값_72_24)
FirstLongFlag[market + interval] = true;
}
} }
//파는 시점 //파는 시점
else else
{ {
var buyItem = UpBuyList[market + interval]; var buyItem = UpBuyList[market + interval];
if (interval < MCandleTimeType.H1) //var sellFlag = false;
{
var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval * 2);
if (nowTime < buyTime)
continue;
}
//임시로 처리
else
{
var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval * 2);
if (nowTime < buyTime)
continue;
}
var compareVal = 높은값_72_24; //if (interval < MCandleTimeType.H1)
//{
// var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval * 2);
// if (nowTime < buyTime)
// {
// var candleTime = ((DateTime)buyItem["CandleTime"]);
// if (candleTime.Minute != candleData.Argument.Minute)
// {
// if (candleData_전봉.High < 높은값_72_24)
// {
// sellFlag = true;
// }
// else
// {
// continue;
// }
// }
// else
// {
// continue;
// }
// }
//continue;
//}
////임시로 처리
//else
//{
// var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval * 2);
// if (nowTime < buyTime) {
// var candleTime = ((DateTime)buyItem["CandleTime"]);
// if (candleTime.Minute != candleData.Argument.Minute)
// {
// if (candleData_전봉.High < 높은값_72_24)
// {
// sellFlag = true;
// }
// else
// {
// continue;
// }
// }
// else
// {
// continue;
// }
// }
//}
//var compareVal = 높은값_72_24;
//var val = SellLongStep[market + interval];
//double.TryParse(buyItem["MovingRate4_8"].ToString(), out var buyMovingRage4_8);
//if (val == 0)
//{
// if (높은값_72_24 < 현재봉4)
// {
// val = 1;
// }
//}
//if (val == 1)
//{
// if (현재봉4 > 현재봉8)
// {
// if (현재봉8 > 높은값_72_24)
// {
// val = 2;
// }
// }
//}
//if (val == 0)
//{
// sellFlag = true;
//}
//else if (val == 1)
//{
// compareVal = 높은값_72_24;
//}
//else if (val == 2)
//{
// compareVal = 현재봉8;
// if (buyMovingRage4_8 < 현재봉4 - 현재봉8)
// sellFlag = true;
//}
//SellLongStep[market + interval] = val;
//if (전봉8 > 현재봉8 || 현재봉4 > compareVal)
//{
// sellFlag = true;
//}
double compareVal = 0;
int.TryParse(buyItem["Type"].ToString(), out var type);
var val = SellLongStep[market + interval]; var val = SellLongStep[market + interval];
var sellFlag = false;
if (type == 24) {
if (val == 0) if (val == 0)
{ {
if (높은값_72_24 < 현재봉4) var origin = 전봉24;
var compare = 전봉72;
compareVal = origin;
if (origin > compare)
{
val = 1;
}
else
{
if(origin > 전봉2)
{
compareVal = origin;
}
}
}
if (val == 1)
{
compareVal = 높은값_72_24;
if (전봉2 > 전봉12)
{
val = 2;
}
}
if (val == 2)
compareVal = 전봉12;
}
if(type == 72)
{
if(val == 0)
{
compareVal = 낮은값_72_24_전봉;
if (전봉24 < 전봉2)
{ {
val = 1; val = 1;
} }
@@ -528,37 +649,21 @@ namespace BitgetAPI.IndicatorConditionSetup
if (val == 1) if (val == 1)
{ {
if (현재봉4 > 현재봉8) compareVal = 높은값_72_24;
{
if (현재봉8 > 높은값_72_24) if (전봉2 > 전봉12)
{ {
val = 2; val = 2;
}
} }
} }
if (val == 0) if (val == 2)
{ compareVal = 전봉12;
sellFlag = true;
}
else if (val == 1)
{
compareVal = 높은값_72_24;
}
else if (val == 2)
{
compareVal = 현재봉8;
} }
SellLongStep[market + interval] = val; SellLongStep[market + interval] = val;
if (전봉8 > 현재봉8 || 현재봉4 > compareVal) if (전봉2 < compareVal || 전봉2 < 낮은값_72_24)
{
sellFlag = true;
}
if (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;
@@ -647,16 +752,11 @@ namespace BitgetAPI.IndicatorConditionSetup
if (!DownBuyList.ContainsKey(market + interval)) if (!DownBuyList.ContainsKey(market + interval))
{ {
if ( if (
candleData.Close < 현재봉24 && 전봉24 > 전봉2 && 전봉24 < 전봉72 && 전전봉2 > 전전봉24 &&
candleData.Low == candleData.Close && candleData.Open > 현재봉24 && 전봉2 < candleData_전봉.IchimokData.하한선
전봉4 > 전봉24 &&
전봉24 < 전봉72 &&
전봉12 < 전봉4 && 전봉8 < 전봉4 &&
전봉4 < candleData.IchimokData.상한선 &&
FirstShortFlag[market + interval]
) )
{ {
FirstShortFlag[market + interval] = false;
// 없으면 생성 // 없으면 생성
if (signalData == null) if (signalData == null)
{ {
@@ -678,6 +778,8 @@ namespace BitgetAPI.IndicatorConditionSetup
{ "BuyDate", nowTime }, { "BuyDate", nowTime },
{ "Price", price }, { "Price", price },
{ "MCandleTimeType", (int)interval }, { "MCandleTimeType", (int)interval },
{ "CandleTime", candleData.Argument },
{ "MovingRate4_8", 현재봉4 - 현재봉8 },
{ "Candle", candleData } { "Candle", candleData }
}; };
@@ -707,83 +809,115 @@ namespace BitgetAPI.IndicatorConditionSetup
} }
} }
} }
else
{
if (!FirstShortFlag[market + interval] && 현재봉4 > 높은값_72_24)
{
FirstShortFlag[market + interval] = true;
}
}
} }
//파는 시점 //파는 시점
else else
{ {
var buyItem = DownBuyList[market + interval];
if (interval < MCandleTimeType.H1)
{
var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval * 2);
if (nowTime < buyTime)
continue;
}
//임시로 처리
else
{
var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval * 2);
if (nowTime < buyTime)
continue;
}
var compareVal = 낮은값_72_24;
var val = SellShortStep[market + interval];
var sellFlag = false; var sellFlag = false;
if (val == 0) var buyItem = DownBuyList[market + interval];
{
if (낮은값_72_24 > 현재봉4)
{
val = 1;
}
}
if(val == 1) { //if (interval < MCandleTimeType.H1)
if (현재봉4 < 현재봉8) //{
{ // var buyTime = ((DateTime)buyItem["BuyDate"]).AddHours(((int)interval/60) * 2);
if (현재봉8 < 낮은값_72_24)
{
val = 2;
} // if (nowTime < buyTime)
} // {
} // var candleTime = ((DateTime)buyItem["CandleTime"]);
if(val == 0) // if (candleTime.Hour != candleData.Argument.Hour)
{ // {
sellFlag = true; // if(candleData_전봉.Low < 낮은값_72_24)
} // {
else if(val == 1) // sellFlag = true;
{ // }
compareVal = 낮은값_72_24; // else
} // {
else if(val == 2) // continue;
{ // }
compareVal = 현재봉8; // }
} // else
// {
// continue;
// }
// }
//}
////임시로 처리
//else
//{
// var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval * 2);
// if (nowTime < buyTime)
// {
// var candleTime = ((DateTime)buyItem["CandleTime"]);
// if (candleTime.Minute != candleData.Argument.Minute)
// {
// if (candleData_전봉.Low > 낮은값_72_24)
// {
// sellFlag = true;
// }
// else
// {
// continue;
// }
// }
// else
// {
// continue;
// }
// }
//}
//var compareVal = 낮은값_72_24;
//var val = SellShortStep[market + interval];
//double.TryParse(buyItem["MovingRate4_8"].ToString(), out var buyMovingRage4_8);
//if (val == 0)
//{
// if (낮은값_72_24 > 현재봉4)
// {
// val = 1;
// }
//}
//if(val == 1) {
// if (현재봉4 < 현재봉8)
// {
// if (현재봉8 < 낮은값_72_24)
// {
// val = 2;
// }
// }
//}
//if(val == 0)
//{
// sellFlag = true;
//}
//else if(val == 1)
//{
// compareVal = 낮은값_72_24;
//}
//else if (val == 2)
//{
// compareVal = 현재봉8;
// if (buyMovingRage4_8 < 현재봉8 - 현재봉4)
// sellFlag = true;
//}
//SellShortStep[market + interval] = val;
if (전봉8 > 현재봉8 || 현재봉4 > compareVal) //if (전봉8 < 현재봉8 || 현재봉4 > compareVal)
{ //{
sellFlag = true; // sellFlag = true;
} //}
if (전봉2 > 전봉24)
SellShortStep[market + interval] = val;
if (전봉8 < 현재봉8 || 현재봉4 > compareVal)
{
sellFlag = true;
}
if (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;

View File

@@ -21,6 +21,7 @@ namespace BitgetAPI.IndicatorConditionSetup
public int CandleLength48 { get; set; } = 48; public int CandleLength48 { get; set; } = 48;
// 기간 // 기간
public int CandleLength4 { get; set; } = 4; public int CandleLength4 { get; set; } = 4;
public int CandleLength2 { get; set; } = 2;
// 기간 // 기간
public int CandleLength72 { get; set; } = 72; public int CandleLength72 { get; set; } = 72;
// 기간 // 기간
@@ -43,7 +44,7 @@ namespace BitgetAPI.IndicatorConditionSetup
if (candleData.movingAverageDataList == null) if (candleData.movingAverageDataList == null)
{ {
candleData.movingAverageDataList = new Dictionary<int, MovingAverageData>(); candleData.movingAverageDataList = new Dictionary<int, MovingAverageData>();
candleData.movingAverageDataList.Add(CandleLength2, new MovingAverageData());
candleData.movingAverageDataList.Add(CandleLength4, new MovingAverageData()); candleData.movingAverageDataList.Add(CandleLength4, new MovingAverageData());
candleData.movingAverageDataList.Add(CandleLength12, new MovingAverageData()); candleData.movingAverageDataList.Add(CandleLength12, new MovingAverageData());
candleData.movingAverageDataList.Add(CandleLength24, new MovingAverageData()); candleData.movingAverageDataList.Add(CandleLength24, new MovingAverageData());