속도 개선

This commit is contained in:
kyh
2022-11-29 16:18:14 +09:00
parent 6587e61312
commit 33a840069a
2 changed files with 35 additions and 33 deletions

View File

@@ -290,6 +290,13 @@ namespace Million
var hunterMode = rd_Hunter.Checked;
var buyScript = new InteratorScripter("Buy Script");
buyScript.regularExpressionString = _saveResultData.BuyRegularExpression;
var sellScript = new InteratorScripter("Sell Script");
sellScript.regularExpressionString = _saveResultData.SellRegularExpression;
var sellExceptionScript = new InteratorScripter("Sell Exception Script");
sellExceptionScript.regularExpressionString = _saveResultData.SellExceptionRegularExpression;
Parallel.For(0, tableList.Count, i =>
{
var market = tableList[i];
@@ -298,12 +305,13 @@ namespace Million
if (hunterMode)
{
totalResultList.AddRange(CalculateHunter(totalIndicator, startDate, endDate, market, distinctIndicator));
totalResultList.AddRange(CalculateHunter(totalIndicator, startDate, endDate, market, distinctIndicator,
buyScript, sellScript));
}
else
{
totalResultList.AddRange(CalculateHunterRealtime(totalIndicator, startDate, endDate,
market, distinctIndicator, overlapBuyManagementList));
market, distinctIndicator, overlapBuyManagementList, buyScript, sellScript, sellExceptionScript));
}
});
@@ -390,16 +398,12 @@ namespace Million
/// <param name=""></param>
/// <returns></returns>
private List<SearchResult> CalculateHunterRealtime(List<IndicatorCoditionSetup> totalIndicator, DateTime startDate, DateTime endDate, MarketData market,
List<IndicatorCoditionSetup> distinctIndicator, Dictionary<string, bool> overlapBuyManagementList)
List<IndicatorCoditionSetup> distinctIndicator, Dictionary<string, bool> overlapBuyManagementList,
InteratorScripter buyScript, InteratorScripter sellScript, InteratorScripter sellExceptionScript)
{
var buyList = new List<CandleDataList>();
var item = market.CoinFullName;
var buyScript = new InteratorScripter("Buy Script");
buyScript.regularExpressionString = _saveResultData.BuyRegularExpression;
var sellScript = new InteratorScripter("Sell Script");
sellScript.regularExpressionString = _saveResultData.SellRegularExpression;
var sellExceptionScript = new InteratorScripter("Sell Exception Script");
sellExceptionScript.regularExpressionString = _saveResultData.SellExceptionRegularExpression;
var subIndStringiList = DataManager.GetSubIndicatorStringList(totalIndicator);
var resultData = new List<SearchResult>();
@@ -436,7 +440,7 @@ namespace Million
var compareHour = standardData[CommonProperty.MCandleTimeType.H1].LastOrDefault();
if(compareHour.DateTime.Hour != minData.DateTime.Hour)
if (compareHour.DateTime.Hour != minData.DateTime.Hour)
{
var candle = new CandleData();
candle.CandleTimeType = (int)MCandleTimeType.H1;
@@ -561,7 +565,8 @@ namespace Million
/// <summary>
/// Hunter 처리 로직
/// </summary>
private List<SearchResult> CalculateHunter(List<IndicatorCoditionSetup> totalIndicator, DateTime startDate, DateTime endDate, MarketData market, List<IndicatorCoditionSetup> distinctIndicator)
private List<SearchResult> CalculateHunter(List<IndicatorCoditionSetup> totalIndicator, DateTime startDate, DateTime endDate,
MarketData market, List<IndicatorCoditionSetup> distinctIndicator, InteratorScripter buyScript, InteratorScripter sellScript)
{
// 총 데이터
var dic = DataManager.GetStandardData(totalIndicator, startDate, endDate, market, distinctIndicator, true);
@@ -593,7 +598,7 @@ namespace Million
// 계산 로직
var resultLsit = ResultLogicManager.GetSearchResultList(resultCandleDataList, lossIndicator,
_saveResultData.BuyRegularExpression, _saveResultData.SellRegularExpression, market, totalIndicator);
market, totalIndicator, false, buyScript, sellScript);
return resultLsit;
}

View File

@@ -65,13 +65,10 @@ namespace Million.Manager
/// <param name="sellRegularExpression"></param>
/// <returns></returns>
public static List<SearchResult> GetSearchResultList(List<CandleData> datas, List<IndicatorCoditionSetup> rateIndicators,
string buyRegularExpression, string sellRegularExpression, MarketData market, List<IndicatorCoditionSetup> totalIndicator, bool insertTermCandleData = false)
MarketData market, List<IndicatorCoditionSetup> totalIndicator, bool insertTermCandleData, InteratorScripter buyScript,
InteratorScripter sellScript)
{
//buy, sell script 선언
var buyScript = new InteratorScripter("Buy Script");
buyScript.regularExpressionString = buyRegularExpression;
var sellScript = new InteratorScripter("Sell Script");
sellScript.regularExpressionString = sellRegularExpression;
var resultList = new List<SearchResult>();
@@ -112,7 +109,7 @@ namespace Million.Manager
if (deafultSellFlag)
{
//Sell Value 계산 로직
item.SellValue = CalculateManager.GetConditionValue(sellRegularExpression, valDic, dic);
item.SellValue = CalculateManager.GetConditionValue(sellScript.regularExpressionString, valDic, dic);
defaultSellValue = item.SellValue;
@@ -151,7 +148,7 @@ namespace Million.Manager
if (errorList.Count > 0)
continue;
var val = CalculateManager.GetConditionValue(sellRegularExpression, valDic, dic);
var val = CalculateManager.GetConditionValue(sellScript.regularExpressionString, valDic, dic);
if (deafultSellFlag) {
if (defaultSellValue > val)
@@ -257,7 +254,7 @@ namespace Million.Manager
if (flag)
{
var valDic = GetIndicateValue(dic, totalIndicator, item);
var val = OrderbookManager.GetAskPrice(CalculateManager.GetConditionValue(buyRegularExpression, valDic, dic));
var val = OrderbookManager.GetAskPrice(CalculateManager.GetConditionValue(buyScript.regularExpressionString, valDic, dic));
item.BuyValue = val + Math.Round(val * 0.0005);
buyList.Add(item);
}