diff --git a/Million Prototype/Form1.cs b/Million Prototype/Form1.cs index d31d5d3..0e05156 100644 --- a/Million Prototype/Form1.cs +++ b/Million Prototype/Form1.cs @@ -10,6 +10,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using static Million.CommonProperty; namespace Million_Prototype { @@ -36,10 +37,44 @@ namespace Million_Prototype sw.Restart(); var data = uApi.GetMarketDatas(); //전체 목록 var krwList = data.FindAll(x => x.Payment.Contains("KRW")); //한화 목록 - List> candledataList = new List>(); + + List dataList = new List(); + + setCandleDataList(dataList, krwList); + + //최초 데이터 전체 저장 + //4시간, 1분 + var dateTime = DateTime.Now; + + //4시간 가져오기 + foreach(var krw in dataList) + { + krw.CandleDataLists_Im= uApi.GetCandleStics(krw.ConGoodsData.CodeFullName, MCandleTimeType.H4, dateTime); + } + + /* + //1분 가져오기 + foreach (var krw in dataList) + { + var startDateTime = dateTime; + var endDateTime = krw.CandleDataLists_4H.Last().DateTime; + do + { + krw.CandleDataLists_Im.AddRange(uApi.GetCandleStics(krw.ConGoodsData.CodeFullName, MCandleTimeType.M1, dateTime)); + dateTime = krw.CandleDataLists_Im.Last().DateTime; + } + while (endDateTime < dateTime); + }*/ + + //볼린저 계산 + + //일목균형표 계산 + + + + var test = krwList.Select(t => t.CodeFullName).ToList(); - //var 현재가 = uApi.GetOrderBookList(test);GetTickerList var 현재가 = uApi.GetTickerList(test); @@ -55,5 +90,17 @@ namespace Million_Prototype 현재가.ToString(); } + + public void setCandleDataList(List dataList, List marketDataList) + { + foreach(var marketData in marketDataList) + { + dataList.Add(new CandleDataList() + { + ConGoodsData = marketData, + }); + } + + } } } diff --git a/Million/Data/CandleData.cs b/Million/Data/CandleData.cs index 95d24e6..62205e7 100644 --- a/Million/Data/CandleData.cs +++ b/Million/Data/CandleData.cs @@ -20,6 +20,17 @@ namespace Million.Data public int CandleTimeType { get; set; } + + //이평선 40, 지수 5,10 + public double MovingAverage40; + //볼 40-2, 40-1 + public double Bol40_2; + public double Bol40_1; + //일목 선행1,2 + public double ichi1; + public double ichi2; + + public CandleType CandleType { get; set; } = CandleType.None; /// diff --git a/Million/Indicators/Bollinger Bands.cs b/Million/Indicators/Bollinger Bands.cs index 5bab7f7..1e6bb4e 100644 --- a/Million/Indicators/Bollinger Bands.cs +++ b/Million/Indicators/Bollinger Bands.cs @@ -1,4 +1,5 @@ -using System; +using Million.Data; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -41,5 +42,33 @@ namespace Million.Indicators } } } + public static void AddMovingAndBollingerBands(List data, int period, int factor,bool mAverAdd = false) + { + double total_average = 0; + + for (int i = 0; i < data.Count(); i++) + { + total_average += data[i].EndValue; + + if (i >= period - 1) + { + double total_bollinger = 0; + double average = total_average / period; + if (mAverAdd) + { + data[i].MovingAverage40 = average; + } + + for (int x = i; x > (i - period); x--) + { + total_bollinger += Math.Pow(data[x].EndValue - average, 2); + } + + double stdev = Math.Sqrt(total_bollinger / period); + data[i].Bol40_2 = average + factor * stdev; + total_average -= data[i - period + 1].EndValue; + } + } + } } }