OverStatus 순서 변경
This commit is contained in:
@@ -164,9 +164,9 @@ namespace Million_Prototype
|
||||
{
|
||||
realTimeMsg.StartGetRealTimeTicker(null);
|
||||
}
|
||||
|
||||
|
||||
Thread.Sleep(500);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -176,14 +176,93 @@ namespace Million_Prototype
|
||||
DbServiceFunctions.GetMarketTable_FromDB("Upbit");
|
||||
var tableList = CommonProperty.selectedMarketOfPlaceList;
|
||||
|
||||
var selectTable = tableList.FirstOrDefault(t => t.CodeFullName == "KRW-BTC");
|
||||
if (selectTable != null)
|
||||
foreach (var marketData in tableList)
|
||||
{
|
||||
var startDate = new DateTime(2000, 1, 1);
|
||||
var candleData = DbServiceFunctions.GetCandleData(selectTable, startDate,DateTime.Now, MCandleTimeType.M1);
|
||||
var temp = new List<CandleDataList>();
|
||||
temp.Add(candleData);
|
||||
var returndata = ValidationCheckManager.ValidateCandleDataList(temp, MCandleTimeType.M1);
|
||||
|
||||
|
||||
var buyCandleList = new List<CandleDataList>();
|
||||
if (marketData != null)
|
||||
{
|
||||
var startDate = new DateTime(2000, 1, 1);
|
||||
var candleData = DbServiceFunctions.GetCandleData(marketData, startDate, DateTime.Now, MCandleTimeType.H1);
|
||||
var candleDataM1 = DbServiceFunctions.GetCandleData(marketData, startDate, DateTime.Now, MCandleTimeType.M1);
|
||||
var temp = new List<CandleDataList>();
|
||||
temp.Add(candleData);
|
||||
//var returndata = ValidationCheckManager.ValidateCandleDataList(temp, MCandleTimeType.M1);
|
||||
var splitData = ValidationCheckManager.SplitValidationCandleDataList(candleData.CandleDataLists_Im, MCandleTimeType.H1);
|
||||
|
||||
var buyData = new CandleDataList();
|
||||
buyData.ConGoodsData = marketData;
|
||||
buyData.CandleDataLists_Im = new List<CandleData>();
|
||||
|
||||
foreach (var split in splitData)
|
||||
{
|
||||
Bollinger_Bands.AddMovingAndBollingerBands(split, 40, 1);
|
||||
Ichimoku_cloud.excute(split);
|
||||
|
||||
var overData = split.FindAll(x => (int)x.IndicatorDic["Bol401"].overStatus > -2 && x.IndicatorDic["Bol401"].overStatus != OverStatus.None
|
||||
&& ((IchimokData)x.IndicatorDic["Ich"]).value < x.StartValue && ((IchimokData)x.IndicatorDic["Ich"]).value2 < x.StartValue);
|
||||
|
||||
foreach (var item in overData)
|
||||
{
|
||||
var hData = item.DateTime.AddHours(1);
|
||||
var sDate = item.DateTime.AddMinutes(-80);
|
||||
var mCandleList = candleDataM1.CandleDataLists_Im.Where(t => t.DateTime >= sDate && t.DateTime < hData).ToList();
|
||||
if (mCandleList == null)
|
||||
continue;
|
||||
|
||||
Ichimoku_cloud.excute(mCandleList);
|
||||
mCandleList = mCandleList.Where(t => t.DateTime >= item.DateTime && t.DateTime < hData).ToList();
|
||||
|
||||
var overIchCandleList = new List<CandleData>();
|
||||
//1분동 선행1,2 값보다 시가가 위인 캔들 구하기
|
||||
foreach (var mCandle in mCandleList)
|
||||
{
|
||||
if(!mCandle.IndicatorDic.ContainsKey("Ich"))
|
||||
{
|
||||
mCandle.ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
var ichi = (IchimokData)mCandle.IndicatorDic["Ich"];
|
||||
if(ichi.value < mCandle.StartValue && ichi.value2 < mCandle.StartValue)
|
||||
{
|
||||
overIchCandleList.Add(mCandle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//var overIchCandleList = mCandleList.Where(t => t.IndicatorDic != null && t.IndicatorDic.ContainsKey("Ich") && ((IchimokData)t.IndicatorDic["Ich"]).value < t.StartValue && ((IchimokData)t.IndicatorDic["Ich"]).value2 < t.StartValue).ToList();
|
||||
// if (overIchCandleList == null)
|
||||
// continue;
|
||||
|
||||
var overlap = item.IndicatorDic["Bol401"].overlapValue;
|
||||
for (var i = 0; i < overIchCandleList.Count; i++)
|
||||
{
|
||||
var m = overIchCandleList[i];
|
||||
bool openChecker = m.StartValue > overlap;
|
||||
bool highChecker = m.HighValue > overlap;
|
||||
bool lowChecker = m.LowValue > overlap;
|
||||
|
||||
var flag = Indicator_over.None;
|
||||
if (i != 0)
|
||||
{
|
||||
flag = overIchCandleList[i - 1].EndValue > overlap ? Indicator_over.Over : Indicator_over.Under;
|
||||
}
|
||||
var checker = IndicatorData.OverChecker(openChecker, highChecker, lowChecker, m.EndValue > overlap ? Indicator_over.Over : Indicator_over.Under, flag);
|
||||
|
||||
if (checker != OverStatus.None && (int)checker > -2)
|
||||
{
|
||||
buyData.CandleDataLists_Im.Add(m);
|
||||
}
|
||||
}
|
||||
|
||||
buyData.ToString();
|
||||
}
|
||||
}
|
||||
buyCandleList.Add(buyData);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,15 +173,15 @@ namespace Million.Data
|
||||
public enum OverStatus
|
||||
{
|
||||
Under=-4,//하양돌파
|
||||
UnderCancle,//하양돌파 후 올라감
|
||||
OverUnder,//시가 상향돌파 후 하양돌파
|
||||
UnderOverCancle,//시가하양돌파후 상향돌파 취소
|
||||
UnderCancle,//하양돌파 후 올라감
|
||||
None = 0,
|
||||
OverCancle,//상향돌파후 내려옴
|
||||
OverUnderCancle, //시가상향돌파 후 하양돌파취소
|
||||
UnderOver,//시가 하양돌파후 상향돌파
|
||||
OverCancle,//상향돌파후 내려옴
|
||||
Over,//Over 상향돌파
|
||||
|
||||
//돌파 over, overcancle, UnderOver, OverUnderCancle, UnderOverCancle, OverUnder
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user