정리된 1번 조건식

This commit is contained in:
kyh
2024-11-26 21:54:01 +09:00
parent 5e83f7c792
commit 8bc214ad9d

View File

@@ -119,11 +119,10 @@ namespace BitgetAPI.IndicatorConditionSetup
public List<Dictionary<string, object>> BuyShortList = new List<Dictionary<string, object>>();
public List<Dictionary<string, object>> ResultList = new List<Dictionary<string, object>>();
public Dictionary<string, int> SellShortStep = new Dictionary<string, int>();
public Dictionary<string, int> SellLongStep = new Dictionary<string, int>();
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, bool> FirstShortFlag = new Dictionary<string, bool>();
public Dictionary<string, bool> FirstLongFlag = new Dictionary<string, bool>();
// 전봉이 구름떼 돌파후 시가가 구름떼 위에서 시작하는 것
@@ -414,14 +413,7 @@ namespace BitgetAPI.IndicatorConditionSetup
if ((int)interval != 1)
{
continue;
}
if(!FirstLongFlag.ContainsKey(market + interval))
{
FirstLongFlag[market + interval] = false;
FirstShortFlag[market + interval] = false;
}
}
if (영호조건식_상향돌파)
{
@@ -439,10 +431,12 @@ namespace BitgetAPI.IndicatorConditionSetup
if (!UpBuyList.ContainsKey(market + interval))
{
if (
현재봉24 < 현재봉2 && 전봉24 > 전봉2
candleData.IchimokData.하한선 > 현재봉2 && candleData_전봉.IchimokData.하한선 > 전봉2 &&
현재봉72 > 현재봉2 && 전봉72 > 전봉2 && 전봉24 > 전봉2 && 현재봉24 < 현재봉2 &&
전봉12 < 전봉2 && 현재봉12 < 현재봉24
)
{
FirstLongFlag[market + interval] = false;
// 없으면 생성
if (signalData == null)
{
@@ -464,14 +458,23 @@ namespace BitgetAPI.IndicatorConditionSetup
{ "BuyDate", nowTime },
{ "Price", price },
{ "MCandleTimeType", (int)interval },
{ "Type", 전봉24 < 전봉72 ? 24 : 72 },
{ "Type", 1 },
{ "CandleTime", candleData.Argument },
{ "MovingRate4_8", 현재봉8 - 현재봉4 },
{ "Candle", candleData }
};
UpBuyList.Add(market + interval, buyDic);
SellLongStep.Add(market + interval, 0);
var dic = new Dictionary<int, bool>
{
[1] = true,
[2] = false,
[3] = false,
[4] = false,
[5] = false
};
SellLongStep.Add(market + interval, dic);
if (LongCount < 5)
{
double size = YHKIM_OrderAmount / price * YHKIM_Leverage;
@@ -500,229 +503,49 @@ namespace BitgetAPI.IndicatorConditionSetup
else
{
var buyItem = UpBuyList[market + interval];
var sellFlag = false;
var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval * 5);
if (nowTime < buyTime)
{
if (현재봉2 < 전봉2 && 현재봉24- 전봉24 < 전봉24 - 전전봉24)
sellFlag = true;
else
continue;
}
double compareVal = 0;
int.TryParse(buyItem["Type"].ToString(), out var type);
var val = SellLongStep[market + interval];
if (type == 24)
switch (type)
{
var origin = 전봉24;
var compare = 전봉72;
case 1:
if (현재봉12 > 현재봉24 && !val[2])
val[2] = true;
if (현재봉2 > 현재봉72 && !val[3])
val[3] = true;
if (현재봉12 > 현재봉72 && !val[4])
val[4] = true;
if (현재봉24 > 현재봉72 && !val[5])
val[5] = true;
compareVal = origin;
if (val <= 0)
{
if (origin > compare)
if (val[1] && !val[2] && !val[3] && !val[4] && !val[5])
{
if (전봉2 > origin)
val = 1;
else
sellFlag = true;
sellFlag = !(현재봉12 < 현재봉24 && 현재봉24 < 현재봉2 && 현재봉2 < 현재봉72);
}
else
else if (val[1] && val[2] && !val[3] && !val[4] && !val[5])
{
if (전봉2 > compare)
val = -1;
if (전봉12 > origin && 전봉2 > 전봉12)
val = -2;
if (전봉12 < origin && 전봉2 > 전봉12)
val = 0;
if (전봉12 < compare && 전봉2 > 전봉12)
val = -1;
if (전봉12 > compare && 전봉2 > 전봉12)
val = -2;
sellFlag = !(현재봉24 < 현재봉12 && 현재봉12 < 현재봉2 && 현재봉2 < 현재봉72);
}
}
if (val == 1)
{
compareVal = 높은값_72_24_전봉;
if (전봉2 > 전봉12)
else if (val[1] && !val[2] && val[3] && !val[4] && !val[5])
{
val = 2;
sellFlag = !(현재봉12 < 현재봉24 && 현재봉24 < 현재봉72 && 현재봉72 < 현재봉2);
}
}
if (val == 2 || val == -2)
compareVal = 전봉12;
else if (val == 0)
compareVal = origin;
else
compareVal = compare;
else if (val[1] && val[2] && val[3] && !val[4] && !val[5])
{
sellFlag = !(현재봉24 < 현재봉12 && 현재봉12 < 현재봉72 && 현재봉72 < 현재봉2);
}
else if (val[1] && val[2] && val[3] && val[4] && !val[5])
{
sellFlag = !(현재봉24 < 현재봉72 && 현재봉72 < 현재봉12 && 현재봉12 < 현재봉2);
}
else if (val[1] && val[2] && val[3] && val[4] && val[5])
{
sellFlag = !(현재봉72 < 현재봉24 && 현재봉24 < 현재봉12 && 현재봉12 < 현재봉2);
}
break;
}
if (type == 72)
{
var origin = 전봉24;
var compare = 전봉72;
compareVal = origin;
if (val <= 0)
{
if (origin > compare)
{
if (전봉2 > origin)
val = 1;
else
sellFlag = true;
}
else
{
if (전봉2 > compare)
val = -1;
if (전봉12 > origin && 전봉2 > 전봉12)
val = -2;
if (전봉12 < origin && 전봉2 > 전봉12)
val = 0;
if (전봉12 < compare && 전봉2 > 전봉12)
val = -1;
if (전봉12 > compare && 전봉2 > 전봉12)
val = -2;
}
}
if (val == 1)
{
compareVal = 높은값_72_24_전봉;
if (전봉2 > 전봉12)
{
val = 2;
}
}
if (val == 2 || val == -2)
compareVal = 전봉12;
else if (val == 0)
compareVal = origin;
else
compareVal = compare;
}
//var sellFlag = false;
//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;
//}
//SellLongStep[market + interval] = val;
if (현재봉2 < 현재봉24 || 현재봉24 < 현재봉36)
if (sellFlag)
{
double.TryParse(buyItem["Price"].ToString(), out var buyPrice);
var resultRate = ((price - buyPrice) / buyPrice) * 100;
@@ -811,11 +634,13 @@ namespace BitgetAPI.IndicatorConditionSetup
if (!DownBuyList.ContainsKey(market + interval))
{
if (
현재봉24 > 현재봉2 && 전봉24 < 전봉2
candleData.IchimokData.상한선 < 현재봉2 && candleData_전봉.IchimokData.상한선 < 전봉2 &&
현재봉72 < 현재봉2 && 전봉72 < 전봉2 && 전봉24 < 전봉2 && 현재봉24 > 현재봉2 &&
전봉12 > 전봉2 && 현재봉12 > 현재봉24
)
{
FirstShortFlag[market + interval] = false;
// 없으면 생성
if (signalData == null)
{
@@ -837,14 +662,22 @@ namespace BitgetAPI.IndicatorConditionSetup
{ "BuyDate", nowTime },
{ "Price", price },
{ "MCandleTimeType", (int)interval },
{ "Type", 전봉24 > 전봉72 ? 24 : 72 },
{ "Type", 1 },
{ "CandleTime", candleData.Argument },
{ "MovingRate4_8", 현재봉4 - 현재봉8 },
{ "Candle", candleData }
};
DownBuyList.Add(market + interval, buyDic);
SellShortStep.Add(market + interval, 0);
var dic = new Dictionary<int, bool>
{
[1] = true,
[2] = false,
[3] = false,
[4] = false,
[5] = false
};
SellShortStep.Add(market + interval, dic);
if (ShortCount < 5)
{
@@ -874,209 +707,51 @@ namespace BitgetAPI.IndicatorConditionSetup
else
{
var sellFlag = false;
var buyItem = DownBuyList[market + interval];
var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval);
if (nowTime < buyTime)
{
if (현재봉2 > 전봉2)
sellFlag = true;
else
continue;
}
//if (interval < MCandleTimeType.H1)
//{
// var buyTime = ((DateTime)buyItem["BuyDate"]).AddHours(((int)interval/60) * 2);
// if (nowTime < buyTime)
// {
// var candleTime = ((DateTime)buyItem["CandleTime"]);
// if (candleTime.Hour != candleData.Argument.Hour)
// {
// if(candleData_전봉.Low < 낮은값_72_24)
// {
// sellFlag = true;
// }
// else
// {
// continue;
// }
// }
// 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)
//{
// sellFlag = true;
//}
double compareVal = 0;
var buyItem = UpBuyList[market + interval];
int.TryParse(buyItem["Type"].ToString(), out var type);
var val = SellShortStep[market + interval];
if (type == 24)
switch (type)
{
if (val == 0)
{
var origin = 전봉24;
var compare = 전봉72;
case 1:
if (현재봉12 < 현재봉24 && !val[2])
val[2] = true;
if (현재봉2 < 현재봉72 && !val[3])
val[3] = true;
if (현재봉12 < 현재봉72 && !val[4])
val[4] = true;
if (현재봉24 < 현재봉72 && !val[5])
val[5] = true;
compareVal = origin;
if (origin < compare)
if (val[1] && !val[2] && !val[3] && !val[4] && !val[5])
{
if (전봉2 < origin)
val = 1;
else
sellFlag = true;
sellFlag = !(현재봉12 > 현재봉24 && 현재봉24 > 현재봉2 && 현재봉2 > 현재봉72);
}
else if (val[1] && val[2] && !val[3] && !val[4] && !val[5])
{
sellFlag = !(현재봉24 > 현재봉12 && 현재봉12 > 현재봉2 && 현재봉2 > 현재봉72);
}
else if (val[1] && !val[2] && val[3] && !val[4] && !val[5])
{
sellFlag = !(현재봉12 > 현재봉24 && 현재봉24 > 현재봉72 && 현재봉72 > 현재봉2);
}
else if (val[1] && val[2] && val[3] && !val[4] && !val[5])
{
sellFlag = !(현재봉24 > 현재봉12 && 현재봉12 > 현재봉72 && 현재봉72 > 현재봉2);
}
else if (val[1] && val[2] && val[3] && val[4] && !val[5])
{
sellFlag = !(현재봉24 > 현재봉72 && 현재봉72 > 현재봉12 && 현재봉12 > 현재봉2);
}
else if (val[1] && val[2] && val[3] && val[4] && val[5])
{
sellFlag = !(현재봉72 > 현재봉24 && 현재봉24 > 현재봉12 && 현재봉12 > 현재봉2);
}
else
{
if (전봉2 < compare)
compareVal = compare;
if (전봉2 < origin)
compareVal = origin;
if(전봉12 < origin)
compareVal = 전봉12;
}
}
if (val == 1)
{
compareVal = 낮은값_72_24_전봉;
if (전봉2 < 전봉12)
{
val = 2;
}
}
if (val == 2)
compareVal = 전봉12;
sellFlag = true;
break;
}
if (type == 72)
{
if (val == 0)
{
var origin = 전봉72;
var compare = 전봉24;
compareVal = origin;
if (origin < compare)
{
if (전봉2 < origin)
val = 1;
else
sellFlag = true;
}
else
{
if (전봉2 < compare)
compareVal = compare;
if (전봉2 < origin)
compareVal = origin;
if (전봉12 < origin)
compareVal = 전봉12;
}
}
if (val == 1)
{
compareVal = 낮은값_72_24_전봉;
if (전봉2 < 전봉12)
{
val = 2;
}
}
if (val == 2)
compareVal = 전봉12;
}
SellShortStep[market + interval] = val;
if (전봉2 > compareVal || 전봉2 > 높은값_72_24_전봉 || sellFlag)
if (sellFlag)
{
double.TryParse(buyItem["Price"].ToString(), out var buyPrice);
var resultRate = ((price - buyPrice) / buyPrice) * 100;