정리된 1번 조건식
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user