스레드 재실행 수정중!!
This commit is contained in:
@@ -260,7 +260,7 @@ namespace BitgetAPI
|
|||||||
|
|
||||||
ichimokuConditionSetup.calIchimokuData(candleDatas_정렬, candleData_전봉);
|
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 price = candleData.Close;
|
||||||
var rate = (candleData.Close / candleData.Open) * 100 - 100;
|
var rate = (candleData.Close / candleData.Open) * 100 - 100;
|
||||||
@@ -285,7 +285,7 @@ namespace BitgetAPI
|
|||||||
signals_LU.Add(signalInfoData);
|
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 price = candleData.Close;
|
||||||
var rate = (candleData.Close / candleData.Open) * 100 - 100;
|
var rate = (candleData.Close / candleData.Open) * 100 - 100;
|
||||||
@@ -561,6 +561,47 @@ namespace BitgetAPI
|
|||||||
// 신호 검색 시작
|
// 신호 검색 시작
|
||||||
private void simpleButton_SignalStart_Click(object sender, EventArgs e)
|
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 count = 0;
|
||||||
|
|
||||||
var marketList = checkedComboBoxEdit_MarketInfoList.Properties.Items.GetCheckedValues();
|
var marketList = checkedComboBoxEdit_MarketInfoList.Properties.Items.GetCheckedValues();
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ using BitgetApi.Data;
|
|||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using DevExpress.Utils.Extensions;
|
using DevExpress.Utils.Extensions;
|
||||||
using static BitgetAPI.CommonProperty;
|
using static BitgetAPI.CommonProperty;
|
||||||
|
using DateTime = System.DateTime;
|
||||||
|
|
||||||
namespace BitgetAPI.WebService
|
namespace BitgetAPI.WebService
|
||||||
{
|
{
|
||||||
@@ -157,21 +158,75 @@ namespace BitgetAPI.WebService
|
|||||||
candleData.Vol_USD = Convert.ToDouble(item[6]);
|
candleData.Vol_USD = Convert.ToDouble(item[6]);
|
||||||
|
|
||||||
// 같은 시간이 존재하면 업데이트 : 1개밖에 없음
|
// 같은 시간이 존재하면 업데이트 : 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)
|
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
|
else
|
||||||
{
|
{
|
||||||
@@ -283,7 +338,8 @@ namespace BitgetAPI.WebService
|
|||||||
DateTime dt = new DateTime(1970, 01, 01);
|
DateTime dt = new DateTime(1970, 01, 01);
|
||||||
tickerList.reciveTime = dt.AddMilliseconds(Convert.ToDouble(tickerList.ts)).ToLocalTime();
|
tickerList.reciveTime = dt.AddMilliseconds(Convert.ToDouble(tickerList.ts)).ToLocalTime();
|
||||||
|
|
||||||
// 웹소켓 티커 리스트에 추가
|
// 웹소켓 티커 리스트에 추가 (사용 안함)
|
||||||
|
/*
|
||||||
var searchIndex = commonProperty.webSocketCandles.IndexOf(i => i.instId == tickerList.instId);
|
var searchIndex = commonProperty.webSocketCandles.IndexOf(i => i.instId == tickerList.instId);
|
||||||
if (searchIndex < 0)
|
if (searchIndex < 0)
|
||||||
commonProperty.webSocketCandles.Add(tickerList);
|
commonProperty.webSocketCandles.Add(tickerList);
|
||||||
@@ -291,6 +347,7 @@ namespace BitgetAPI.WebService
|
|||||||
{
|
{
|
||||||
commonProperty.webSocketCandles[searchIndex] = tickerList;
|
commonProperty.webSocketCandles[searchIndex] = tickerList;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
// 캔들 리스트에서 해당 데이터 찾기
|
// 캔들 리스트에서 해당 데이터 찾기
|
||||||
var searchIndex_c = commonProperty.candleDataLists.IndexOf(i => i.ConGoodsData.MarketName == tickerList.instId);
|
var searchIndex_c = commonProperty.candleDataLists.IndexOf(i => i.ConGoodsData.MarketName == tickerList.instId);
|
||||||
@@ -305,8 +362,6 @@ namespace BitgetAPI.WebService
|
|||||||
candleData.Argument = tickerList.reciveTime;
|
candleData.Argument = tickerList.reciveTime;
|
||||||
candleData.Close = tickerList.lastPr;
|
candleData.Close = tickerList.lastPr;
|
||||||
|
|
||||||
if (interval == MCandleTimeType.H1) { }
|
|
||||||
|
|
||||||
// 캔들 리스트가 없으면 추가
|
// 캔들 리스트가 없으면 추가
|
||||||
if (candleDataList.Count == 0)
|
if (candleDataList.Count == 0)
|
||||||
candleDataList.Add(candleData);
|
candleDataList.Add(candleData);
|
||||||
|
|||||||
Reference in New Issue
Block a user