1. 실제 고가 저가 뚫었는데 사는거로 변경
2. 역헤드앤숄더, 그냥 헤드앤 숄더일경우에 삼(롱,숏모두 다 포함) 3. N모양 역 N모양에도 살수 있도록 수정
This commit is contained in:
@@ -251,6 +251,10 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
dic.Add("tempLowVal", 0);
|
||||
dic.Add("tempHigh2Val", 0);
|
||||
dic.Add("tempLow2Val", 0);
|
||||
dic.Add("tempHigh3Val", 0);
|
||||
dic.Add("tempLow3Val", 0);
|
||||
dic.Add("tempHigh4Val", 0);
|
||||
dic.Add("tempLow4Val", 0);
|
||||
dic.Add("switchLowVal", 0);
|
||||
dic.Add("switchHighVal", 0);
|
||||
전저고점.Add(market + strInterval, dic);
|
||||
@@ -274,12 +278,12 @@ 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 현재봉5_Temp = candleDatas_Temp_List[i].movingAverageDataList[5].Value;
|
||||
var 전봉5_Temp = candleDatas_Temp_List[i - 1].movingAverageDataList[5].Value;
|
||||
var 전전봉5_Temp = candleDatas_Temp_List[i - 2].movingAverageDataList[5].Value;
|
||||
var 전전전봉5_Temp = candleDatas_Temp_List[i - 3].movingAverageDataList[5].Value;
|
||||
var 전전전전봉5_Temp = candleDatas_Temp_List[i - 4].movingAverageDataList[5].Value;
|
||||
var returnVal = Calculate전고점(market, strInterval, interval, 전봉5_Temp, 전전봉5_Temp, 전전전봉5_Temp, candleDatas_Temp_List[candleDatas_Temp_List.Count - 1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -289,12 +293,14 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
BuyLongStep[market + strInterval] = false;
|
||||
}
|
||||
|
||||
if (!(전저고점.ContainsKey(market + "15m") && 전저고점.ContainsKey(market + "1H")))
|
||||
continue;
|
||||
if (!전저고점.ContainsKey(market + "30m")) continue;
|
||||
|
||||
#region 임시 15분봉 처리
|
||||
//if (!(전저고점.ContainsKey(market + "5m") && 전저고점.ContainsKey(market + "15m") && 전저고점.ContainsKey(market + "1H")))
|
||||
// continue;
|
||||
|
||||
#region 5분봉 처리 -> 임시로 30분봉 처리
|
||||
// 시간별로 정렬하기 (임시 리스트)
|
||||
var candleDatas = findedMarket.candleDataList[MCandleTimeType.M15];
|
||||
var candleDatas = findedMarket.candleDataList[MCandleTimeType.M30];
|
||||
var candleDatas_정렬 = candleDatas.OrderBy(i => i.Argument).ToList();
|
||||
|
||||
var candleData = candleDatas.Find(i => i.Argument == candleDatas_정렬.Last().Argument);
|
||||
@@ -335,6 +341,7 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
#endregion
|
||||
|
||||
#region 15분봉 처리
|
||||
/*
|
||||
// 시간별로 정렬하기 (임시 리스트)
|
||||
var candleDatas_15 = findedMarket.candleDataList[MCandleTimeType.M15];
|
||||
var candleDatas_15_정렬 = candleDatas_15.OrderBy(i => i.Argument).ToList();
|
||||
@@ -374,10 +381,12 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
if (candleData_15_전전전전봉 == null) continue;
|
||||
ichimokuConditionSetup.calIchimokuData(candleDatas_15_정렬, candleData_15_전전전전봉);
|
||||
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_15_정렬, candleData_15_전전전전봉);
|
||||
*/
|
||||
#endregion
|
||||
|
||||
#region 60분봉 처리
|
||||
// 시간별로 정렬하기 (임시 리스트)
|
||||
/*
|
||||
var candleDatas_60 = findedMarket.candleDataList[MCandleTimeType.H1];
|
||||
var candleDatas_60_정렬 = candleDatas_60.OrderBy(i => i.Argument).ToList();
|
||||
|
||||
@@ -416,6 +425,7 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
if (candleData_60_전전전전봉 == null) continue;
|
||||
ichimokuConditionSetup.calIchimokuData(candleDatas_60_정렬, candleData_60_전전전전봉);
|
||||
movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_60_정렬, candleData_60_전전전전봉);
|
||||
*/
|
||||
#endregion
|
||||
|
||||
if (checked구름떼상향돌파 && candleData_전봉.Open < candleData_전봉.IchimokData.상한선 && candleData.Open > candleData.IchimokData.상한선 && candleData.Low > candleData.IchimokData.상한선
|
||||
@@ -485,6 +495,7 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
var 전전전봉2 = candleData_전전전봉.movingAverageDataList[2].Value;
|
||||
var 전전전봉3 = candleData_전전전봉.movingAverageDataList[3].Value;
|
||||
var 전전전봉4 = candleData_전전전봉.movingAverageDataList[4].Value;
|
||||
var 전전전봉5 = candleData_전전전봉.movingAverageDataList[5].Value;
|
||||
var 전전전봉8 = candleData_전전전봉.movingAverageDataList[8].Value;
|
||||
var 전전전봉12 = candleData_전전전봉.movingAverageDataList[12].Value;
|
||||
var 전전전봉24 = candleData_전전전봉.movingAverageDataList[24].Value;
|
||||
@@ -496,6 +507,7 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
var 전전봉2 = candleData_전전봉.movingAverageDataList[2].Value;
|
||||
var 전전봉3 = candleData_전전봉.movingAverageDataList[3].Value;
|
||||
var 전전봉4 = candleData_전전봉.movingAverageDataList[4].Value;
|
||||
var 전전봉5 = candleData_전전봉.movingAverageDataList[5].Value;
|
||||
var 전전봉8 = candleData_전전봉.movingAverageDataList[8].Value;
|
||||
var 전전봉12 = candleData_전전봉.movingAverageDataList[12].Value;
|
||||
var 전전봉24 = candleData_전전봉.movingAverageDataList[24].Value;
|
||||
@@ -513,6 +525,7 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
var 전봉2 = candleData_전봉.movingAverageDataList[2].Value;
|
||||
var 전봉3 = candleData_전봉.movingAverageDataList[3].Value;
|
||||
var 전봉4 = candleData_전봉.movingAverageDataList[4].Value;
|
||||
var 전봉5 = candleData_전봉.movingAverageDataList[5].Value;
|
||||
var 전봉8 = candleData_전봉.movingAverageDataList[8].Value;
|
||||
var 전봉12 = candleData_전봉.movingAverageDataList[12].Value;
|
||||
var 전봉24 = candleData_전봉.movingAverageDataList[24].Value;
|
||||
@@ -531,6 +544,7 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
var 현재봉2 = candleData.movingAverageDataList[2].Value;
|
||||
var 현재봉3 = candleData.movingAverageDataList[3].Value;
|
||||
var 현재봉4 = candleData.movingAverageDataList[4].Value;
|
||||
var 현재봉5 = candleData.movingAverageDataList[5].Value;
|
||||
var 현재봉8 = candleData.movingAverageDataList[8].Value;
|
||||
var 현재봉12 = candleData.movingAverageDataList[12].Value;
|
||||
var 현재봉24 = candleData.movingAverageDataList[24].Value;
|
||||
@@ -575,7 +589,7 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
var Bol24_Up = candleData.movingAverageDataList[24].BolangerValue_Up;
|
||||
var Bol72_Up = candleData.movingAverageDataList[72].BolangerValue_Up;
|
||||
#endregion
|
||||
|
||||
/*
|
||||
var 현재봉2_15 = candleData_15.movingAverageDataList[2].Value;
|
||||
var 전봉2_15 = candleData_15_전봉.movingAverageDataList[2].Value;
|
||||
var 전전봉2_15 = candleData_15_전전봉.movingAverageDataList[2].Value;
|
||||
@@ -593,6 +607,11 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
var 전전봉4_15 = candleData_15_전전봉.movingAverageDataList[4].Value;
|
||||
var 전전전봉4_15 = candleData_15_전전전봉.movingAverageDataList[4].Value;
|
||||
|
||||
var 현재봉5_15 = candleData_15.movingAverageDataList[5].Value;
|
||||
var 전봉5_15 = candleData_15_전봉.movingAverageDataList[5].Value;
|
||||
var 전전봉5_15 = candleData_15_전전봉.movingAverageDataList[5].Value;
|
||||
var 전전전봉5_15 = candleData_15_전전전봉.movingAverageDataList[5].Value;
|
||||
|
||||
|
||||
var 현재봉2_60 = candleData_60.movingAverageDataList[2].Value;
|
||||
var 전봉2_60 = candleData_60_전봉.movingAverageDataList[2].Value;
|
||||
@@ -610,7 +629,12 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
var 전봉4_60 = candleData_60_전봉.movingAverageDataList[4].Value;
|
||||
var 전전봉4_60 = candleData_60_전전봉.movingAverageDataList[4].Value;
|
||||
var 전전전봉4_60 = candleData_60_전전전봉.movingAverageDataList[4].Value;
|
||||
|
||||
|
||||
var 현재봉5_60 = candleData_60.movingAverageDataList[5].Value;
|
||||
var 전봉5_60 = candleData_60_전봉.movingAverageDataList[5].Value;
|
||||
var 전전봉5_60 = candleData_60_전전봉.movingAverageDataList[5].Value;
|
||||
var 전전전봉5_60 = candleData_60_전전전봉.movingAverageDataList[5].Value;
|
||||
*/
|
||||
|
||||
var oneList = new List<double>() {
|
||||
현재봉24,
|
||||
@@ -626,18 +650,50 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
};
|
||||
|
||||
|
||||
//var 저고점_1 = 전저고점[market + "1m"];
|
||||
var 저고점_15 = 전저고점[market + "15m"];
|
||||
var 저고점_60 = 전저고점[market + "1H"];
|
||||
//var 저고점_5 = 전저고점[market + "5m"];
|
||||
var 저고점_30 = 전저고점[market + "30m"];
|
||||
//var 저고점_60 = 전저고점[market + "1H"];
|
||||
|
||||
//var returnVal = Calculate전고점(market, "1m", MCandleTimeType.M1, 전봉2, 전전봉2, 전전전봉2, candleData);
|
||||
//var returnVal = Calculate전고점(market, "5m", MCandleTimeType.M5, 전봉5, 전전봉5, 전전전봉5, candleData);
|
||||
//if (!returnVal) continue;
|
||||
var returnVal = Calculate전고점(market, "15m", MCandleTimeType.M15, 전봉3_15, 전전봉3_15, 전전전봉3_15, candleData_15);
|
||||
if (!returnVal) continue;
|
||||
returnVal = Calculate전고점(market, "1H", MCandleTimeType.H1, 전봉3_60, 전전봉3_60, 전전전봉3_60, candleData_60);
|
||||
var returnVal = Calculate전고점(market, "30m", MCandleTimeType.M30, 전봉5, 전전봉5, 전전전봉5, candleData);
|
||||
if (!returnVal) continue;
|
||||
//returnVal = Calculate전고점(market, "1H", MCandleTimeType.H1, 전봉5_60, 전전봉5_60, 전전전봉5_60, candleData_60);
|
||||
//if (!returnVal) continue;
|
||||
|
||||
var tempFlag = (저고점_30["Type"] == 0
|
||||
&& 저고점_30["전저가"] > 저고점_30["전전저가"]
|
||||
&& 저고점_30["전전전저가"] > 저고점_30["전전저가"]
|
||||
&& 저고점_30["전전전고가"] > 저고점_30["전전고가"]
|
||||
&& 저고점_30["tempHighVal"] > 저고점_30["tempLow2Val"]
|
||||
&& 저고점_30["tempLowVal"] > 저고점_30["tempHighVal"]
|
||||
&& 저고점_30["tempLow2Val"] > 저고점_30["tempHigh2Val"]
|
||||
&& 저고점_30["tempHigh2Val"] > 저고점_30["tempLow3Val"])
|
||||
||
|
||||
(저고점_30["Type"] == 1
|
||||
&& 저고점_30["전고가"] < 저고점_30["전전고가"]
|
||||
&& 저고점_30["전전전고가"] < 저고점_30["전전고가"]
|
||||
&& 저고점_30["전전전저가"] < 저고점_30["전전저가"]
|
||||
&& 저고점_30["tempLowVal"] > 저고점_30["tempHigh2Val"]
|
||||
&& 저고점_30["tempLowVal"] < 저고점_30["tempHighVal"]
|
||||
&& 저고점_30["tempLow2Val"] < 저고점_30["tempHigh2Val"]
|
||||
&& 저고점_30["tempLow2Val"] > 저고점_30["tempHigh3Val"]);
|
||||
|
||||
var tempFlag2 = (저고점_30["Type"] == 1
|
||||
&& 저고점_30["전저가"] < 저고점_30["전전저가"]
|
||||
&& 저고점_30["전전전고가"] > 저고점_30["전전고가"]
|
||||
&& 저고점_30["tempHighVal"] > 저고점_30["tempLow2Val"]
|
||||
&& 저고점_30["tempLowVal"] > 저고점_30["tempHighVal"]
|
||||
&& 저고점_30["tempLow2Val"] > 저고점_30["tempHigh2Val"]
|
||||
&& 저고점_30["tempHigh2Val"] > 저고점_30["tempLow3Val"])
|
||||
||
|
||||
(저고점_30["Type"] == 0
|
||||
&& 저고점_30["전고가"] > 저고점_30["전전고가"]
|
||||
&& 저고점_30["전전전저가"] < 저고점_30["전전저가"]
|
||||
&& 저고점_30["tempLowVal"] > 저고점_30["tempHigh2Val"]
|
||||
&& 저고점_30["tempLowVal"] < 저고점_30["tempHighVal"]
|
||||
&& 저고점_30["tempLow2Val"] < 저고점_30["tempHigh2Val"]
|
||||
&& 저고점_30["tempLow2Val"] > 저고점_30["tempHigh3Val"]);
|
||||
|
||||
if (영호조건식_상향돌파)
|
||||
{
|
||||
@@ -649,8 +705,6 @@ 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));
|
||||
|
||||
//전 저점 계산
|
||||
|
||||
try
|
||||
{
|
||||
//사는 시점
|
||||
@@ -661,21 +715,81 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
|
||||
// 60분봉
|
||||
|
||||
var flag_60 = 저고점_60["Type"] == 0 && 저고점_60["전저가"] < 현재봉3_60 && 저고점_60["전고가"] > 현재봉3_60;
|
||||
//var flag_60 = 현재봉3_60 > 전봉3_60 && candleData_60.Open < candleData_60.Close;
|
||||
////저고점_60["Type"] == 1 && 저고점_60["전고가"] > 현재봉3_60 && 현재봉3_60 > 전봉3_60 && 전봉3_60 < 전전봉3_60 && candleData_60.Open < candleData_60.Close;
|
||||
|
||||
var flag_15 = 저고점_15["Type"] == 0
|
||||
&& 저고점_15["전저가"] < 현재봉3_15
|
||||
&& 저고점_15["전고가"] < 현재봉3_15
|
||||
&& 저고점_15["전고가"] > 전봉3_15
|
||||
&& 저고점_15["전저가"] > 저고점_15["전전저가"]
|
||||
&& 저고점_15["전저가"] < 저고점_15["전고가"]
|
||||
&& 저고점_15["전고가"] > 저고점_15["전전저가"] && 저고점_15["전고가"]< 저고점_15["전전고가"];
|
||||
//var flag_15 = 저고점_30["Type"] == 0
|
||||
// && 저고점_30["전고가"] > 현재봉3_15
|
||||
// && 저고점_30["전고가"] < 현재봉3_15
|
||||
// && 저고점_30["전고가"] > 전봉3_15
|
||||
// && 저고점_30["전저가"] > 저고점_30["전전저가"]
|
||||
// && 저고점_30["전저가"] < 저고점_30["전고가"]
|
||||
// && 저고점_30["전고가"] > 저고점_30["전전저가"] && 저고점_30["전고가"]< 저고점_30["전전고가"];
|
||||
|
||||
if (flag_60 && flag_15)
|
||||
//var max = 저고점_30["전고가"];
|
||||
//if (저고점_30["전고가"] < 저고점_30["전전고가"])
|
||||
// max = 저고점_30["전전고가"];
|
||||
|
||||
//역헤드앤 숄더와 헤드앤 숄더는 둘다 공통
|
||||
// var flag_15 = 저고점_30["Type"] == 0
|
||||
// && 저고점_30["전저가"] > 저고점_30["전전저가"]
|
||||
// && 저고점_30["전전전저가"] > 저고점_30["전전저가"]
|
||||
// && 저고점_30["전전전고가"] > 저고점_30["전전고가"]
|
||||
// && 저고점_30["tempHighVal"] > 저고점_30["tempLow2Val"]
|
||||
// && 저고점_30["tempLowVal"] > 저고점_30["tempHighVal"]
|
||||
// && 저고점_30["tempLow2Val"] > 저고점_30["tempHigh2Val"]
|
||||
// && 저고점_30["tempHigh2Val"] > 저고점_30["tempLow3Val"]
|
||||
// //&& max > 현재봉5
|
||||
// //&& max < candleData.Close
|
||||
// //&& max < candleData.Open;
|
||||
// && 저고점_30["전고가"] > 현재봉5
|
||||
// && 현재봉5 > 전봉5
|
||||
|
||||
// && 저고점_30["전고가"] < candleData.Close;
|
||||
//// && 저고점_30["전고가"] > candleData.Open;
|
||||
|
||||
|
||||
var minSec = 0.0;
|
||||
if (tempFlag2)
|
||||
{
|
||||
buyFlag = true;
|
||||
if (저고점_30["Type"] == 1)
|
||||
{
|
||||
minSec = 저고점_30["tempLow2Val"];
|
||||
}
|
||||
else
|
||||
{
|
||||
minSec = 저고점_30["tempHigh2Val"];
|
||||
}
|
||||
}
|
||||
|
||||
if (tempFlag)
|
||||
{
|
||||
if (저고점_30["Type"] == 0)
|
||||
{
|
||||
minSec = 저고점_30["tempLow3Val"];
|
||||
}
|
||||
else
|
||||
{
|
||||
minSec = 저고점_30["tempHigh3Val"];
|
||||
}
|
||||
}
|
||||
|
||||
if(minSec > 0) {
|
||||
var minData = new DateTime(1970, 1, 1, 0, 0, 0);
|
||||
minData = minData.AddSeconds(minSec);
|
||||
minData = minData.AddMinutes(-90);
|
||||
var candleDataList = candleDatas.OrderBy(i => i.Argument).ToList();
|
||||
|
||||
var list = candleDataList.Where(t => t.Argument > minData).ToList();
|
||||
list.RemoveAt(list.Count - 1);
|
||||
var maxData =list.Max(t => t.High);
|
||||
|
||||
if(candleData.Close > maxData)
|
||||
{
|
||||
buyFlag = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (buyFlag)
|
||||
{
|
||||
// 없으면 생성
|
||||
@@ -699,7 +813,7 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
{ "MarketName", market },
|
||||
{ "BuyDate", nowTime },
|
||||
{ "Price", price },
|
||||
{ "Flag", 저고점_15["전고가"] > 저고점_15["전전고가"]},
|
||||
{ "Flag", 저고점_30["전고가"] > 저고점_30["전전고가"]},
|
||||
{ "MCandleTimeType", (int)interval },
|
||||
{ "CandleTime", candleData.Argument },
|
||||
{ "Candle", candleData }
|
||||
@@ -771,36 +885,51 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
var sellFlag = false;
|
||||
|
||||
//예외처리
|
||||
if (저고점_60["전저가"] > 현재봉3_60)
|
||||
sellFlag = true;
|
||||
//if (저고점_60["전저가"] > 현재봉3_60)
|
||||
// sellFlag = true;
|
||||
|
||||
if (저고점_15["전저가"] > 전봉3_15)
|
||||
sellFlag = true;
|
||||
//if (저고점_30["전저가"] > 전봉5)
|
||||
// sellFlag = true;
|
||||
|
||||
if (flag)
|
||||
{
|
||||
if (저고점_15["전고가"] < 저고점_15["전전고가"])
|
||||
{
|
||||
sellFlag = true;
|
||||
}
|
||||
//if (저고점_30["전고가"] < 저고점_30["전전고가"])
|
||||
// sellFlag = true;
|
||||
|
||||
if (저고점_15["전전고가"] > 현재봉3_15)
|
||||
{
|
||||
sellFlag = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (저고점_15["전저가"] > 현재봉3_15)
|
||||
{
|
||||
sellFlag = true;
|
||||
}
|
||||
//if (저고점_30["전전고가"] > 현재봉5)
|
||||
// sellFlag = true;
|
||||
|
||||
if (저고점_15["전고가"] > 저고점_15["전전고가"])
|
||||
{
|
||||
buyItem["Flag"] = true;
|
||||
}
|
||||
}
|
||||
//var 전전Data = 저고점_30["전전고가"] - 저고점_30["전전전고가"];
|
||||
|
||||
//var 전Data = 저고점_30["전고가"] - 저고점_30["전전고가"];
|
||||
|
||||
|
||||
//if (전전Data > 전Data) sellFlag = true;
|
||||
|
||||
if(현재봉5 < 전봉5) sellFlag = true;
|
||||
|
||||
//if (flag)
|
||||
//{
|
||||
// if (저고점_5["전고가"] < 저고점_5["전전고가"])
|
||||
// {
|
||||
// sellFlag = true;
|
||||
// }
|
||||
|
||||
// if (저고점_5["전전고가"] > 현재봉3)
|
||||
// {
|
||||
// sellFlag = true;
|
||||
// }
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// if (저고점_5["전저가"] > 현재봉3)
|
||||
// {
|
||||
// sellFlag = true;
|
||||
// }
|
||||
|
||||
// if (저고점_5["전고가"] > 저고점_5["전전고가"])
|
||||
// {
|
||||
// buyItem["Flag"] = true;
|
||||
// }
|
||||
//}
|
||||
|
||||
if (sellFlag)
|
||||
{
|
||||
@@ -894,19 +1023,77 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
|
||||
var buyFlag = false;
|
||||
|
||||
var flag_60 = 저고점_60["Type"] == 1 && 저고점_60["전고가"] > 현재봉3_60 && 저고점_60["전저가"] < 현재봉3_60;
|
||||
//var flag_60 = 현재봉3_60 < 전봉3_60 && candleData_60.Open > candleData_60.Close;
|
||||
////저고점_60["Type"] == 0 && 저고점_60["전저가"] < 현재봉3_60 && 현재봉3_60 < 전봉3_60 && 전봉3_60> 전전봉3_60 && candleData_60.Open > candleData_60.Close;
|
||||
|
||||
var flag_15 = 저고점_15["Type"] == 1
|
||||
&& 저고점_15["전고가"] > 현재봉3_15
|
||||
&& 저고점_15["전저가"] > 현재봉3_15
|
||||
&& 저고점_15["전저가"] < 전봉3_15
|
||||
&& 저고점_15["전고가"] < 저고점_15["전전고가"]
|
||||
&& 저고점_15["전고가"] > 저고점_15["전저가"]
|
||||
&& 저고점_15["전저가"] < 저고점_15["전전고가"] && 저고점_15["전저가"] > 저고점_15["전전저가"];
|
||||
//var flag_15 = 저고점_30["Type"] == 1
|
||||
// && 저고점_30["전저가"] < 현재봉3_15
|
||||
// && 저고점_30["전저가"] > 현재봉3_15
|
||||
// && 저고점_30["전저가"] < 전봉3_15
|
||||
// && 저고점_30["전고가"] < 저고점_30["전전고가"]
|
||||
// && 저고점_30["전고가"] > 저고점_30["전저가"]
|
||||
// && 저고점_30["전저가"] < 저고점_30["전전고가"] && 저고점_30["전저가"] > 저고점_30["전전저가"];
|
||||
|
||||
if (flag_60 && flag_15)
|
||||
//var flag_15 = 저고점_30["Type"] == 1
|
||||
// && 저고점_30["전고가"] < 저고점_30["전전고가"]
|
||||
// && 저고점_30["전전전고가"] < 저고점_30["전전고가"]
|
||||
// && 저고점_30["전전전저가"] < 저고점_30["전전저가"]
|
||||
// && 저고점_30["tempLowVal"] > 저고점_30["tempHigh2Val"]
|
||||
// && 저고점_30["tempLowVal"] < 저고점_30["tempHighVal"]
|
||||
////&& min < 현재봉5
|
||||
////&& candleData.Close < min
|
||||
////&& min < candleData.Open;
|
||||
//&& 저고점_30["전저가"] < 현재봉5
|
||||
//&& 현재봉5 < 전봉5
|
||||
//&& 저고점_30["전저가"] < 저고점_30["전전저가"]
|
||||
//&& candleData.Close < 저고점_30["전저가"];
|
||||
// && 저고점_30["전저가"] < candleData.Open;
|
||||
|
||||
//if (flag_15)
|
||||
//{
|
||||
// buyFlag = true;
|
||||
//}
|
||||
|
||||
var minSec = 0.0;
|
||||
if (tempFlag2)
|
||||
{
|
||||
buyFlag = true;
|
||||
if (저고점_30["Type"] == 1)
|
||||
{
|
||||
minSec = 저고점_30["tempLow2Val"];
|
||||
}
|
||||
else
|
||||
{
|
||||
minSec = 저고점_30["tempHigh2Val"];
|
||||
}
|
||||
}
|
||||
|
||||
if (tempFlag)
|
||||
{
|
||||
if (저고점_30["Type"] == 0)
|
||||
{
|
||||
minSec = 저고점_30["tempLow3Val"];
|
||||
}
|
||||
else
|
||||
{
|
||||
minSec = 저고점_30["tempHigh3Val"];
|
||||
}
|
||||
}
|
||||
|
||||
if (minSec > 0)
|
||||
{
|
||||
var minDate = new DateTime(1970, 1, 1, 0, 0, 0);
|
||||
minDate = minDate.AddSeconds(minSec);
|
||||
minDate = minDate.AddMinutes(-90);
|
||||
var candleDataList = candleDatas.OrderBy(i => i.Argument).ToList();
|
||||
|
||||
var list = candleDataList.Where(t => t.Argument > minDate).ToList();
|
||||
list.RemoveAt(list.Count - 1);
|
||||
var minData = list.Min(t => t.High);
|
||||
|
||||
if (candleData.Close < minData)
|
||||
{
|
||||
buyFlag = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (buyFlag)
|
||||
@@ -933,7 +1120,7 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
{ "MarketName", market },
|
||||
{ "BuyDate", nowTime },
|
||||
{ "Price", price },
|
||||
{ "Flag", 저고점_60["전저가"] < 저고점_60["전전저가"]},
|
||||
{ "Flag", 저고점_30["전저가"] < 저고점_30["전전저가"] },
|
||||
{ "MCandleTimeType", (int)interval },
|
||||
{ "CandleTime", candleData.Argument },
|
||||
{ "Candle", candleData }
|
||||
@@ -1003,35 +1190,53 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
|
||||
var sellFlag = false;
|
||||
|
||||
if (저고점_60["전고가"] < 현재봉3_60)
|
||||
//if (저고점_60["전고가"] < 현재봉3_60)
|
||||
// sellFlag = true;
|
||||
|
||||
//if (저고점_30["전고가"] < 전봉5)
|
||||
// sellFlag = true;
|
||||
|
||||
//if (저고점_30["전저가"] > 저고점_30["전전저가"])
|
||||
// sellFlag = true;
|
||||
|
||||
//if (저고점_30["전전저가"] < 현재봉5)
|
||||
// sellFlag = true;
|
||||
|
||||
//var 전전Data = 저고점_30["전전전저가"] - 저고점_30["전전저가"];
|
||||
|
||||
//var 전Data = 저고점_30["전전저가"] - 저고점_30["전저가"];
|
||||
|
||||
//if (전전Data > 전Data) sellFlag = true;
|
||||
|
||||
if(현재봉5 > 전봉5)
|
||||
sellFlag = true;
|
||||
|
||||
if (저고점_15["전고가"] < 전봉3_15)
|
||||
sellFlag = true;
|
||||
|
||||
if (flag)
|
||||
{
|
||||
if (저고점_15["전저가"] > 저고점_15["전전저가"])
|
||||
{
|
||||
sellFlag = true;
|
||||
}
|
||||
if (저고점_15["전전저가"] < 현재봉3_15)
|
||||
{
|
||||
sellFlag = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (저고점_15["전고가"] < 현재봉3_15)
|
||||
{
|
||||
sellFlag = true;
|
||||
}
|
||||
if (저고점_15["전저가"] < 저고점_15["전전저가"])
|
||||
{
|
||||
buyItem["Flag"] = true;
|
||||
}
|
||||
}
|
||||
|
||||
//if (저고점_5["tempLowVal"] > ((DateTimeOffset)buyItem["CandleTime"]).ToUnixTimeSeconds())
|
||||
//{
|
||||
// if (flag)
|
||||
// {
|
||||
// if (저고점_5["전저가"] > 저고점_5["전전저가"])
|
||||
// {
|
||||
// sellFlag = true;
|
||||
// }
|
||||
// if (저고점_5["전전저가"] < 현재봉3)
|
||||
// {
|
||||
// sellFlag = true;
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// if (저고점_5["전고가"] < 현재봉3)
|
||||
// {
|
||||
// sellFlag = true;
|
||||
// }
|
||||
// if (저고점_5["전저가"] < 저고점_5["전전저가"])
|
||||
// {
|
||||
// buyItem["Flag"] = true;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
if (sellFlag)
|
||||
{
|
||||
@@ -1128,6 +1333,8 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
저고점["tempLowVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() &&
|
||||
((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempHighVal"] >= 120 * (int)type)
|
||||
{
|
||||
저고점["tempLow4Val"] = 저고점["tempLow3Val"];
|
||||
저고점["tempLow3Val"] = 저고점["tempLow2Val"];
|
||||
저고점["tempLow2Val"] = 저고점["tempLowVal"];
|
||||
저고점["tempLowVal"] = ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds();
|
||||
저고점["switchLowVal"] = 저고점["전전전전저가"];
|
||||
@@ -1149,6 +1356,8 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
저고점["Type"] = 0;
|
||||
저고점["전전전전고가"] = 저고점["switchLowVal"];
|
||||
저고점["tempHighVal"] = 저고점["tempHigh2Val"];
|
||||
저고점["tempHigh2Val"] = 저고점["tempHigh3Val"];
|
||||
저고점["tempHigh3Val"] = 저고점["tempHigh4Val"];
|
||||
|
||||
if (저고점["전저가"] > 전전봉3)
|
||||
저고점["전저가"] = 전전봉3;
|
||||
@@ -1158,7 +1367,9 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
if (전전봉3 > 전봉3 && 전전봉3 > 전전전봉3 &&
|
||||
저고점["tempHighVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() &&
|
||||
((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempLowVal"] >= 120 * (int)type)
|
||||
{
|
||||
{
|
||||
저고점["tempHigh4Val"] = 저고점["tempHigh3Val"];
|
||||
저고점["tempHigh3Val"] = 저고점["tempHigh2Val"];
|
||||
저고점["tempHigh2Val"] = 저고점["tempHighVal"];
|
||||
저고점["tempHighVal"] = ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds();
|
||||
저고점["switchHighVal"] = 저고점["전전전전고가"];
|
||||
@@ -1179,6 +1390,8 @@ namespace BitgetAPI.IndicatorConditionSetup
|
||||
저고점["전전전전저가"] = 저고점["switchHighVal"];
|
||||
저고점["Type"] = 1;
|
||||
저고점["tempLowVal"] = 저고점["tempLow2Val"];
|
||||
저고점["tempLow2Val"] = 저고점["tempLow3Val"];
|
||||
저고점["tempLow3Val"] = 저고점["tempLow4Val"];
|
||||
|
||||
if (저고점["전고가"] < 전전봉3)
|
||||
저고점["전고가"] = 전전봉3;
|
||||
|
||||
Reference in New Issue
Block a user