private void btnLoadData_Click(object sender, EventArgs e) { //string itemCode = ItemCodeSet.GetItemCode(ItemCode.선물_해외_WTI); string itemCode = ItemCodeSet.GetItemCode(ItemCode.지수_국내_코스피200); var list = PPContext.Instance.ClientContext.GetSourceData( itemCode , Lib.Base.Enums.TimeIntervalEnum.Day , null , tbDT_E.Text , 120); int round = ItemCodeUtil.GetItemCodeRoundNum(itemCode); List <S_CandleItemData> sourceDatas = new List <S_CandleItemData>(); foreach (var m in list) { S_CandleItemData sourceData = new S_CandleItemData(itemCode , (Single)Math.Round(m.OpenVal, round) , (Single)Math.Round(m.HighVal, round) , (Single)Math.Round(m.LowVal, round) , (Single)Math.Round(m.CloseVal, round) , m.Volume , m.DT ); sourceDatas.Add(sourceData); } chartCS1.LoadData(itemCode, sourceDatas); }
private void FillRenkoChart(List <S_CandleItemData> listCandles, double basePrice) { if (listCandles == null) { return; } int blockSize = 30; chart2.Series[0].Points.Clear(); int candleCount = 0; S_CandleItemData bdc = null; foreach (var dc in listCandles) { int idx = -1; if (bdc != null) { int renko = PPUtils.GetRenko(dc, bdc, basePrice); if (renko != 0) { int r = Math.Abs(renko); for (int i = 0; i < r; i++) { if (renko > 0) { idx = chart2.Series[0].Points.AddXY(dc.DTime, 1, 0, 0, 1); } else { idx = chart2.Series[0].Points.AddXY(dc.DTime, 1, 0, 1, 0); } chart2.Series[0].Points[idx].Tag = dc; candleCount++; } } } bdc = dc; } var chartArea = chart2.ChartAreas[chart2.Series[0].ChartArea]; chartArea.AxisX.Minimum = 0; chartArea.AxisX.Maximum = candleCount + 1; chartArea.CursorX.AutoScroll = true; chartArea.AxisX.ScaleView.Zoomable = true; chartArea.AxisX.ScaleView.SizeType = DateTimeIntervalType.Number; int position = candleCount - blockSize; int size = candleCount; chartArea.AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.All; chartArea.AxisX.ScaleView.SmallScrollSize = 10; chartArea.AxisY2.Maximum = 1.0; chartArea.AxisY2.Minimum = 0.0; chartArea.AxisY2.Enabled = AxisEnabled.False; chartArea.AxisX.ScaleView.Zoom(position, size + 1); }
public static CandlePatternTypeEnum GetCandlePatternType(S_CandleItemData p, S_CandleItemData p1, S_CandleItemData n1) { CandlePatternTypeEnum type = CandlePatternTypeEnum.Unknown; double minPPrice = p.LowPrice; double maxPPrice = p.HighPrice; double minNPrice = n1.LowPrice; double maxNPrice = n1.HighPrice; double pDiff = (maxPPrice - minPPrice); double sUPrice = p.ClosePrice + (pDiff * 3.0); double sDPrice = p.ClosePrice - (pDiff * 3.0); double mUPrice = p.ClosePrice + (pDiff * 2.0); double mDPrice = p.ClosePrice - (pDiff * 2.0); double wUPrice = p.ClosePrice + (pDiff * 1.0); double wDPrice = p.ClosePrice - (pDiff * 1.0); if (maxNPrice > sUPrice && minNPrice < sDPrice) { type = CandlePatternTypeEnum.StrongSide; } else if (maxNPrice > mUPrice && minNPrice < mDPrice) { type = CandlePatternTypeEnum.NormalSide; } else if (maxNPrice > wUPrice && minNPrice < wDPrice) { type = CandlePatternTypeEnum.WeakSide; } else if (maxNPrice > sUPrice) { type = CandlePatternTypeEnum.StrongUp; } else if (minNPrice < sDPrice) { type = CandlePatternTypeEnum.StrongDown; } else if (maxNPrice > mUPrice) { type = CandlePatternTypeEnum.Up; } else if (minNPrice < mDPrice) { type = CandlePatternTypeEnum.Down; } else if (maxNPrice > wUPrice) { type = CandlePatternTypeEnum.WeakUp; } else if (minNPrice < wDPrice) { type = CandlePatternTypeEnum.WeakDown; } return(type); }
protected override void query_ReceiveData(string szTrCode) { PPContext.Instance.ClientContext.ClearSourceData(ItemCode, TimeInterval); Task.Factory.StartNew(() => { int blockCnt = Convert.ToInt32(query.GetBlockCount(outBlock1)); int round = ItemCodeUtil.GetItemCodeRoundNum(ItemCode); for (int idx = 0; idx < blockCnt; idx++) { string date = query.GetFieldData(outBlock1, "date", idx); string time = "000000"; string open = query.GetFieldData(outBlock1, "open", idx); string high = query.GetFieldData(outBlock1, "high", idx); string low = query.GetFieldData(outBlock1, "low", idx); string close = query.GetFieldData(outBlock1, "close", idx); //string jdiff_vol = query.GetFieldData(outBlock1, "jdiff_vol", idx); //string value = query.GetFieldData(outBlock1, "value", idx); if (date.Length == 0) { continue; } /* * OM.Lib.Entity.LitePurushaPrakriti data = new Lib.Entity.LitePurushaPrakriti(); * string format = "yyyyMMdd" + (time.Length > 0 ? "HHmmss" : ""); * var dt = DateTime.ParseExact(date + time, format, CultureInfo.InvariantCulture); * data.DT = dt; * data.Item = ItemCode; * data.OpenVal = Convert.ToSingle(open); * data.HighVal = Convert.ToSingle(high); * data.LowVal = Convert.ToSingle(low); * data.CloseVal = Convert.ToSingle(close); * data.Volume = 0; * data.Interval = (int)TimeInterval; * PPContext.Instance.ClientContext.SetSourceData( * ItemCode * , TimeInterval * , data); */ string format = "yyyyMMdd" + (time.Length > 0 ? "HHmmss" : ""); var dt = DateTime.ParseExact(date + time, format, CultureInfo.InvariantCulture); S_CandleItemData data = new S_CandleItemData(); data.DTime = dt; data.ItemCode = ItemCode; data.OpenPrice = (Single)Math.Round(Convert.ToDouble(open), round); data.HighPrice = (Single)Math.Round(Convert.ToDouble(high), round); data.LowPrice = (Single)Math.Round(Convert.ToDouble(low), round); data.ClosePrice = (Single)Math.Round(Convert.ToDouble(close), round); data.Volume = 0; PPContext.Instance.ClientContext.SetCandleSourceData(ItemCode, TimeInterval, data); OnApiLog($"date : {date} time : {time} opne : {open} high : {high} low : {low} close : {close} "); } OnApiLog("Api_WorldFutureDWM ::: query_ReceiveData"); }); }
private void btnLoadData_Click(object sender, EventArgs e) { string itemCode = ItemCodeSet.GetItemCode(ItemCode.물_해외_WTI); var list = PPContext.Instance.ClientContext.GetSourceData( itemCode , Lib.Base.Enums.TimeIntervalEnum.Day , null , tbDT_E.Text , 120); int round = ItemCodeUtil.GetItemCodeRoundNum(itemCode); List <S_CandleItemData> sourceDatas = new List <S_CandleItemData>(); List <S_CandleItemData> sourceDatas2 = new List <S_CandleItemData>(); List <T_MirrorItemData> transformedDatas = new List <T_MirrorItemData>(); foreach (var m in list) { S_CandleItemData sourceData = new S_CandleItemData( itemCode , (Single)Math.Round(m.OpenVal, round) , (Single)Math.Round(m.HighVal, round) , (Single)Math.Round(m.LowVal, round) , (Single)Math.Round(m.CloseVal, round) , m.Volume , m.DT ); sourceDatas.Add(sourceData); } chartCS1.LoadData(itemCode, sourceDatas); foreach (var m in sourceDatas) { T_MirrorItemData tData = new T_MirrorItemData(m, sourceDatas); tData.Transform(); transformedDatas.Add(tData); } foreach (var m in transformedDatas) { S_CandleItemData sourceData = new S_CandleItemData( itemCode , m.T_OpenPrice , m.T_HighPrice , m.T_LowPrice , m.T_ClosePrice , m.Volume , m.DTime ); sourceDatas2.Add(sourceData); } chartCS2.LoadData(itemCode, sourceDatas2); }
protected override void query_ReceiveData(string szTrCode) { Task.Factory.StartNew(() => { try { int blockCnt = Convert.ToInt32(query.GetBlockCount(outBlock1)); int round = ItemCodeUtil.GetItemCodeRoundNum(ItemCode); for (int idx = 0; idx < blockCnt; idx++) { string date = query.GetFieldData(outBlock1, "date", idx); string time = query.GetFieldData(outBlock1, "time", idx); string open = query.GetFieldData(outBlock1, "open", idx); string high = query.GetFieldData(outBlock1, "high", idx); string low = query.GetFieldData(outBlock1, "low", idx); string close = query.GetFieldData(outBlock1, "price", idx); string volume = query.GetFieldData(outBlock1, "volume", idx); if (date.Length == 0) { continue; } //string format = "yyyyMMdd" + (time.Length > 0 ? "HHmmss" : ""); string format = "yyyyMMdd"; var dt = DateTime.ParseExact(date, format, CultureInfo.InvariantCulture); S_CandleItemData data = new S_CandleItemData(); data.DTime = dt; data.ItemCode = ItemCode; data.OpenPrice = (Single)Math.Round(Convert.ToDouble(open) * 100, round); data.HighPrice = (Single)Math.Round(Convert.ToDouble(high) * 100, round); data.LowPrice = (Single)Math.Round(Convert.ToDouble(low) * 100, round); data.ClosePrice = (Single)Math.Round(Convert.ToDouble(close) * 100, round); data.Volume = Convert.ToSingle(volume); PPContext.Instance.ClientContext.SetCandleSourceData(ItemCode, TimeInterval, data); OnApiLog($"date : {date} time : {time} opne : {open} high : {high} low : {low} close : {close} "); } OnApiLog("Api_WorldIndex ::: query_ReceiveData"); } catch (Exception ex) { OnApiLog("Error ::: " + ex.Message); } finally { manualEvent.Set(); } }); }
private void btnLoadData_Click(object sender, EventArgs e) { string itemCode = ItemCodeSet.GetItemCode(ItemCode.지수_국내_코스피200); var list = PPContext.Instance.ClientContext.GetSourceData( itemCode , Lib.Base.Enums.TimeIntervalEnum.Day , null , tbDT_E.Text , 120); int round = ItemCodeUtil.GetItemCodeRoundNum(itemCode); List <S_CandleItemData> sourceDatas = new List <S_CandleItemData>(); List <T_AtomItemData> transformedDatas = new List <T_AtomItemData>(); List <T_QuantumItemData> transformedDatas2 = new List <T_QuantumItemData>(); foreach (var m in list) { S_CandleItemData sourceData = new S_CandleItemData( itemCode , (Single)Math.Round(m.OpenVal, round) , (Single)Math.Round(m.HighVal, round) , (Single)Math.Round(m.LowVal, round) , (Single)Math.Round(m.CloseVal, round) , m.Volume , m.DT ); sourceDatas.Add(sourceData); } int itemsCnt = 7; for (int i = itemsCnt; i < sourceDatas.Count; i++) { T_AtomItemData transData = new T_AtomItemData(sourceDatas[i], sourceDatas.GetRange(i - itemsCnt, itemsCnt)); transData.Transform(); transformedDatas.Add(transData); } chartAT1.LoadData(itemCode, transformedDatas); itemsCnt = 7; for (int i = itemsCnt; i < sourceDatas.Count; i++) { T_QuantumItemData transData = new T_QuantumItemData(sourceDatas[i], sourceDatas.GetRange(i - itemsCnt, itemsCnt)); transData.Transform(); transformedDatas2.Add(transData); } chartQL1.LoadData(itemCode, transformedDatas2); }
private void btnLoadData_Click(object sender, EventArgs e) { string itemCode = ItemCodeSet.GetItemCode(ItemCode.지수_국내_코스피200); var list = PPContext.Instance.ClientContext.GetSourceData( itemCode , Lib.Base.Enums.TimeIntervalEnum.Day , null , tbDT_E.Text , 120); int round = ItemCodeUtil.GetItemCodeRoundNum(itemCode); List <S_CandleItemData> sourceDatas = new List <S_CandleItemData>(); List <T_QuarkItemData> transformedDatas = new List <T_QuarkItemData>(); foreach (var m in list) { S_CandleItemData sourceData = new S_CandleItemData( itemCode , (Single)Math.Round(m.OpenVal, round) , (Single)Math.Round(m.HighVal, round) , (Single)Math.Round(m.LowVal, round) , (Single)Math.Round(m.CloseVal, round) , m.Volume , m.DT ); sourceDatas.Add(sourceData); } chartCS1.LoadData(itemCode, sourceDatas); DateTime?dtime = null; foreach (var m in sourceDatas.OrderByDescending(t => t.DTime)) { if (dtime != null && dtime.Value <= m.DTime) { continue; } T_QuarkItemData tData = new T_QuarkItemData(m, sourceDatas); tData.Transform(); transformedDatas.Add(tData); dtime = tData.DTimeS; } chartWX1.LoadData(itemCode, transformedDatas.OrderBy(t => t.DTime).ToList()); }
protected override void query_ReceiveData(string szTrCode) { try { int blockCnt = Convert.ToInt32(query.GetBlockCount(outBlock1)); int round = ItemCodeUtil.GetItemCodeRoundNum(ItemCode); for (int idx = 0; idx < blockCnt; idx++) { string date = query.GetFieldData(outBlock1, "date", idx); string time = query.GetFieldData(outBlock1, "time", idx); string open = query.GetFieldData(outBlock1, "open", idx); string high = query.GetFieldData(outBlock1, "high", idx); string low = query.GetFieldData(outBlock1, "low", idx); string close = query.GetFieldData(outBlock1, "close", idx); string jdiff_vol = query.GetFieldData(outBlock1, "jdiff_vol", idx); string volume = query.GetFieldData(outBlock1, "value", idx); if (date.Length == 0) { continue; } string format = "yyyyMMdd" + (time.Length > 0 ? "HHmmss" : ""); var dt = DateTime.ParseExact(date + time, format, CultureInfo.InvariantCulture); S_CandleItemData data = new S_CandleItemData(); data.DTime = dt; data.ItemCode = ItemCode; data.OpenPrice = (Single)Math.Round(Convert.ToDouble(open), round); data.HighPrice = (Single)Math.Round(Convert.ToDouble(high), round); data.LowPrice = (Single)Math.Round(Convert.ToDouble(low), round); data.ClosePrice = (Single)Math.Round(Convert.ToDouble(close), round); data.Volume = Convert.ToSingle(volume); returnList.Add(data); } OnApiLog("Api_Jongmok ::: query_ReceiveData"); } catch (Exception ex) { OnApiLog("Error ::: " + ex.Message); } finally { manualEvent.Set(); } }
public static CandleSizeTypeEnum GetCandleTotalSizeType(S_CandleItemData p2, S_CandleItemData p1) { CandleSizeTypeEnum type = CandleSizeTypeEnum.NoMatter; if (p2.TotalLength < p1.TotalLength) { type = CandleSizeTypeEnum.Big; } else if (p2.TotalLength > p1.TotalLength) { type = CandleSizeTypeEnum.Small; } return(type); }
private List <S_CandleItemData> FindCandles(S_CandleItemData candle) { List <S_CandleItemData> sourcesList = ChartDataSub; List <S_CandleItemData> findLists = new List <S_CandleItemData>(); var diffDT = candle.DTime.AddMinutes(60 * (int)TimeInterval); //if (TimeInterval == Lib.Base.Enums.TimeIntervalEnum.Day) // diffDT = candle.DTime.AddMinutes(720); //else if (TimeInterval == Lib.Base.Enums.TimeIntervalEnum.Minute_720) // diffDT = candle.DTime.AddMinutes(720); //else if (TimeInterval == Lib.Base.Enums.TimeIntervalEnum.Minute_720) // diffDT = candle.DTime.AddMinutes(720); //else if (TimeInterval == Lib.Base.Enums.TimeIntervalEnum.Minute_480) // diffDT = candle.DTime.AddMinutes(720); //else if (TimeInterval == Lib.Base.Enums.TimeIntervalEnum.Minute_360) // diffDT = candle.DTime.AddMinutes(720); //else if (TimeInterval == Lib.Base.Enums.TimeIntervalEnum.Minute_300) // diffDT = candle.DTime.AddMinutes(720); //else if (TimeInterval == Lib.Base.Enums.TimeIntervalEnum.Minute_240) // diffDT = candle.DTime.AddMinutes(720); //else if (TimeInterval == Lib.Base.Enums.TimeIntervalEnum.Minute_180) // diffDT = candle.DTime.AddMinutes(720); //else if (TimeInterval == Lib.Base.Enums.TimeIntervalEnum.Minute_120) // diffDT = candle.DTime.AddMinutes(120); //else if (TimeInterval == Lib.Base.Enums.TimeIntervalEnum.Minute_60) // diffDT = candle.DTime.AddMinutes(60); int idx = sourcesList.FindIndex(t => t.DTime >= diffDT); if (idx > DisplaySubItemCount) { int findIndex = idx; int findLength = idx + DisplaySubItemCount; for (int i = findIndex; i < findLength; i++) { if (sourcesList.Count > i) { findLists.Add(sourcesList[i]); } } } return(findLists); }
private List <S_CandleItemData> findCandles(S_CandleItemData candle, int findMinute, int findCount) { List <S_CandleItemData> sourcesList = null; List <S_CandleItemData> findLists = new List <S_CandleItemData>(); if (findMinute == 60) { sourcesList = listCandles60; } else if (findMinute == 120) { sourcesList = listCandles120; } else if (findMinute == 180) { sourcesList = listCandles180; } else if (findMinute == 360) { sourcesList = listCandles360; } else if (findMinute == 720) { sourcesList = listCandles720; } int idx = sourcesList.FindIndex(t => t.DTime >= candle.DTime); if (idx > findCount) { int findIndex = idx; int findLength = idx + findCount; for (int i = findIndex; i < findLength; i++) { if (sourcesList.Count > i) { findLists.Add(sourcesList[i]); } } } //findLists.Reverse(); return(findLists); }
private void BindData(int cnt, ReverseCandleChart chart) { string itemCode = ItemCodeSet.GetItemCode(ItemCode.물_해외_WTI); int round = ItemCodeUtil.GetItemCodeRoundNum(itemCode); var list = PPContext.Instance.ClientContext.GetSourceData( itemCode , Lib.Base.Enums.TimeIntervalEnum.Day , null , tbDT_E.Text , cnt); List <S_CandleItemData> sourceDatas = new List <S_CandleItemData>(); List <S_CandleItemData> reverseDatas = new List <S_CandleItemData>(); foreach (var m in list) { S_CandleItemData sourceData = new S_CandleItemData( itemCode , (Single)Math.Round(m.OpenVal, round) , (Single)Math.Round(m.HighVal, round) , (Single)Math.Round(m.LowVal, round) , (Single)Math.Round(m.CloseVal, round) , m.Volume , m.DT ); sourceDatas.Add(sourceData); } for (int i = 0, j = sourceDatas.Count - 1; i < sourceDatas.Count; i++, j--) { S_CandleItemData reverseData = new S_CandleItemData( itemCode , sourceDatas[j].ClosePrice , sourceDatas[j].HighPrice , sourceDatas[j].LowPrice , sourceDatas[j].OpenPrice , 0 , sourceDatas[i].DTime ); reverseDatas.Add(reverseData); } chart.LoadData(itemCode, sourceDatas, reverseDatas); }
public void MoveView(S_CandleItemData data) { List <S_CandleItemData> viewLists = null; int maxDisplayIndex = 0; int minDisplayIndex = 0; foreach (var m in ChartData) { if (m == data) { break; } maxDisplayIndex++; } int trackView = trackBar.Value; int displayItemCount = DisplayPointCount * trackView; minDisplayIndex = (maxDisplayIndex - displayItemCount); if (minDisplayIndex < 0) { minDisplayIndex = 0; } int displayCnt = (ChartData.Count - minDisplayIndex) < displayItemCount ? (ChartData.Count - minDisplayIndex) : displayItemCount; viewLists = ChartData.GetRange(minDisplayIndex, displayCnt); chart.ChartAreas[0].AxisX.Maximum = maxDisplayIndex + 7; chart.ChartAreas[0].AxisX.Minimum = minDisplayIndex - 1; double maxPrice = viewLists.Max(m => m.HighPrice); double minPrice = viewLists.Min(m => m.LowPrice); maxPrice = maxPrice + SpaceMaxMin; minPrice = minPrice - SpaceMaxMin; chart.ChartAreas[0].AxisY2.Maximum = maxPrice; chart.ChartAreas[0].AxisY2.Minimum = minPrice; chart.Update(); }
public void SummaryPrice() { if (ChartData != null && ChartData.Count == 1) { S_CandleItemData data = ChartData[0]; double hPrice = data.PlusMinusType == PlusMinusTypeEnum.양 ? data.VikalaHighPrice : data.QuantumHighPrice; double lPrice = data.PlusMinusType == PlusMinusTypeEnum.양 ? data.QuantumLowPrice : data.VikalaLowPrice; double mPrice = data.MassPrice; double qPrice = data.TotalCenterPrice; double qhPrice = mPrice > qPrice ? mPrice : qPrice; double qlPrice = mPrice < qPrice ? mPrice : qPrice; lblH.Text = Math.Round(hPrice, RoundLength).ToString(); lblH.Visible = true; lblL.Text = Math.Round(lPrice, RoundLength).ToString(); lblL.Visible = true; lblMH.Text = Math.Round(qhPrice, RoundLength).ToString(); lblMH.Visible = true; lblML.Text = Math.Round(qlPrice, RoundLength).ToString(); lblML.Visible = true; lblHTick.Text = "0"; lblH.Visible = true; lblLTick.Text = "0"; lblL.Visible = true; lblMHTick.Text = "0"; lblMH.Visible = true; lblMLTick.Text = "0"; lblML.Visible = true; clearAnnotation(); CreateBaseLineAnnotation(hPrice, Color.Red); CreateBaseLineAnnotation(qhPrice, Color.Fuchsia); CreateBaseLineAnnotation(qlPrice, Color.Green); CreateBaseLineAnnotation(lPrice, Color.Blue); CreatePriceLineAnnotation(0); } }
private List <S_CandleItemData> FindCandles(S_CandleItemData candle) { List <S_CandleItemData> sourcesList = ChartDataSub; List <S_CandleItemData> findLists = new List <S_CandleItemData>(); int idx = sourcesList.FindIndex(t => t.DTime >= candle.DTime); if (idx > DisplaySubItemCount) { int findIndex = idx; int findLength = idx + DisplaySubItemCount; for (int i = findIndex; i < findLength; i++) { if (sourcesList.Count > i) { findLists.Add(sourcesList[i]); } } } return(findLists); }
public void DisplayChartLabel(S_CandleItemData data, Color color, string type, string title = "▼") { foreach (var p in chart.Series[0].Points) { if (p.Tag as S_CandleItemData == data) { TextAnnotation a = new TextAnnotation(); a.Font = new Font("굴림", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); a.Text = title; a.ForeColor = color; a.IsSizeAlwaysRelative = true; a.AnchorAlignment = ContentAlignment.TopCenter; a.AnchorDataPoint = p; a.Tag = type; a.AnchorOffsetY = -5; chart.Annotations.Add(a); break; } } chart.Update(); }
private void 천지인(S_CandleItemData item, DataPoint dataPoint) { try { T_SLHItemData t_SLH = new T_SLHItemData(item); t_SLH.Transform(); //dataPoint.YValues[0] = t_SLH.T_HighPrice; //dataPoint.YValues[1] = t_SLH.T_LowPrice; //dataPoint.YValues[2] = t_SLH.T_OpenPrice; //dataPoint.YValues[3] = t_SLH.T_ClosePrice; if (t_SLH.SLHType == SLHTypeEnum.천) { SetDataPointColor(dataPoint, Color.Red, Color.Red, Color.Red); } else if (t_SLH.SLHType == SLHTypeEnum.지) { SetDataPointColor(dataPoint, Color.Blue, Color.Blue, Color.Blue); } else if (t_SLH.SLHType == SLHTypeEnum.인) { SetDataPointColor(dataPoint, Color.Yellow, Color.Yellow, Color.Yellow); } else if (t_SLH.SLHType == SLHTypeEnum.무) { SetDataPointColor(dataPoint, Color.Black, Color.Black, Color.Black); } else { SetDataPointColor(dataPoint, Color.Gray, Color.Gray, Color.White); } } catch (Exception) { } }
public static CandlePattern_Two GetTwoPatternInfo(S_CandleItemData source) { var data = new Entities.CandlePattern_Two(); if (source.PreCandleItem == null) { return(data); } var p1 = source.PreCandleItem; var p0 = source; data.Item = source.ItemCode; data.PlusMinusType_P1 = Convert.ToInt32(p1.PlusMinusType).ToString(); data.PlusMinusType_P0 = Convert.ToInt32(p0.PlusMinusType).ToString(); data.CandleSpaceType_P1 = Convert.ToInt32(p1.SpaceType_C).ToString(); data.CandleSpaceType_P0 = Convert.ToInt32(p0.SpaceType_C).ToString(); var timeType = PatternUtil.GetCandleTimeType(p1, p0); data.CandleTimeType_O_P10 = Convert.ToInt32(timeType.openType).ToString(); data.CandleTimeType_C_P10 = Convert.ToInt32(timeType.closeType).ToString(); data.CandleTimeType_H_P10 = Convert.ToInt32(timeType.highType).ToString(); data.CandleTimeType_L_P10 = Convert.ToInt32(timeType.lowType).ToString(); var sizeType = PatternUtil.GetCandleBodySizeType(p1, p0); data.CandleSizeType_B_P10 = Convert.ToInt32(sizeType).ToString(); sizeType = PatternUtil.GetCandleTotalSizeType(p1, p0); data.CandleSizeType_T_P10 = Convert.ToInt32(sizeType).ToString(); data.StartDT = p1.DTime; data.EndDT = p0.DTime; return(data); }
public void GetSise(CurrentPrice price = null) { try { if (candle != null && price != null) { var nextTime = candle.DTime.AddMinutes(EnumUtil.GetIntervalValueToMinutes(ruleInfo.TimeType)); if (price.DTime < nextTime) { return; } } PurushaPrakriti pp = new PurushaPrakriti(); pp.Item = ruleInfo.Item; pp.Interval = (int)EnumUtil.GetTimeIntervalValue(ruleInfo.TimeType); pp.DisplayCount = 5; try { Entities entities = (Entities)pp.Collect(new Query("USP_PP_SIMPLE_LST")); List <PurushaPrakriti> list = entities.Cast <PurushaPrakriti>().ToList(); List <int> ticks = new List <int>(); foreach (var k in list.GetRange(1, 4)) { int tick = PriceTick.GetTickDiff(ItemCode , Convert.ToDouble(k.OpenVal) , Convert.ToDouble(k.CloseVal)); ticks.Add(tick); } int avgTick = Convert.ToInt32(ticks.Average()); if (avgTick < limitTicks) { avgTick = limitTicks; } var m = list[1]; if (candle != null) { if (candle.HighPrice > m.HighVal && candle.LowPrice < m.LowVal) { return; } int tick = PriceTick.GetTickDiff(ItemCode , Convert.ToDouble(candle.OpenPrice) , Convert.ToDouble(candle.ClosePrice)); if (tick < avgTick) { return; } } candle = new S_CandleItemData(ItemCode, m.OpenVal, m.HighVal, m.LowVal, m.CloseVal, m.Volume, m.DT); if (!ruleInfo.IsBuyDone) { InitRule(); } else { ruleInfo.IsCanRevenue = true; } } catch (Exception ex) { string err = ex.Message; } } catch (Exception) { } }
private void btnLoadData_Click(object sender, EventArgs e) { string itemCode = ItemCodeSet.GetItemCode(ItemCode.지수_국내_코스피200); var list = PPContext.Instance.ClientContext.GetSourceData( itemCode , Lib.Base.Enums.TimeIntervalEnum.Day , null , tbDT_E.Text , 120); int round = ItemCodeUtil.GetItemCodeRoundNum(itemCode); List <S_CandleItemData> sourceDatas = new List <S_CandleItemData>(); List <T_VelocityItemData> transformedDatas1 = new List <T_VelocityItemData>(); List <T_VelocityItemData> transformedDatas2 = new List <T_VelocityItemData>(); List <T_VelocityItemData> transformedDatas3 = new List <T_VelocityItemData>(); foreach (var m in list) { S_CandleItemData sourceData = new S_CandleItemData( itemCode , (Single)Math.Round(m.OpenVal, round) , (Single)Math.Round(m.HighVal, round) , (Single)Math.Round(m.LowVal, round) , (Single)Math.Round(m.CloseVal, round) , m.Volume , m.DT ); sourceDatas.Add(sourceData); } int itemsCnt = 20; for (int i = itemsCnt; i < sourceDatas.Count; i++) { T_VelocityItemData transData = new T_VelocityItemData(sourceDatas[i], sourceDatas.GetRange(i - itemsCnt, itemsCnt)); transData.Transform(); transformedDatas1.Add(transData); } itemsCnt = 10; for (int i = itemsCnt; i < sourceDatas.Count; i++) { T_VelocityItemData transData = new T_VelocityItemData(sourceDatas[i], sourceDatas.GetRange(i - itemsCnt, itemsCnt)); transData.Transform(); transformedDatas2.Add(transData); } itemsCnt = 5; for (int i = itemsCnt; i < sourceDatas.Count; i++) { T_VelocityItemData transData = new T_VelocityItemData(sourceDatas[i], sourceDatas.GetRange(i - itemsCnt, itemsCnt)); transData.Transform(); transformedDatas3.Add(transData); } for (int i = 0; i < numericUpDown1.Value; i++) { transformedDatas1.Remove(transformedDatas1.Last()); transformedDatas2.Remove(transformedDatas2.Last()); transformedDatas3.Remove(transformedDatas3.Last()); } chartVL1.LoadData(itemCode, transformedDatas1); chartVL2.LoadData(itemCode, transformedDatas2); chartVL3.LoadData(itemCode, transformedDatas3); }
private void btnLoadData_Click(object sender, EventArgs e) { TimeIntervalEnum timeInterval = TimeIntervalEnum.Day; if (radioButton1.Checked) { timeInterval = TimeIntervalEnum.Hour_01; } if (radioButton2.Checked) { timeInterval = TimeIntervalEnum.Hour_02; } if (radioButton3.Checked) { timeInterval = TimeIntervalEnum.Hour_03; } if (radioButton4.Checked) { timeInterval = TimeIntervalEnum.Day; } string itemCode = ItemCodeSet.GetItemCode(ItemCode.지수_국내_코스피200); var list = PPContext.Instance.ClientContext.GetSourceData( itemCode , timeInterval , null , tbDT_E.Text , 300); int round = ItemCodeUtil.GetItemCodeRoundNum(itemCode); List <S_CandleItemData> sourceDatas = new List <S_CandleItemData>(); foreach (var m in list) { S_CandleItemData sourceData = new S_CandleItemData( itemCode , (Single)Math.Round(m.OpenVal, round) , (Single)Math.Round(m.HighVal, round) , (Single)Math.Round(m.LowVal, round) , (Single)Math.Round(m.CloseVal, round) , m.Volume , m.DT ); sourceDatas.Add(sourceData); } int itemsCnt = 7; List <T_AtomItemData> transformedDatas = new List <T_AtomItemData>(); for (int i = itemsCnt; i <= sourceDatas.Count; i++) { T_AtomItemData transData = new T_AtomItemData(sourceDatas[i - 1], sourceDatas.GetRange(i - itemsCnt, itemsCnt)); transData.Transform(); transformedDatas.Add(transData); } chartAT1.LoadData(itemCode, transformedDatas, timeInterval); List <S_CandleItemData> sourceDatas2 = new List <S_CandleItemData>(); itemsCnt = 7; for (int i = itemsCnt; i < sourceDatas.Count; i++) { S_CandleItemData transData = new S_CandleItemData(itemCode, sourceDatas.GetRange(i - itemsCnt, itemsCnt)); sourceDatas2.Add(transData); } itemsCnt = 7; List <T_AtomItemData> transformedDatas2 = new List <T_AtomItemData>(); for (int i = itemsCnt; i <= sourceDatas2.Count; i++) { T_AtomItemData transData = new T_AtomItemData(sourceDatas2[i - 1], sourceDatas2.GetRange(i - itemsCnt, itemsCnt)); transData.Transform(); transformedDatas2.Add(transData); } chartAT2.LoadData(itemCode, transformedDatas2, timeInterval); }
private void btnFileOpen_Click(object sender, EventArgs e) { string path = Environment.CurrentDirectory; string folder = (sender as Button).Text.ToString(); string fullPath = System.IO.Path.Combine(path, "data", folder); if (!System.IO.Directory.Exists(fullPath)) { return; } var fileList = Directory.GetFiles(fullPath); foreach (var f in fileList) { TimeIntervalEnum timeIntervalEnum = TimeIntervalEnum.None; if (f.IndexOf("(720분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Hour_12; } else if (f.IndexOf("(480분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Hour_08; } else if (f.IndexOf("(360분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Hour_06; } else if (f.IndexOf("(300분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Hour_05; } else if (f.IndexOf("(240분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Hour_04; } else if (f.IndexOf("(180분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Hour_03; } else if (f.IndexOf("(120분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Hour_02; } else if (f.IndexOf("(60분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Hour_01; } else if (f.IndexOf("(일)") > -1) { timeIntervalEnum = TimeIntervalEnum.Day; } else if (f.IndexOf("(주)") > -1) { timeIntervalEnum = TimeIntervalEnum.Day; } else if (f.IndexOf("(01분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Minute_01; } else if (f.IndexOf("(05분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Minute_05; } else if (f.IndexOf("(10분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Minute_10; } else if (f.IndexOf("(30분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Minute_30; } if (timeIntervalEnum == TimeIntervalEnum.None) { continue; } List <S_CandleItemData> dummyList = new List <S_CandleItemData>(); using (var reader = new StreamReader(f)) { while (!reader.EndOfStream) { var line = reader.ReadLine(); if (line.StartsWith("[")) { continue; } string[] values = null; if (f.ToUpper().EndsWith(".TXT")) { values = line.Split("\t".ToCharArray()); } else if (f.ToUpper().EndsWith(".CSV")) { values = line.Split(','); } else { values = line.Split(','); } S_CandleItemData data = new S_CandleItemData(); if (timeIntervalEnum == TimeIntervalEnum.Day || timeIntervalEnum == TimeIntervalEnum.Week) { data.DTime = Convert.ToDateTime(values[0].Trim()); data.ItemCode = folder.ToUpper(); data.OpenPrice = Convert.ToSingle(values[1].Trim()); data.HighPrice = Convert.ToSingle(values[2].Trim()); data.LowPrice = Convert.ToSingle(values[3].Trim()); data.ClosePrice = Convert.ToSingle(values[4].Trim()); data.Volume = 0; } else { data.DTime = Convert.ToDateTime(values[0].Trim() + " " + values[1].Trim()); data.ItemCode = folder.ToUpper(); data.OpenPrice = Convert.ToSingle(values[2].Trim()); data.HighPrice = Convert.ToSingle(values[3].Trim()); data.LowPrice = Convert.ToSingle(values[4].Trim()); data.ClosePrice = Convert.ToSingle(values[5].Trim()); data.Volume = 0; } dummyList.Add(data); } } dummyList.Reverse(); foreach (var data in dummyList) { try { PPContext.Instance.ClientContext.SetCandleSourceData(data.ItemCode, timeIntervalEnum, data); LogWrite($"date : {data.DTime} opne : {data.OpenPrice} high : {data.HighPrice} low : {data.LowPrice} close : {data.ClosePrice} "); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } } } }
public static CandleForcePatternData GetForcePatternInfo(S_CandleItemData source) { var data = new Entities.CandleForcePatternData(); if (source.PreCandleItem == null) { return(data); } if (source.PreCandleItem.PreCandleItem == null) { return(data); } if (source.PreCandleItem.PreCandleItem.PreCandleItem == null) { return(data); } if (source.PreCandleItem.PreCandleItem.PreCandleItem.PreCandleItem == null) { return(data); } var p3 = source.PreCandleItem.PreCandleItem.PreCandleItem; var p2 = source.PreCandleItem.PreCandleItem; var p1 = source.PreCandleItem; var p0 = source; data.Item = source.ItemCode; data.GForceType_P3 = Convert.ToInt32(p3.GForceType).ToString(); data.GForceType_P2 = Convert.ToInt32(p2.GForceType).ToString(); data.GForceType_P1 = Convert.ToInt32(p1.GForceType).ToString(); data.GForceType_P0 = Convert.ToInt32(p0.GForceType).ToString(); data.EForceType_OC_P3 = Convert.ToInt32(p3.EForceType_OC).ToString(); data.EForceType_OC_P2 = Convert.ToInt32(p2.EForceType_OC).ToString(); data.EForceType_OC_P1 = Convert.ToInt32(p1.EForceType_OC).ToString(); data.EForceType_OC_P0 = Convert.ToInt32(p0.EForceType_OC).ToString(); data.EForceType_CC_P3 = Convert.ToInt32(p3.EForceType_CC).ToString(); data.EForceType_CC_P2 = Convert.ToInt32(p2.EForceType_CC).ToString(); data.EForceType_CC_P1 = Convert.ToInt32(p1.EForceType_CC).ToString(); data.EForceType_CC_P0 = Convert.ToInt32(p0.EForceType_CC).ToString(); data.SForceType_O_P3 = Convert.ToInt32(p3.SForceType_O).ToString(); data.SForceType_O_P2 = Convert.ToInt32(p2.SForceType_O).ToString(); data.SForceType_O_P1 = Convert.ToInt32(p1.SForceType_O).ToString(); data.SForceType_O_P0 = Convert.ToInt32(p0.SForceType_O).ToString(); data.SForceType_H_P3 = Convert.ToInt32(p3.SForceType_H).ToString(); data.SForceType_H_P2 = Convert.ToInt32(p2.SForceType_H).ToString(); data.SForceType_H_P1 = Convert.ToInt32(p1.SForceType_H).ToString(); data.SForceType_H_P0 = Convert.ToInt32(p0.SForceType_H).ToString(); data.SForceType_L_P3 = Convert.ToInt32(p3.SForceType_L).ToString(); data.SForceType_L_P2 = Convert.ToInt32(p2.SForceType_L).ToString(); data.SForceType_L_P1 = Convert.ToInt32(p1.SForceType_L).ToString(); data.SForceType_L_P0 = Convert.ToInt32(p0.SForceType_L).ToString(); data.SForceType_C_P3 = Convert.ToInt32(p3.SForceType_C).ToString(); data.SForceType_C_P2 = Convert.ToInt32(p2.SForceType_C).ToString(); data.SForceType_C_P1 = Convert.ToInt32(p1.SForceType_C).ToString(); data.SForceType_C_P0 = Convert.ToInt32(p0.SForceType_C).ToString(); data.WForceType_T_P3 = Convert.ToInt32(p3.WForceType_T).ToString(); data.WForceType_T_P2 = Convert.ToInt32(p2.WForceType_T).ToString(); data.WForceType_T_P1 = Convert.ToInt32(p1.WForceType_T).ToString(); data.WForceType_T_P0 = Convert.ToInt32(p0.WForceType_T).ToString(); data.WForceType_H_P3 = Convert.ToInt32(p3.WForceType_H).ToString(); data.WForceType_H_P2 = Convert.ToInt32(p2.WForceType_H).ToString(); data.WForceType_H_P1 = Convert.ToInt32(p1.WForceType_H).ToString(); data.WForceType_H_P0 = Convert.ToInt32(p0.WForceType_H).ToString(); data.WForceType_B_P3 = Convert.ToInt32(p3.WForceType_B).ToString(); data.WForceType_B_P2 = Convert.ToInt32(p2.WForceType_B).ToString(); data.WForceType_B_P1 = Convert.ToInt32(p1.WForceType_B).ToString(); data.WForceType_B_P0 = Convert.ToInt32(p0.WForceType_B).ToString(); data.WForceType_L_P3 = Convert.ToInt32(p3.WForceType_L).ToString(); data.WForceType_L_P2 = Convert.ToInt32(p2.WForceType_L).ToString(); data.WForceType_L_P1 = Convert.ToInt32(p1.WForceType_L).ToString(); data.WForceType_L_P0 = Convert.ToInt32(p0.WForceType_L).ToString(); data.StartDT = p0.DTime; data.EndDT = p0.DTime; return(data); }
public static (CandleTimeTypeEnum openType, CandleTimeTypeEnum closeType, CandleTimeTypeEnum highType, CandleTimeTypeEnum lowType) GetCandleTimeType(S_CandleItemData p2, S_CandleItemData p1) { CandleTimeTypeEnum openType = CandleTimeTypeEnum.무; CandleTimeTypeEnum closeType = CandleTimeTypeEnum.무; CandleTimeTypeEnum highType = CandleTimeTypeEnum.무; CandleTimeTypeEnum lowType = CandleTimeTypeEnum.무; if (p2.OpenPrice < p1.OpenPrice) { openType = CandleTimeTypeEnum.양; } else if (p2.OpenPrice > p1.OpenPrice) { openType = CandleTimeTypeEnum.음; } if (p2.ClosePrice < p1.ClosePrice) { closeType = CandleTimeTypeEnum.양; } else if (p2.ClosePrice > p1.ClosePrice) { closeType = CandleTimeTypeEnum.음; } if (p2.HighPrice < p1.HighPrice) { highType = CandleTimeTypeEnum.양; } else if (p2.HighPrice > p1.HighPrice) { highType = CandleTimeTypeEnum.음; } if (p2.ClosePrice < p1.ClosePrice) { lowType = CandleTimeTypeEnum.양; } else if (p2.ClosePrice > p1.ClosePrice) { lowType = CandleTimeTypeEnum.음; } return(openType, closeType, highType, lowType); }
//실시간 시세에 맞게 데이터 업데이트 public void SetCandleSourceDataReal(string itemCode, S_CandleItemData entity) { try { LimitedList <S_CandleItemData> list = null; TimeIntervalEnum timeInterval = TimeIntervalEnum.Day; switch (timeInterval) { case TimeIntervalEnum.Minute_01: list = PPStorage.Instance.StorageMin01[itemCode]; break; case TimeIntervalEnum.Minute_05: list = PPStorage.Instance.StorageMin05[itemCode]; break; case TimeIntervalEnum.Minute_10: list = PPStorage.Instance.StorageMin10[itemCode]; break; case TimeIntervalEnum.Minute_30: list = PPStorage.Instance.StorageMin30[itemCode]; break; case TimeIntervalEnum.Hour_01: list = PPStorage.Instance.StorageMin60[itemCode]; break; case TimeIntervalEnum.Hour_02: list = PPStorage.Instance.StorageMin120[itemCode]; break; case TimeIntervalEnum.Hour_03: list = PPStorage.Instance.StorageMin180[itemCode]; break; case TimeIntervalEnum.Hour_04: list = PPStorage.Instance.StorageMin240[itemCode]; break; case TimeIntervalEnum.Hour_05: list = PPStorage.Instance.StorageMin300[itemCode]; break; case TimeIntervalEnum.Hour_06: list = PPStorage.Instance.StorageMin360[itemCode]; break; case TimeIntervalEnum.Hour_08: list = PPStorage.Instance.StorageMin480[itemCode]; break; case TimeIntervalEnum.Hour_12: list = PPStorage.Instance.StorageMin720[itemCode]; break; case TimeIntervalEnum.Day: list = PPStorage.Instance.StorageDay[itemCode]; break; case TimeIntervalEnum.Week: list = PPStorage.Instance.StorageWeek[itemCode]; break; } if (list == null) { return; } var m = list.Find(t => t.DTime == entity.DTime); if (m != null) { m.OpenPrice = entity.OpenPrice; m.HighPrice = entity.HighPrice; m.LowPrice = entity.LowPrice; m.ClosePrice = entity.ClosePrice; } else { list.Insert(entity); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } }
private void dgvList_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex < 0 || e.RowIndex < 0) { return; } S_CandleItemData data = dgvList.Rows[e.RowIndex].Tag as S_CandleItemData; selCandleData = data; if (e.ColumnIndex == 1) { var pInfo = PatternUtil.GetTwoPatternInfo(selCandleData); pInfo.TimeInterval = Convert.ToInt32(selectedTimeInterval); pInfo.Product = selectedType; pInfo.Item = selectedItem; var pList = twoPatterns.GetMatchPatterns(pInfo); dgv.Rows.Clear(); if (pList.Count > 0) { lbNoResult.Visible = false; } else { lbNoResult.Visible = true; } foreach (var p in pList.OrderByDescending(t => t.CandlePatternType)) { int idx = dgv.Rows.Add(p.Item , getIntervalToString(p.TimeInterval) , p.EndDT.ToString("yy.MM.dd HH:mm") , Convert.ToString((CandlePatternTypeEnum)Convert.ToInt32(p.CandlePatternType))); var type = ((CandlePatternTypeEnum)Convert.ToInt32(p.CandlePatternType)); if (type == CandlePatternTypeEnum.Up) { dgv.Rows[idx].Cells[3].Style.ForeColor = Color.Red; } else if (type == CandlePatternTypeEnum.Down) { dgv.Rows[idx].Cells[3].Style.ForeColor = Color.Blue; } else if (type == CandlePatternTypeEnum.StrongUp) { dgv.Rows[idx].Cells[3].Style.ForeColor = Color.DarkRed; } else if (type == CandlePatternTypeEnum.StrongDown) { dgv.Rows[idx].Cells[3].Style.ForeColor = Color.DarkBlue; } dgv.Rows[idx].Tag = p; } } if (e.ColumnIndex == 2) { var pInfo = PatternUtil.GetThreePatternInfo(selCandleData); pInfo.TimeInterval = Convert.ToInt32(selectedTimeInterval); pInfo.Product = selectedType; pInfo.Item = selectedItem; var pList = threePatterns.GetMatchPatterns(pInfo); dgv.Rows.Clear(); if (pList.Count > 0) { lbNoResult.Visible = false; } else { lbNoResult.Visible = true; } foreach (var p in pList.OrderByDescending(t => t.CandlePatternType)) { int idx = dgv.Rows.Add(p.Item , getIntervalToString(p.TimeInterval) , p.EndDT.ToString("yy.MM.dd HH:mm") , Convert.ToString((CandlePatternTypeEnum)Convert.ToInt32(p.CandlePatternType))); var type = ((CandlePatternTypeEnum)Convert.ToInt32(p.CandlePatternType)); if (type == CandlePatternTypeEnum.Up) { dgv.Rows[idx].Cells[3].Style.ForeColor = Color.Red; } else if (type == CandlePatternTypeEnum.Down) { dgv.Rows[idx].Cells[3].Style.ForeColor = Color.Blue; } else if (type == CandlePatternTypeEnum.StrongUp) { dgv.Rows[idx].Cells[3].Style.ForeColor = Color.DarkRed; } else if (type == CandlePatternTypeEnum.StrongDown) { dgv.Rows[idx].Cells[3].Style.ForeColor = Color.DarkBlue; } dgv.Rows[idx].Tag = p; } } if (e.ColumnIndex == 3) { var pInfo = PatternUtil.GetFourPatternInfo(selCandleData); pInfo.TimeInterval = Convert.ToInt32(selectedTimeInterval); pInfo.Product = selectedType; pInfo.Item = selectedItem; var pList = fourPatterns.GetMatchPatterns(pInfo); dgv.Rows.Clear(); if (pList.Count > 0) { lbNoResult.Visible = false; } else { lbNoResult.Visible = true; } foreach (var p in pList.OrderByDescending(t => t.CandlePatternType)) { int idx = dgv.Rows.Add(p.Item , getIntervalToString(p.TimeInterval) , p.EndDT.ToString("yy.MM.dd HH:mm") , Convert.ToString((CandlePatternTypeEnum)Convert.ToInt32(p.CandlePatternType))); var type = ((CandlePatternTypeEnum)Convert.ToInt32(p.CandlePatternType)); if (type == CandlePatternTypeEnum.Up) { dgv.Rows[idx].Cells[3].Style.ForeColor = Color.Red; } else if (type == CandlePatternTypeEnum.Down) { dgv.Rows[idx].Cells[3].Style.ForeColor = Color.Blue; } else if (type == CandlePatternTypeEnum.StrongUp) { dgv.Rows[idx].Cells[3].Style.ForeColor = Color.DarkRed; } else if (type == CandlePatternTypeEnum.StrongDown) { dgv.Rows[idx].Cells[3].Style.ForeColor = Color.DarkBlue; } dgv.Rows[idx].Tag = p; } } chart1.ClearChartLabel("1"); chart1.ClearChartLabel("2"); chart1.DisplayChartLabel(data, Color.Black, "1"); chart1.DisplayView(); }
public static CandlePatternTypeEnum GetCandlePatternType(S_CandleItemData p, List <S_CandleItemData> pList, List <S_CandleItemData> nList) { //CandlePatternTypeEnum type = CandlePatternTypeEnum.Unknown; //double minPPrice = pList.Min((t => t.LowPrice)); //double maxPPrice = pList.Max((t => t.HighPrice)); //double minNPrice = nList.Min((t => t.LowPrice)); //double maxNPrice = nList.Max((t => t.HighPrice)); //double pDiff = (maxPPrice - minPPrice); //double sUPrice = p.ClosePrice + (pDiff * 1.0); //double sDPrice = p.ClosePrice - (pDiff * 1.0); //double mUPrice = p.ClosePrice + (pDiff * 0.7); //double mDPrice = p.ClosePrice - (pDiff * 0.7); //double wUPrice = p.ClosePrice + (pDiff * 0.3); //double wDPrice = p.ClosePrice - (pDiff * 0.3); //if (maxNPrice > sUPrice && minNPrice < sDPrice) type = CandlePatternTypeEnum.StrongSide; //else if (maxNPrice > mUPrice && minNPrice < mDPrice) type = CandlePatternTypeEnum.NormalSide; //else if (maxNPrice > wUPrice && minNPrice < wDPrice) type = CandlePatternTypeEnum.WeakSide; //else if (maxNPrice > sUPrice) type = CandlePatternTypeEnum.StrongUp; //else if (minNPrice < sDPrice) type = CandlePatternTypeEnum.StrongDown; //else if (maxNPrice > mUPrice) type = CandlePatternTypeEnum.Up; //else if (minNPrice < mDPrice) type = CandlePatternTypeEnum.Down; //else if (maxNPrice > wUPrice) type = CandlePatternTypeEnum.WeakUp; //else if (minNPrice < wDPrice) type = CandlePatternTypeEnum.WeakDown; //return type; CandlePatternTypeEnum type = CandlePatternTypeEnum.Unknown; double minPPrice = p.LowPrice; double maxPPrice = p.HighPrice; double minNPrice = nList.Min((t => t.LowPrice)); double maxNPrice = nList.Max((t => t.HighPrice)); double pDiff = (maxPPrice - minPPrice); double sUPrice = p.ClosePrice + (pDiff * 3.0); double sDPrice = p.ClosePrice - (pDiff * 3.0); double mUPrice = p.ClosePrice + (pDiff * 2.0); double mDPrice = p.ClosePrice - (pDiff * 2.0); double wUPrice = p.ClosePrice + (pDiff * 1.0); double wDPrice = p.ClosePrice - (pDiff * 1.0); if (maxNPrice > mUPrice && minNPrice < mDPrice && maxNPrice < sUPrice && minNPrice > sDPrice) { type = CandlePatternTypeEnum.StrongSide; } else if (maxNPrice > wUPrice && minNPrice < wDPrice && maxNPrice < mUPrice && minNPrice > mDPrice) { type = CandlePatternTypeEnum.NormalSide; } else if (maxNPrice < wUPrice && minNPrice > wDPrice) { type = CandlePatternTypeEnum.WeakSide; } else if (maxNPrice > sUPrice) { type = CandlePatternTypeEnum.StrongUp; } else if (minNPrice < sDPrice) { type = CandlePatternTypeEnum.StrongDown; } else if (maxNPrice > mUPrice) { type = CandlePatternTypeEnum.Up; } else if (minNPrice < mDPrice) { type = CandlePatternTypeEnum.Down; } else if (maxNPrice > wUPrice) { type = CandlePatternTypeEnum.WeakUp; } else if (minNPrice < wDPrice) { type = CandlePatternTypeEnum.WeakDown; } return(type); }
public List <S_CandleItemData> Query( string itemCode , string gubun = "D" //M : 15Min, H : Hour, D : Day, W : Week, M : Month ) { this.ItemCode = itemCode; int round = ItemCodeUtil.GetItemCodeRoundNum(ItemCode); Task.Factory.StartNew(() => { try { string symbol = "37427"; if (itemCode == "301") { symbol = "38016"; } string resolution = gubun; if (gubun == "H" || gubun == "1H") { resolution = "60"; } else if (gubun == "2H") { resolution = "120"; } else if (gubun == "4H") { resolution = "240"; } else if (gubun == "5H") { resolution = "300"; } else if (gubun == "M" || gubun == "1M") { resolution = "1"; } else if (gubun == "5M") { resolution = "5"; } else if (gubun == "15M") { resolution = "15"; } else if (gubun == "30M") { resolution = "30"; } Int32 from = (Int32)(DateTime.UtcNow.AddYears(-2).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; Int32 to = (Int32)(DateTime.UtcNow.AddDays(10).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; if (gubun == "M" || gubun == "1M") { from = (Int32)(DateTime.UtcNow.AddDays(-1).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; to = (Int32)(DateTime.UtcNow.AddDays(10).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; } else if (gubun == "5M") { from = (Int32)(DateTime.UtcNow.AddDays(-5).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; to = (Int32)(DateTime.UtcNow.AddDays(10).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; } else if (gubun == "15M") { from = (Int32)(DateTime.UtcNow.AddDays(-15).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; to = (Int32)(DateTime.UtcNow.AddDays(10).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; } else if (gubun == "30M") { from = (Int32)(DateTime.UtcNow.AddMonths(-1).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; to = (Int32)(DateTime.UtcNow.AddDays(1).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; } else if (gubun == "H" || gubun == "1H") { from = (Int32)(DateTime.UtcNow.AddMonths(-2).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; to = (Int32)(DateTime.UtcNow.AddDays(10).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; } else if (gubun == "2H") { from = (Int32)(DateTime.UtcNow.AddMonths(-4).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; to = (Int32)(DateTime.UtcNow.AddDays(10).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; } else if (gubun == "4H") { from = (Int32)(DateTime.UtcNow.AddMonths(-8).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; to = (Int32)(DateTime.UtcNow.AddDays(10).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; } else if (gubun == "5H") { from = (Int32)(DateTime.UtcNow.AddMonths(-10).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; to = (Int32)(DateTime.UtcNow.AddDays(10).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; } else if (gubun == "W") { from = (Int32)(DateTime.UtcNow.AddYears(-5).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; to = (Int32)(DateTime.UtcNow.AddDays(10).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; } else if (gubun == "M") { from = (Int32)(DateTime.UtcNow.AddYears(-10).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; to = (Int32)(DateTime.UtcNow.AddDays(10).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; } string urlPath = $"https://tvc4.forexpros.com/1cc1f0b6f392b9fad2b50b7aebef1f7c/1601866558/18/18/88/history?symbol={symbol}&resolution={resolution}&from={from}&to={to}"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlPath); request.MaximumAutomaticRedirections = 4; request.MaximumResponseHeadersLength = 4; request.Credentials = CredentialCache.DefaultCredentials; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream receiveStream = response.GetResponseStream(); StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); string content = readStream.ReadToEnd(); var dyObj = JsonConverter.JsonToDynamicObject(content); int cnt = dyObj.t.Count; for (int i = 0; i < cnt; i++) { Int64 t = dyObj.t[i]; double o = dyObj.o[i]; double c = dyObj.c[i]; double h = dyObj.h[i]; double l = dyObj.l[i]; DateTime cTime = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(t); //Console.WriteLine($"DT : {cTime.ToLongDateString()} O : {Math.Round(o, 2)}, H : {Math.Round(h, 2)}, L : {Math.Round(l, 2)}, C : {Math.Round(c, 2)}"); S_CandleItemData data = new S_CandleItemData(); data.DTime = cTime; data.ItemCode = ItemCode; data.OpenPrice = (Single)Math.Round(o, round); data.HighPrice = (Single)Math.Round(h, round); data.LowPrice = (Single)Math.Round(l, round); data.ClosePrice = (Single)Math.Round(c, round); data.Volume = 0; returnList.Add(data); } } catch (Exception ex) { string err = ex.Message; } finally { manualEvent.Set(); } }); manualEvent.WaitOne(); return(returnList); }
private void LoadCandle(string itemCode) { int displayCnt = 10; PurushaPrakriti pp = new PurushaPrakriti(); pp.Item = itemCode; pp.Interval = (int)EnumUtil.GetTimeIntervalValue("1분"); pp.DisplayCount = 30; try { Entities entities = (Entities)pp.Collect(new Query("USP_PP_SIMPLE_LST")); List <PurushaPrakriti> list = entities.Cast <PurushaPrakriti>().ToList(); List <S_CandleItemData> resultList = new List <S_CandleItemData>(); foreach (var m in list) { var item = new S_CandleItemData(itemCode, m.OpenVal, m.HighVal, m.LowVal, m.CloseVal, m.Volume, m.DT); resultList.Add(item); } PPStorage.Instance.Init01(itemCode, resultList); } catch (Exception) { } pp = new PurushaPrakriti(); pp.Item = itemCode; pp.Interval = (int)EnumUtil.GetTimeIntervalValue("5분"); pp.DisplayCount = 30; try { Entities entities = (Entities)pp.Collect(new Query("USP_PP_SIMPLE_LST")); List <PurushaPrakriti> list = entities.Cast <PurushaPrakriti>().ToList(); List <S_CandleItemData> resultList = new List <S_CandleItemData>(); foreach (var m in list) { var item = new S_CandleItemData(itemCode, m.OpenVal, m.HighVal, m.LowVal, m.CloseVal, m.Volume, m.DT); resultList.Add(item); } PPStorage.Instance.Init05(itemCode, resultList); } catch (Exception) { } pp = new PurushaPrakriti(); pp.Item = itemCode; pp.Interval = (int)EnumUtil.GetTimeIntervalValue("10분"); pp.DisplayCount = displayCnt; try { Entities entities = (Entities)pp.Collect(new Query("USP_PP_SIMPLE_LST")); List <PurushaPrakriti> list = entities.Cast <PurushaPrakriti>().ToList(); List <S_CandleItemData> resultList = new List <S_CandleItemData>(); foreach (var m in list) { var item = new S_CandleItemData(itemCode, m.OpenVal, m.HighVal, m.LowVal, m.CloseVal, m.Volume, m.DT); resultList.Add(item); } PPStorage.Instance.Init10(itemCode, resultList); } catch (Exception) { } pp = new PurushaPrakriti(); pp.Item = itemCode; pp.Interval = (int)EnumUtil.GetTimeIntervalValue("30분"); pp.DisplayCount = displayCnt; try { Entities entities = (Entities)pp.Collect(new Query("USP_PP_SIMPLE_LST")); List <PurushaPrakriti> list = entities.Cast <PurushaPrakriti>().ToList(); List <S_CandleItemData> resultList = new List <S_CandleItemData>(); foreach (var m in list) { var item = new S_CandleItemData(itemCode, m.OpenVal, m.HighVal, m.LowVal, m.CloseVal, m.Volume, m.DT); resultList.Add(item); } PPStorage.Instance.Init30(itemCode, resultList); } catch (Exception) { } pp = new PurushaPrakriti(); pp.Item = itemCode; pp.Interval = (int)EnumUtil.GetTimeIntervalValue("60분"); pp.DisplayCount = displayCnt; try { Entities entities = (Entities)pp.Collect(new Query("USP_PP_SIMPLE_LST")); List <PurushaPrakriti> list = entities.Cast <PurushaPrakriti>().ToList(); List <S_CandleItemData> resultList = new List <S_CandleItemData>(); foreach (var m in list) { var item = new S_CandleItemData(itemCode, m.OpenVal, m.HighVal, m.LowVal, m.CloseVal, m.Volume, m.DT); resultList.Add(item); } PPStorage.Instance.Init60(itemCode, resultList); } catch (Exception) { } pp = new PurushaPrakriti(); pp.Item = itemCode; pp.Interval = (int)EnumUtil.GetTimeIntervalValue("120분"); pp.DisplayCount = displayCnt; try { Entities entities = (Entities)pp.Collect(new Query("USP_PP_SIMPLE_LST")); List <PurushaPrakriti> list = entities.Cast <PurushaPrakriti>().ToList(); List <S_CandleItemData> resultList = new List <S_CandleItemData>(); foreach (var m in list) { var item = new S_CandleItemData(itemCode, m.OpenVal, m.HighVal, m.LowVal, m.CloseVal, m.Volume, m.DT); resultList.Add(item); } PPStorage.Instance.Init120(itemCode, resultList); } catch (Exception) { } pp = new PurushaPrakriti(); pp.Item = itemCode; pp.Interval = (int)EnumUtil.GetTimeIntervalValue("일"); pp.DisplayCount = displayCnt; try { Entities entities = (Entities)pp.Collect(new Query("USP_PP_SIMPLE_LST")); List <PurushaPrakriti> list = entities.Cast <PurushaPrakriti>().ToList(); List <S_CandleItemData> resultList = new List <S_CandleItemData>(); foreach (var m in list) { var item = new S_CandleItemData(itemCode, m.OpenVal, m.HighVal, m.LowVal, m.CloseVal, m.Volume, m.DT); resultList.Add(item); } PPStorage.Instance.InitDay(itemCode, resultList); } catch (Exception) { } }