30분봉 4개봉으로 처리
This commit is contained in:
@@ -278,20 +278,20 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_Temp_List, candleData_Main);
|
||||
if (i > 210)
|
||||
{
|
||||
var 현재봉3_Temp = candleDatas_Temp_List[i].movingAverageDataList[3].Value;
|
||||
var 전봉3_Temp = candleDatas_Temp_List[i - 1].movingAverageDataList[3].Value;
|
||||
var 전전봉3_Temp = candleDatas_Temp_List[i - 2].movingAverageDataList[3].Value;
|
||||
var 전전전봉3_Temp = candleDatas_Temp_List[i - 3].movingAverageDataList[3].Value;
|
||||
var 전전전전봉3_Temp = candleDatas_Temp_List[i - 4].movingAverageDataList[3].Value;
|
||||
var returnVal = Calculate전고점(market, strInterval, interval, 전봉3_Temp, 전전봉3_Temp, 전전전봉3_Temp, candleDatas_Temp_List[candleDatas_Temp_List.Count - 1]);
|
||||
var 현재봉4_Temp = candleDatas_Temp_List[i].movingAverageDataList[4].Value;
|
||||
var 전봉4_Temp = candleDatas_Temp_List[i - 1].movingAverageDataList[4].Value;
|
||||
var 전전봉4_Temp = candleDatas_Temp_List[i - 2].movingAverageDataList[4].Value;
|
||||
var 전전전봉4_Temp = candleDatas_Temp_List[i - 3].movingAverageDataList[4].Value;
|
||||
var 전전전전봉4_Temp = candleDatas_Temp_List[i - 4].movingAverageDataList[4].Value;
|
||||
var returnVal = Calculate전고점(market, strInterval, interval, 전봉4_Temp, 전전봉4_Temp, 전전전봉4_Temp, candleDatas_Temp_List[candleDatas_Temp_List.Count - 1]);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!BuyShortStep.ContainsKey(market))
|
||||
{
|
||||
BuyShortStep[market] = false;
|
||||
BuyLongStep[market] = false;
|
||||
BuyShortStep[market] = true;
|
||||
BuyLongStep[market] = true;
|
||||
}
|
||||
|
||||
if (!(전저고점.ContainsKey(market + "30m"))) continue;
|
||||
@@ -341,47 +341,47 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_정렬, candleData_전전전전봉);
|
||||
#endregion
|
||||
|
||||
#region 1분봉 처리
|
||||
#region 3분봉 처리
|
||||
/*
|
||||
// 시간별로 정렬하기 (임시 리스트)
|
||||
var candleDatas_1 = findedMarket.candleDataList[MCandleTimeType.M1];
|
||||
var candleDatas_1_정렬 = candleDatas_1.OrderBy(i => i.Argument).ToList();
|
||||
var candleDatas_3 = findedMarket.candleDataList[MCandleTimeType.M3];
|
||||
var candleDatas_3_정렬 = candleDatas_3.OrderBy(i => i.Argument).ToList();
|
||||
|
||||
var candleData_1 = candleDatas_1.Find(i => i.Argument == candleDatas_1_정렬.Last().Argument);
|
||||
var candleData_3 = candleDatas_3.Find(i => i.Argument == candleDatas_3_정렬.Last().Argument);
|
||||
|
||||
if (candleData_1 == null) continue;
|
||||
if (candleData_3 == null) continue;
|
||||
|
||||
ichimokuConditionSetup.calIchimokuData(candleDatas_1_정렬, candleData_1);
|
||||
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_1_정렬, candleData_1);
|
||||
ichimokuConditionSetup.calIchimokuData(candleDatas_3_정렬, candleData_3);
|
||||
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_3_정렬, candleData_3);
|
||||
|
||||
candleDatas_1_정렬.RemoveAt(candleDatas_1_정렬.Count - 1);
|
||||
var candleData_1_전봉 = candleDatas_1.Find(i => i.Argument == candleDatas_1_정렬.Last().Argument);
|
||||
candleDatas_3_정렬.RemoveAt(candleDatas_3_정렬.Count - 1);
|
||||
var candleData_3_전봉 = candleDatas_3.Find(i => i.Argument == candleDatas_3_정렬.Last().Argument);
|
||||
|
||||
if (candleData_1_전봉 == null) continue;
|
||||
ichimokuConditionSetup.calIchimokuData(candleDatas_1_정렬, candleData_1_전봉);
|
||||
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_1_정렬, candleData_1_전봉);
|
||||
if (candleData_3_전봉 == null) continue;
|
||||
ichimokuConditionSetup.calIchimokuData(candleDatas_3_정렬, candleData_3_전봉);
|
||||
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_3_정렬, candleData_3_전봉);
|
||||
|
||||
candleDatas_1_정렬.RemoveAt(candleDatas_1_정렬.Count - 1);
|
||||
var candleData_1_전전봉 = candleDatas_1.Find(i => i.Argument == candleDatas_1_정렬.Last().Argument);
|
||||
candleDatas_3_정렬.RemoveAt(candleDatas_3_정렬.Count - 1);
|
||||
var candleData_3_전전봉 = candleDatas_3.Find(i => i.Argument == candleDatas_3_정렬.Last().Argument);
|
||||
|
||||
if (candleData_1_전전봉 == null) continue;
|
||||
ichimokuConditionSetup.calIchimokuData(candleDatas_1_정렬, candleData_1_전전봉);
|
||||
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_1_정렬, candleData_1_전전봉);
|
||||
if (candleData_3_전전봉 == null) continue;
|
||||
ichimokuConditionSetup.calIchimokuData(candleDatas_3_정렬, candleData_3_전전봉);
|
||||
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_3_정렬, candleData_3_전전봉);
|
||||
|
||||
candleDatas_1_정렬.RemoveAt(candleDatas_1_정렬.Count - 1);
|
||||
var candleData_1_전전전봉 = candleDatas_1.Find(i => i.Argument == candleDatas_1_정렬.Last().Argument);
|
||||
candleDatas_3_정렬.RemoveAt(candleDatas_3_정렬.Count - 1);
|
||||
var candleData_3_전전전봉 = candleDatas_3.Find(i => i.Argument == candleDatas_3_정렬.Last().Argument);
|
||||
|
||||
if (candleData_1_전전전봉 == null) continue;
|
||||
ichimokuConditionSetup.calIchimokuData(candleDatas_1_정렬, candleData_1_전전전봉);
|
||||
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_1_정렬, candleData_1_전전전봉);
|
||||
if (candleData_3_전전전봉 == null) continue;
|
||||
ichimokuConditionSetup.calIchimokuData(candleDatas_3_정렬, candleData_3_전전전봉);
|
||||
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_3_정렬, candleData_3_전전전봉);
|
||||
|
||||
|
||||
candleDatas_1_정렬.RemoveAt(candleDatas_1_정렬.Count - 1);
|
||||
var candleData_1_전전전전봉 = candleDatas_1.Find(i => i.Argument == candleDatas_1_정렬.Last().Argument);
|
||||
candleDatas_3_정렬.RemoveAt(candleDatas_3_정렬.Count - 1);
|
||||
var candleData_3_전전전전봉 = candleDatas_3.Find(i => i.Argument == candleDatas_3_정렬.Last().Argument);
|
||||
|
||||
if (candleData_1_전전전전봉 == null) continue;
|
||||
ichimokuConditionSetup.calIchimokuData(candleDatas_1_정렬, candleData_1_전전전전봉);
|
||||
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_1_정렬, candleData_1_전전전전봉);
|
||||
if (candleData_3_전전전전봉 == null) continue;
|
||||
ichimokuConditionSetup.calIchimokuData(candleDatas_3_정렬, candleData_3_전전전전봉);
|
||||
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_3_정렬, candleData_3_전전전전봉);
|
||||
*/
|
||||
#endregion
|
||||
|
||||
@@ -591,28 +591,30 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
var Bol72_Up = candleData.movingAverageDataList[72].BolangerValue_Up;
|
||||
#endregion
|
||||
/*
|
||||
var 현재봉2_1 = candleData_1.movingAverageDataList[2].Value;
|
||||
var 전봉2_1 = candleData_1_전봉.movingAverageDataList[2].Value;
|
||||
var 전전봉2_1 = candleData_1_전전봉.movingAverageDataList[2].Value;
|
||||
var 전전전봉2_1 = candleData_1_전전전봉.movingAverageDataList[2].Value;
|
||||
var 전전전전봉2_1 = candleData_1_전전전전봉.movingAverageDataList[2].Value;
|
||||
var 현재봉2_3 = candleData_3.movingAverageDataList[2].Value;
|
||||
var 전봉2_3 = candleData_3_전봉.movingAverageDataList[2].Value;
|
||||
var 전전봉2_3 = candleData_3_전전봉.movingAverageDataList[2].Value;
|
||||
var 전전전봉2_3 = candleData_3_전전전봉.movingAverageDataList[2].Value;
|
||||
var 전전전전봉2_3 = candleData_3_전전전전봉.movingAverageDataList[2].Value;
|
||||
|
||||
var 현재봉3_1 = candleData_1.movingAverageDataList[3].Value;
|
||||
var 전봉3_1 = candleData_1_전봉.movingAverageDataList[3].Value;
|
||||
var 전전봉3_1 = candleData_1_전전봉.movingAverageDataList[3].Value;
|
||||
var 전전전봉3_1 = candleData_1_전전전봉.movingAverageDataList[3].Value;
|
||||
var 전전전전봉3_1 = candleData_1_전전전전봉.movingAverageDataList[3].Value;
|
||||
var 현재봉3_3 = candleData_3.movingAverageDataList[3].Value;
|
||||
var 전봉3_3 = candleData_3_전봉.movingAverageDataList[3].Value;
|
||||
var 전전봉3_3 = candleData_3_전전봉.movingAverageDataList[3].Value;
|
||||
var 전전전봉3_3 = candleData_3_전전전봉.movingAverageDataList[3].Value;
|
||||
var 전전전전봉3_3 = candleData_3_전전전전봉.movingAverageDataList[3].Value;
|
||||
|
||||
var 현재봉4_1 = candleData_1.movingAverageDataList[4].Value;
|
||||
var 전봉4_1 = candleData_1_전봉.movingAverageDataList[4].Value;
|
||||
var 전전봉4_1 = candleData_1_전전봉.movingAverageDataList[4].Value;
|
||||
var 전전전봉4_1 = candleData_1_전전전봉.movingAverageDataList[4].Value;
|
||||
var 현재봉4_3 = candleData_3.movingAverageDataList[4].Value;
|
||||
var 전봉4_3 = candleData_3_전봉.movingAverageDataList[4].Value;
|
||||
var 전전봉4_3 = candleData_3_전전봉.movingAverageDataList[4].Value;
|
||||
var 전전전봉4_3 = candleData_3_전전전봉.movingAverageDataList[4].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 전전전봉5_1 = candleData_1_전전전봉.movingAverageDataList[5].Value;
|
||||
var 현재봉5_3 = candleData_3.movingAverageDataList[5].Value;
|
||||
var 전봉5_3 = candleData_3_전봉.movingAverageDataList[5].Value;
|
||||
var 전전봉5_3 = candleData_3_전전봉.movingAverageDataList[5].Value;
|
||||
var 전전전봉5_3 = candleData_3_전전전봉.movingAverageDataList[5].Value;
|
||||
var 현재봉72_3 = candleData_3.movingAverageDataList[72].Value;
|
||||
*/
|
||||
|
||||
/*
|
||||
var 현재봉2_240 = candleData_240.movingAverageDataList[2].Value;
|
||||
var 전봉2_240 = candleData_240_전봉.movingAverageDataList[2].Value;
|
||||
@@ -659,58 +661,68 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
|
||||
//var returnVal = Calculate전고점(market, "5m", MCandleTimeType.M5, 전봉5, 전전봉5, 전전전봉5, candleData);
|
||||
//if (!returnVal) continue;
|
||||
var returnVal = Calculate전고점(market, "30m", MCandleTimeType.M30, 전봉3, 전전봉3, 전전전봉3, candleData);
|
||||
var returnVal = Calculate전고점(market, "30m", MCandleTimeType.M30, 전봉4, 전전봉4, 전전전봉4, candleData);
|
||||
if (!returnVal) continue;
|
||||
|
||||
var tempFlag1Short = (저고점_30["Type"] == 1
|
||||
&& ((저고점_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 tempFlag1Short = 저고점_30["Type"] == 1
|
||||
// && ((저고점_30["전저가"] > 저고점_30["전전저가"]
|
||||
// && 저고점_30["전전고가"] < 저고점_30["전고가"])
|
||||
// || (저고점_30["전저가"] < 저고점_30["전전저가"]
|
||||
// && 저고점_30["전고가"] < 저고점_30["전전고가"])
|
||||
// || (저고점_30["전저가"] < 저고점_30["전전저가"]
|
||||
// && 저고점_30["전고가"] > 저고점_30["전전고가"]));
|
||||
//&& 현재봉3 < 현재봉72;
|
||||
//&& candleData.IchimokData.상한선 > candleData.Close;
|
||||
//&& candleData_240.Close < 현재봉24_240
|
||||
//&& 현재봉24_240 < 전봉24_240
|
||||
//&& 현재봉24 > 현재봉72;
|
||||
|
||||
|
||||
var tempFlag2Short = (저고점_30["Type"] == 0
|
||||
&& ((저고점_30["전저가"] > 저고점_30["전전저가"]
|
||||
&& 저고점_30["전고가"] < 전봉3)
|
||||
|| (저고점_30["전저가"] < 저고점_30["전전저가"]
|
||||
&& 전봉3 < 저고점_30["전고가"])
|
||||
|| (저고점_30["전저가"] < 저고점_30["전전저가"]
|
||||
&& 전봉3 > 저고점_30["전고가"]))
|
||||
&& 전전봉3 < 전봉3 && 전봉3 > 현재봉3)
|
||||
&& candleData.IchimokData.상한선 > candleData.Close
|
||||
//&& candleData_240.Close < 현재봉24_240
|
||||
//&& 현재봉24_240 < 전봉24_240
|
||||
&& 현재봉24 > 현재봉72;
|
||||
var tempFlag2Short = 저고점_30["Type"] == 0
|
||||
&& (
|
||||
//(저고점_30["전저가"] > 저고점_30["전전저가"]
|
||||
//&& 저고점_30["전고가"] < 전봉4) ||
|
||||
(저고점_30["전저가"] < 저고점_30["전전저가"]
|
||||
&& 전봉4 > 저고점_30["전고가"]) ||
|
||||
(저고점_30["전저가"] > 저고점_30["전전저가"]
|
||||
&& 전봉4 > 저고점_30["전고가"])
|
||||
) && 전전봉4 < 전봉4 && 전봉4 > 현재봉4 && candleData.Open > candleData.Close;
|
||||
|
||||
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"] == 1
|
||||
&& ((전봉3 > 저고점_30["전저가"]
|
||||
&& 저고점_30["전전고가"] < 저고점_30["전고가"])
|
||||
|| (전봉3 > 저고점_30["전저가"]
|
||||
&& 저고점_30["전고가"] < 저고점_30["전전고가"])
|
||||
|| (전봉3 > 저고점_30["전저가"]
|
||||
&& 저고점_30["전고가"] < 저고점_30["전전고가"]))
|
||||
&& 전전봉3 > 전봉3 && 전봉3 < 현재봉3)
|
||||
&& candleData.IchimokData.하한선 < candleData.Close
|
||||
//&& candleData_240.Close > 현재봉24_240
|
||||
//&& 현재봉24_240 > 전봉24_240;
|
||||
&& 현재봉24 < 현재봉72;
|
||||
//&& 현재봉4 < 현재봉72;
|
||||
//&& candleData.IchimokData.상한선 > candleData.Close;
|
||||
//&& candleData_240.Close < 현재봉24_240
|
||||
//&& 현재봉24_240 < 전봉24_240
|
||||
//&& 현재봉24 > 현재봉72;
|
||||
|
||||
//var tempFlag1Long = 저고점_30["Type"] == 0
|
||||
// && ((저고점_30["전저가"] > 저고점_30["전전저가"]
|
||||
// && 저고점_30["전전고가"] < 저고점_30["전고가"])
|
||||
// || (저고점_30["전저가"] > 저고점_30["전전저가"]
|
||||
// && 저고점_30["전고가"] < 저고점_30["전전고가"])
|
||||
// || (저고점_30["전저가"] > 저고점_30["전전저가"]
|
||||
// && 저고점_30["전고가"] < 저고점_30["전전고가"]));
|
||||
//&& 현재봉3 > 현재봉72;
|
||||
//&& candleData.IchimokData.하한선 < candleData.Close;
|
||||
//&& candleData_240.Close > 현재봉24_240
|
||||
//&& 현재봉24_240 > 전봉24_240;
|
||||
//&& 현재봉24 < 현재봉72;
|
||||
|
||||
var tempFlag2Long = 저고점_30["Type"] == 1
|
||||
&& (
|
||||
(전봉4 > 저고점_30["전저가"]
|
||||
&& 저고점_30["전전고가"] < 저고점_30["전고가"]) ||
|
||||
(전봉4 > 저고점_30["전저가"]
|
||||
&& 저고점_30["전고가"] < 저고점_30["전전고가"]) ||
|
||||
(전봉4 > 저고점_30["전저가"]))
|
||||
&& 전전봉4 > 전봉4 && 전봉4 < 현재봉4 && candleData.Open < candleData.Close;
|
||||
|
||||
|
||||
|
||||
//&& candleData.IchimokData.하한선 < candleData.Close;
|
||||
//&& candleData_240.Close > 현재봉24_240
|
||||
//&& 현재봉24_240 > 전봉24_240;
|
||||
//&& 현재봉24 < 현재봉72;
|
||||
|
||||
//var tempFlagShort = (저고점_30["Type"] == 1
|
||||
// && 저고점_30["전고가"] < 저고점_30["전전고가"]
|
||||
@@ -738,7 +750,7 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
|
||||
if (영호조건식_상향돌파)
|
||||
{
|
||||
if (!tempFlag1Long && !tempFlag2Long && !BuyLongStep[market])
|
||||
if (!tempFlag2Long && 현재봉4 < 현재봉72 && !BuyLongStep[market])
|
||||
{
|
||||
BuyLongStep[market] = true;
|
||||
}
|
||||
@@ -760,8 +772,10 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
if (!UpBuyList.ContainsKey(market))
|
||||
{
|
||||
var buyFlag = false;
|
||||
if (tempFlag2Long || tempFlag1Long)
|
||||
if (tempFlag2Long)
|
||||
{
|
||||
buyFlag = true;
|
||||
|
||||
// 60분봉
|
||||
|
||||
//var flag_240 = 현재봉3_240 > 전봉3_240 && candleData_240.Open < candleData_240.Close;
|
||||
@@ -797,39 +811,39 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
// && 저고점_30["전고가"] < candleData.Close;
|
||||
//// && 저고점_30["전고가"] > candleData.Open;
|
||||
|
||||
|
||||
var minSec = 저고점_30["tempHighVal"];
|
||||
|
||||
if (minSec > 0)
|
||||
{
|
||||
var minDate = new DateTime(1970, 1, 1, 0, 0, 0);
|
||||
minDate = minDate.AddSeconds(minSec);
|
||||
minDate = minDate.AddHours(8);
|
||||
minDate = minDate.AddMinutes(-3 * (int)interval);
|
||||
var candleDataList = candleDatas.OrderBy(i => i.Argument).ToList();
|
||||
//var minSec = 저고점_30["tempHighVal"];
|
||||
|
||||
var list = candleDataList.Where(t => t.Argument > minDate).ToList();
|
||||
//if (minSec > 0)
|
||||
//{
|
||||
// var minDate = new DateTime(1970, 1, 1, 0, 0, 0);
|
||||
// minDate = minDate.AddSeconds(minSec);
|
||||
// minDate = minDate.AddHours(8);
|
||||
// minDate = minDate.AddMinutes(-3 * (int)interval);
|
||||
// var candleDataList = candleDatas.OrderBy(i => i.Argument).ToList();
|
||||
|
||||
var closeDataList = new List<double>();
|
||||
// var list = candleDataList.Where(t => t.Argument > minDate).ToList();
|
||||
|
||||
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)
|
||||
{
|
||||
buyFlag = true;
|
||||
}
|
||||
}
|
||||
// var closeDataList = new List<double>();
|
||||
|
||||
// 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)
|
||||
// {
|
||||
// buyFlag = true;
|
||||
// }
|
||||
//}
|
||||
|
||||
if (buyFlag)
|
||||
{
|
||||
@@ -849,12 +863,16 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
signals_SD.Add(signalInfoData);
|
||||
}
|
||||
|
||||
var min = candleData.Open - (저고점_30["전고가"] - 저고점_30["전저가"]);
|
||||
|
||||
var buyDic = new Dictionary<string, object>
|
||||
{
|
||||
{ "MarketName", market },
|
||||
{ "BuyDate", nowTime },
|
||||
{ "Price", price },
|
||||
{ "Flag", 저고점_30["전고가"] > 저고점_30["전전고가"]},
|
||||
{ "Price", price },
|
||||
{ "Flag", 저고점_30["전고가"] > 저고점_30["전전고가"]},
|
||||
{ "MaxValue", candleData.Open + (저고점_30["전고가"] - 저고점_30["전저가"]) * 1.5},
|
||||
{ "MinValue", min},
|
||||
{ "MCandleTimeType", (int)interval },
|
||||
{ "CandleTime", candleData.Argument },
|
||||
{ "Candle", candleData }
|
||||
@@ -874,7 +892,7 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
if (LongCount < 5)
|
||||
{
|
||||
double size = YHKIM_OrderAmount / price * YHKIM_Leverage;
|
||||
var orderData = FutureOrder(market, FutureMarginMode.isolated, size, price, FutureSide.BuyLong, OrderType.limit, YHKIM_Leverage);
|
||||
var orderData = FutureOrder(market, FutureMarginMode.isolated, size, 0, FutureSide.BuyLong, OrderType.limit, YHKIM_Leverage);
|
||||
if (orderData != null)
|
||||
{
|
||||
var orderDic = JsonConvert.DeserializeObject<Dictionary<string, string>>(JsonConvert.SerializeObject(orderData["data"]));
|
||||
@@ -903,22 +921,24 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
|
||||
var buyItem = UpBuyList[market];
|
||||
var flag = (bool)buyItem["Flag"];
|
||||
|
||||
var MaxValue = (double)buyItem["MaxValue"];
|
||||
var MinValue = (double)buyItem["MinValue"];
|
||||
|
||||
if (interval < MCandleTimeType.H1)
|
||||
{
|
||||
var buyTime = ((DateTime)buyItem["CandleTime"]).AddMinutes((int)interval);
|
||||
var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval);
|
||||
|
||||
if (nowTime < buyTime)
|
||||
{
|
||||
if (candleData.Argument < buyTime)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
//임시로 처리
|
||||
else
|
||||
{
|
||||
var buyTime = ((DateTime)buyItem["CandleTime"]).AddHours((int)interval / 60);
|
||||
var buyTime = ((DateTime)buyItem["BuyDate"]).AddHours((int)interval / 60);
|
||||
|
||||
if (nowTime < buyTime)
|
||||
if (candleData.Argument < buyTime)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -928,18 +948,27 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
|
||||
var sellFlag = false;
|
||||
|
||||
if (candleData.Close < candleData_전봉.Low ||
|
||||
candleData.Close < candleData_전전봉.Low ||
|
||||
if (candleData.Close < candleData_전봉.Low &&
|
||||
candleData.Close < candleData_전전봉.Low &&
|
||||
candleData.Close < candleData_전전전봉.Low)
|
||||
{
|
||||
sellFlag = true;
|
||||
}
|
||||
|
||||
if(Bol24_Up < candleData.Close) sellFlag = true;
|
||||
|
||||
//if (candleData.Close <= MinValue || candleData.Close >= MaxValue)
|
||||
// sellFlag = true;
|
||||
if (전봉4 < 전전봉4)
|
||||
sellFlag = true;
|
||||
|
||||
if (sellFlag)
|
||||
{
|
||||
double.TryParse(buyItem["Price"].ToString(), out var buyPrice);
|
||||
var resultRate = ((price - buyPrice) / buyPrice) * 100;
|
||||
BuyLongStep[market] = false;
|
||||
|
||||
if(buyPrice > price)
|
||||
BuyLongStep[market] = false;
|
||||
var result = new Dictionary<string, object>()
|
||||
{
|
||||
{ "MarketName", market },
|
||||
@@ -1020,7 +1049,7 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
var description = string.Format("{0} 72,24,4 하락", strInterval);
|
||||
var signalData = signals_SD.Find(i => i.MarketName.Equals(market) && i.Description.Equals(description));
|
||||
|
||||
if (!tempFlag1Short && !tempFlag2Short && !BuyShortStep[market])
|
||||
if (!tempFlag2Short && 현재봉4 > 현재봉72 && !BuyShortStep[market])
|
||||
{
|
||||
BuyShortStep[market] = true;
|
||||
}
|
||||
@@ -1033,7 +1062,8 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
if (!DownBuyList.ContainsKey(market))
|
||||
{
|
||||
var buyFlag = false;
|
||||
if (tempFlag2Short || tempFlag1Short)
|
||||
|
||||
if (tempFlag2Short)
|
||||
{
|
||||
//var flag_240 = 현재봉3_240 < 전봉3_240 && candleData_240.Open > candleData_240.Close;
|
||||
////저고점_240["Type"] == 0 && 저고점_240["전저가"] < 현재봉3_240 && 현재봉3_240 < 전봉3_240 && 전봉3_240> 전전봉3_240 && candleData_240.Open > candleData_240.Close;
|
||||
@@ -1065,39 +1095,48 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
//{
|
||||
// buyFlag = true;
|
||||
//}
|
||||
|
||||
var minSec = 저고점_30["tempLowVal"];
|
||||
|
||||
if (minSec > 0)
|
||||
{
|
||||
var minDate = new DateTime(1970, 1, 1, 0, 0, 0);
|
||||
minDate = minDate.AddSeconds(minSec);
|
||||
minDate = minDate.AddHours(8);
|
||||
minDate = minDate.AddMinutes(-3 * (int)interval);
|
||||
var candleDataList = candleDatas.OrderBy(i => i.Argument).ToList();
|
||||
//var minSec = 저고점_30["tempLowVal"];
|
||||
|
||||
var list = candleDataList.Where(t => t.Argument > minDate).ToList();
|
||||
var closeDataList = new List<double>();
|
||||
//if (minSec > 0)
|
||||
//{
|
||||
// var minDate = new DateTime(1970, 1, 1, 0, 0, 0);
|
||||
// minDate = minDate.AddSeconds(minSec);
|
||||
// minDate = minDate.AddHours(8);
|
||||
// minDate = minDate.AddMinutes(-3 * (int)interval);
|
||||
// var candleDataList = candleDatas.OrderBy(i => i.Argument).ToList();
|
||||
|
||||
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 list = candleDataList.Where(t => t.Argument > minDate).ToList();
|
||||
// var closeDataList = new List<double>();
|
||||
|
||||
var minData = closeDataList.Min();
|
||||
// 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();
|
||||
// }
|
||||
|
||||
if (candleData.Close < minData && 현재봉3 < 전봉3)
|
||||
{
|
||||
buyFlag = true;
|
||||
}
|
||||
}
|
||||
// var minData = closeDataList.Min();
|
||||
|
||||
// if (candleData.Close < minData && 현재봉3 < 전봉3)
|
||||
// {
|
||||
// buyFlag = true;
|
||||
// }
|
||||
//}
|
||||
|
||||
//if (candleData.Close > 저고점_30["전저가"])
|
||||
//{
|
||||
// buyFlag = true;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// BuyShortStep[market] = false;
|
||||
//}
|
||||
buyFlag = true;
|
||||
if (buyFlag)
|
||||
{
|
||||
// 없으면 생성
|
||||
@@ -1116,13 +1155,15 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
signals_SD.Add(signalInfoData);
|
||||
}
|
||||
|
||||
var min = candleData.Open + (저고점_30["전고가"] - 저고점_30["전저가"]);
|
||||
|
||||
var buyDic = new Dictionary<string, object>
|
||||
{
|
||||
{ "MarketName", market },
|
||||
{ "BuyDate", nowTime },
|
||||
{ "Price", price },
|
||||
|
||||
{ "Price", price },
|
||||
{ "MaxValue", candleData.Open - (저고점_30["전고가"] - 저고점_30["전저가"]) * 1.5},
|
||||
{ "MinValue", min},
|
||||
{ "Flag", 저고점_30["전저가"] < 저고점_30["전전저가"] },
|
||||
{ "MCandleTimeType", (int)interval },
|
||||
{ "CandleTime", candleData.Argument },
|
||||
@@ -1143,7 +1184,7 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
if (ShortCount < 5)
|
||||
{
|
||||
double size = YHKIM_OrderAmount / price * YHKIM_Leverage;
|
||||
var orderData = FutureOrder(market, FutureMarginMode.isolated, size, price, FutureSide.BuyShort, OrderType.limit, YHKIM_Leverage);
|
||||
var orderData = FutureOrder(market, FutureMarginMode.isolated, size, 0, FutureSide.BuyShort, OrderType.limit, YHKIM_Leverage);
|
||||
if (orderData != null)
|
||||
{
|
||||
var orderDic = JsonConvert.DeserializeObject<Dictionary<string, string>>(JsonConvert.SerializeObject(orderData["data"]));
|
||||
@@ -1172,12 +1213,15 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
{
|
||||
var buyItem = DownBuyList[market];
|
||||
var flag = (bool)buyItem["Flag"];
|
||||
|
||||
var MinValue = (double)buyItem["MinValue"];
|
||||
var MaxValue = (double)buyItem["MaxValue"];
|
||||
var sellFlag = false;
|
||||
|
||||
if (interval < MCandleTimeType.H1)
|
||||
{
|
||||
var buyTime = ((DateTime)buyItem["CandleTime"]).AddMinutes((int)interval);
|
||||
var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval);
|
||||
|
||||
if (nowTime < buyTime)
|
||||
if (candleData.Argument < buyTime)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -1185,31 +1229,34 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
//임시로 처리
|
||||
else
|
||||
{
|
||||
var buyTime = ((DateTime)buyItem["CandleTime"]).AddHours((int)interval / 60);
|
||||
var buyTime = ((DateTime)buyItem["BuyDate"]).AddHours((int)interval / 60);
|
||||
|
||||
if (nowTime < buyTime)
|
||||
if (candleData.Argument < buyTime)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var buyTimeUnix = ((DateTimeOffset)((DateTime)buyItem["CandleTime"])).ToUnixTimeSeconds();
|
||||
|
||||
var sellFlag = false;
|
||||
|
||||
|
||||
if (candleData.Close > candleData_전봉.High ||
|
||||
candleData.Close > candleData_전전봉.High ||
|
||||
if (candleData.Close > candleData_전봉.High &&
|
||||
candleData.Close > candleData_전전봉.High &&
|
||||
candleData.Close > candleData_전전전봉.High)
|
||||
{
|
||||
sellFlag = true;
|
||||
}
|
||||
|
||||
|
||||
var buyTimeUnix = ((DateTimeOffset)((DateTime)buyItem["CandleTime"])).ToUnixTimeSeconds();
|
||||
|
||||
if (Bol24_Down > candleData.Close) sellFlag = true;
|
||||
|
||||
if (전봉4 > 전전봉4)
|
||||
sellFlag = true;
|
||||
|
||||
if (sellFlag)
|
||||
{
|
||||
BuyShortStep[market] = false;
|
||||
{
|
||||
double.TryParse(buyItem["Price"].ToString(), out var buyPrice);
|
||||
if (buyPrice < price)
|
||||
BuyShortStep[market] = false;
|
||||
var resultRate = ((price - buyPrice) / buyPrice) * 100;
|
||||
|
||||
var result = new Dictionary<string, object>()
|
||||
@@ -1318,11 +1365,11 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
저고점["tempLowVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() &&
|
||||
((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempHighVal"] >= 120 * (int)type)
|
||||
{
|
||||
if(저고점["전저가"] > 전전봉3)
|
||||
if (저고점["전저가"] > 전전봉3)
|
||||
{
|
||||
저고점["tempLowVal"] = ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds();
|
||||
저고점["전저가"] = 전전봉3;
|
||||
}
|
||||
}
|
||||
|
||||
저고점["Type"] = 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user