This commit is contained in:
jwlee
2024-06-08 14:45:14 +09:00
parent 3b84645a04
commit 2247bb36f5
2 changed files with 60 additions and 34 deletions

View File

@@ -33,7 +33,7 @@ namespace BitgetAPI
// 트리 현황판 업데이트 스레드
Thread treeListMarketInfoListUpdateTimer = null;
// 현황판 웹소켓 스레드
Thread th_MarketStatus = null;
List<Thread> th_MarketStatusList = null;
// WebSocket 내 스레드 관리
List<Thread> webSocketThreadList = new List<Thread>();
// 종목별 캔들 데이터 스레드
@@ -77,11 +77,46 @@ namespace BitgetAPI
treeList_MarketInfo.Columns["quoteVolume"].SortOrder = SortOrder.Descending;
treeList_MarketInfo.EndSort();
// Json String 만들기
// 종목별 Ticker 구독하기
th_MarketStatusList = new List<Thread>();
var dic = new Dictionary<string, object>();
dic.Add("op", "subscribe");
var argsList = new List<Dictionary<string, object>>();
var count = 0;
foreach (var marketInfo in commonProperty.marketInfoList)
{
var args = new Dictionary<string, object>();
args.Add("instType", "USDT-FUTURES");
args.Add("channel", "ticker");
args.Add("instId", marketInfo.MarketName);
argsList.Add(args);
count++;
if (count % 30 == 0 || count == commonProperty.marketInfoList.Count - 1)
{
dic.Add("args", argsList);
var th_MarketStatus = new Thread(() => ThreadEventAsync(BitgetWebSocketType.현황정보_전체종목, dic));
th_MarketStatus.Start();
th_MarketStatusList.Add(th_MarketStatus);
//break;
dic = new Dictionary<string, object>();
dic.Add("op", "subscribe");
argsList = new List<Dictionary<string, object>>();
}
}
// 현황판 웹소켓
commonProperty.webSocketCandles = new List<WebSocketTickerInfo>();
treeList_MarketInfo.DataSource = commonProperty.webSocketCandles;
th_MarketStatus = new Thread(() => ThreadEventAsync(BitgetWebSocketType.현황정보_전체종목, "ticker"));
th_MarketStatus.Start();
// 트리 현황판 업데이트
treeListMarketInfoListUpdateTimer = new Thread(new ThreadStart(TreeListMarketInfoListUpdate));
@@ -101,20 +136,20 @@ namespace BitgetAPI
treeList_ShortDown.DataSource = signals_SD;
// 신호검색 스레드
th_SignalInfo = new Thread(new ThreadStart(Signalnfo));
th_SignalInfo.Start();
//th_SignalInfo = new Thread(new ThreadStart(Signalnfo));
//th_SignalInfo.Start();
// API Key 가져오기 및 등록
}
// 웹소켓 생성 관련 함수 스레드 => Thread
private async void ThreadEventAsync(BitgetWebSocketType bitgetWebSocketType, string channel)
private async void ThreadEventAsync(BitgetWebSocketType bitgetWebSocketType, Dictionary<string, object> dic)
{
// WebSocket 생성
WebConnection webConnection = new WebConnection();
webConnection.BitGetWebSocektStart(bitgetWebSocketType, channel);
webConnection.BitGetWebSocektStart(bitgetWebSocketType, dic);
Invoke(new MethodInvoker(delegate ()
{
@@ -344,7 +379,7 @@ namespace BitgetAPI
}
break;
}
// 초당 20회 제한 !!!!
// Thread.Sleep(50);
var candleList = BitgetAPI.WebService.WebConnection.SendWebServer(exchangeWebReqType, url, marketCandleDataList, (CommonProperty.MCandleTimeType) interval);
@@ -458,17 +493,23 @@ namespace BitgetAPI
// WebServicee 초기 캔들 데이터 가져오기 : 종목, 개수
// 종목별 캔들 데이터 가져오기 (WebService)
th_MarketCandeData = new Thread(() => getMarketCandleData_WebService(exchangeWebReqType));
th_MarketCandeData.Start();
//th_MarketCandeData = new Thread(() => getMarketCandleData_WebService(exchangeWebReqType));
//th_MarketCandeData.Start();
}
// 폼 닫기 시 처리 이벤트
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (th_MarketStatus != null)
if (th_MarketStatusList != null)
{
th_MarketStatus.Abort();
th_MarketStatus = 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;
}
}
}
if (treeListMarketInfoListUpdateTimer != null)