스레드 재실행 수정중!!
This commit is contained in:
@@ -260,7 +260,7 @@ namespace BitgetAPI
|
||||
|
||||
ichimokuConditionSetup.calIchimokuData(candleDatas_정렬, candleData_전봉);
|
||||
|
||||
if (candleData_전봉.Open < candleData_전봉.IchimokData.상한선 && candleData.Open > candleData.IchimokData.상한선)
|
||||
if (candleData_전봉.Open < candleData_전봉.IchimokData.상한선 && candleData.Open > candleData.IchimokData.상한선 && candleData.Low > candleData.IchimokData.상한선)
|
||||
{
|
||||
var price = candleData.Close;
|
||||
var rate = (candleData.Close / candleData.Open) * 100 - 100;
|
||||
@@ -285,7 +285,7 @@ namespace BitgetAPI
|
||||
signals_LU.Add(signalInfoData);
|
||||
}
|
||||
}
|
||||
else if (candleData_전봉.Open > candleData_전봉.IchimokData.하한선 && candleData.Open < candleData.IchimokData.하한선)
|
||||
else if (candleData_전봉.Open > candleData_전봉.IchimokData.하한선 && candleData.Open < candleData.IchimokData.하한선 && candleData.High < candleData.IchimokData.하한선)
|
||||
{
|
||||
var price = candleData.Close;
|
||||
var rate = (candleData.Close / candleData.Open) * 100 - 100;
|
||||
@@ -561,6 +561,47 @@ namespace BitgetAPI
|
||||
// 신호 검색 시작
|
||||
private void simpleButton_SignalStart_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
foreach(var candleList in commonProperty.candleDataLists)
|
||||
{
|
||||
foreach (var interval in candleList.candleDataList)
|
||||
interval.Value.Clear();
|
||||
}
|
||||
|
||||
|
||||
if(th_SignalInfo != null)
|
||||
{
|
||||
if (th_SignalInfo.ThreadState == ThreadState.Running)
|
||||
th_SignalInfo.Abort();
|
||||
th_SignalInfo = null;
|
||||
}
|
||||
|
||||
if (th_MarketCandeData != null)
|
||||
{
|
||||
if (th_MarketCandeData.ThreadState == ThreadState.Running)
|
||||
th_MarketCandeData.Abort();
|
||||
th_MarketCandeData = null;
|
||||
}
|
||||
if(treeListMarketInfoListUpdateTimer != null)
|
||||
{
|
||||
if (treeListMarketInfoListUpdateTimer.ThreadState == ThreadState.Running)
|
||||
treeListMarketInfoListUpdateTimer.Abort();
|
||||
treeListMarketInfoListUpdateTimer = null;
|
||||
}
|
||||
if (th_MarketStatusList != null)
|
||||
{
|
||||
for (var cnt = 0; cnt < th_MarketStatusList.Count; cnt++)
|
||||
{
|
||||
if (th_MarketStatusList[cnt] != null && th_MarketStatusList[cnt].ThreadState != ThreadState.Running)
|
||||
{
|
||||
th_MarketStatusList[cnt].Abort();
|
||||
th_MarketStatusList[cnt] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Thread.Sleep(1000);
|
||||
|
||||
var count = 0;
|
||||
|
||||
var marketList = checkedComboBoxEdit_MarketInfoList.Properties.Items.GetCheckedValues();
|
||||
|
||||
@@ -16,6 +16,7 @@ using BitgetApi.Data;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using DevExpress.Utils.Extensions;
|
||||
using static BitgetAPI.CommonProperty;
|
||||
using DateTime = System.DateTime;
|
||||
|
||||
namespace BitgetAPI.WebService
|
||||
{
|
||||
@@ -157,21 +158,75 @@ namespace BitgetAPI.WebService
|
||||
candleData.Vol_USD = Convert.ToDouble(item[6]);
|
||||
|
||||
// 같은 시간이 존재하면 업데이트 : 1개밖에 없음
|
||||
var sameCandleData_WebService = candleDataList.Find(i => i.Argument.Minute == candleData.Argument.Minute &&
|
||||
i.Argument.Hour == candleData.Argument.Hour && i.WebSocketUpdate == true);
|
||||
// 마지막 시간 데이터는 불완전 > 웹소켓 데이터와 합체
|
||||
if(item == datas.Last())
|
||||
{
|
||||
var timespan_add = new System.TimeSpan(0,0,0);
|
||||
|
||||
switch (interval)
|
||||
{
|
||||
case CommonProperty.MCandleTimeType.M1:
|
||||
// 같은 분이면 무조건 업데이트
|
||||
timespan_add = new System.TimeSpan(0, 1, 0);
|
||||
break;
|
||||
case CommonProperty.MCandleTimeType.M3:
|
||||
// 같은 분이면 무조건 업데이트
|
||||
timespan_add = new System.TimeSpan(0, 3, 0);
|
||||
break;
|
||||
case CommonProperty.MCandleTimeType.M5:
|
||||
timespan_add = new System.TimeSpan(0, 5, 0);
|
||||
break;
|
||||
case CommonProperty.MCandleTimeType.M15:
|
||||
timespan_add = new System.TimeSpan(0, 15, 0);
|
||||
break;
|
||||
case CommonProperty.MCandleTimeType.M30:
|
||||
timespan_add = new System.TimeSpan(0, 30, 0);
|
||||
break;
|
||||
case CommonProperty.MCandleTimeType.H1:
|
||||
timespan_add = new System.TimeSpan(1, 0, 0);
|
||||
break;
|
||||
case CommonProperty.MCandleTimeType.H4:
|
||||
timespan_add = new System.TimeSpan(4, 0, 0);
|
||||
break;
|
||||
case CommonProperty.MCandleTimeType.H6:
|
||||
timespan_add = new System.TimeSpan(6, 0, 0);
|
||||
break;
|
||||
case CommonProperty.MCandleTimeType.H12:
|
||||
timespan_add = new System.TimeSpan(12, 0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
var sameCandleData_WebService = candleDataList.Find(i => candleData.Argument <= i.Argument &&
|
||||
i.Argument < (candleData.Argument + timespan_add) && i.WebSocketUpdate == true);
|
||||
|
||||
if(sameCandleData_WebService != null)
|
||||
{
|
||||
// 종가 => 웹소켓 데이터 사용 (웹 서비스 호출 데이터 중 마지막 데이터는 캔들이 완성되지 않음)
|
||||
// 시가 => 웹 서비스 데이터 사용
|
||||
sameCandleData_WebService.Open = candleData.Open;
|
||||
// 저가, 고가 => 비교해서 사용
|
||||
sameCandleData_WebService.Low = Math.Min(sameCandleData_WebService.Low, candleData.Low);
|
||||
sameCandleData_WebService.High = Math.Max(sameCandleData_WebService.High, candleData.High);
|
||||
|
||||
sameCandleData_WebService.WebServiceUpdate = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
candleDataList.Add(candleData);
|
||||
candleData.WebServiceUpdate = true;
|
||||
}
|
||||
|
||||
}
|
||||
/*
|
||||
//var sameCandleData_WebService = candleDataList.Find(i => i.Argument.Minute == candleData.Argument.Minute &&
|
||||
//i.Argument.Hour == candleData.Argument.Hour && i.WebSocketUpdate == true);
|
||||
|
||||
|
||||
// 기존 웹소켓으로 부터 받은 데이터에 수정 등록
|
||||
if (sameCandleData_WebService != null)
|
||||
{
|
||||
// 종가 => 웹소켓 데이터 사용 (웹 서비스 호출 데이터 중 마지막 데이터는 캔들이 완성되지 않음)
|
||||
// 시가 => 웹 서비스 데이터 사용
|
||||
sameCandleData_WebService.Open = candleData.Open;
|
||||
// 저가, 고가 => 비교해서 사용
|
||||
sameCandleData_WebService.Low = Math.Min(sameCandleData_WebService.Low, candleData.Low);
|
||||
sameCandleData_WebService.High = Math.Max(sameCandleData_WebService.High, candleData.High);
|
||||
|
||||
sameCandleData_WebService.WebServiceUpdate = true;
|
||||
}
|
||||
}*/
|
||||
// 웹 서비스로 받은 데이터를 새로 추가
|
||||
else
|
||||
{
|
||||
@@ -283,7 +338,8 @@ namespace BitgetAPI.WebService
|
||||
DateTime dt = new DateTime(1970, 01, 01);
|
||||
tickerList.reciveTime = dt.AddMilliseconds(Convert.ToDouble(tickerList.ts)).ToLocalTime();
|
||||
|
||||
// 웹소켓 티커 리스트에 추가
|
||||
// 웹소켓 티커 리스트에 추가 (사용 안함)
|
||||
/*
|
||||
var searchIndex = commonProperty.webSocketCandles.IndexOf(i => i.instId == tickerList.instId);
|
||||
if (searchIndex < 0)
|
||||
commonProperty.webSocketCandles.Add(tickerList);
|
||||
@@ -291,6 +347,7 @@ namespace BitgetAPI.WebService
|
||||
{
|
||||
commonProperty.webSocketCandles[searchIndex] = tickerList;
|
||||
}
|
||||
*/
|
||||
|
||||
// 캔들 리스트에서 해당 데이터 찾기
|
||||
var searchIndex_c = commonProperty.candleDataLists.IndexOf(i => i.ConGoodsData.MarketName == tickerList.instId);
|
||||
@@ -305,8 +362,6 @@ namespace BitgetAPI.WebService
|
||||
candleData.Argument = tickerList.reciveTime;
|
||||
candleData.Close = tickerList.lastPr;
|
||||
|
||||
if (interval == MCandleTimeType.H1) { }
|
||||
|
||||
// 캔들 리스트가 없으면 추가
|
||||
if (candleDataList.Count == 0)
|
||||
candleDataList.Add(candleData);
|
||||
|
||||
Reference in New Issue
Block a user