코드 정렬
This commit is contained in:
@@ -40,13 +40,13 @@ namespace Million_Buyer
|
||||
bool AliveCheckor = false;
|
||||
|
||||
private Thread thread = null;
|
||||
private Thread orderThread = null;
|
||||
private Thread orderThread = null;
|
||||
private List<Account> accounts = null;
|
||||
private PaymentType payment = PaymentType.KRW;
|
||||
|
||||
private Stopwatch unlimitThreadStopWatch = new Stopwatch();
|
||||
private bool unlimitChecker = false;
|
||||
private long second = 0;
|
||||
private long second = 0;
|
||||
|
||||
private int cycleCount = 0;
|
||||
private double cycleBuyMoney = 0;
|
||||
@@ -64,7 +64,7 @@ namespace Million_Buyer
|
||||
public void Init()
|
||||
{
|
||||
InitManager.InitFunc("Upbit", PaymentType.KRW);
|
||||
|
||||
|
||||
_saveResultData = new SavedResultData
|
||||
{
|
||||
BuySetupList = new List<object>(),
|
||||
@@ -86,7 +86,7 @@ namespace Million_Buyer
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void rd_Realtime_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
{
|
||||
programMode = BuyerMode.BuyerRealtime;
|
||||
SetReadOnly(true);
|
||||
dt_Start.Enabled = false;
|
||||
@@ -99,7 +99,7 @@ namespace Million_Buyer
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void rd_buyer_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
{
|
||||
programMode = BuyerMode.Buyer;
|
||||
SetReadOnly(false);
|
||||
dt_Start.Enabled = false;
|
||||
@@ -120,7 +120,7 @@ namespace Million_Buyer
|
||||
/// </summary>
|
||||
/// <param name="flag"></param>
|
||||
private void SetReadOnly(bool flag)
|
||||
{
|
||||
{
|
||||
tb_CycleCount.ReadOnly = flag;
|
||||
tb_CycleMoneyValue.ReadOnly = flag;
|
||||
}
|
||||
@@ -173,7 +173,7 @@ namespace Million_Buyer
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!ThreadFlag)
|
||||
{
|
||||
SetReadOnly(true);
|
||||
@@ -338,12 +338,12 @@ namespace Million_Buyer
|
||||
var sellExceptionScript = new InteratorScripter("Sell Exception Script");
|
||||
sellExceptionScript.regularExpressionString = _saveResultData.SellExceptionRegularExpression;
|
||||
|
||||
var scriptDic = new Dictionary<string, bool>();
|
||||
var scriptDic = new Dictionary<string, bool>();
|
||||
|
||||
//TODO 모든 조건 데이터 미리 계산 필요
|
||||
|
||||
//save 데이터
|
||||
_saveResultData.StartDateTime = DateTime.Now;
|
||||
_saveResultData.StartDateTime = DateTime.Now;
|
||||
|
||||
//구매 후 데이터 여러개 계속 겹치는 경우 제외하기 위한 List
|
||||
var overlapBuyManagementList = new Dictionary<string, bool>();
|
||||
@@ -362,7 +362,7 @@ namespace Million_Buyer
|
||||
|
||||
if (programMode == BuyerMode.BuyerRealtime)
|
||||
InsertLog("실시간 검증 구동 중..");
|
||||
else if(programMode == BuyerMode.Buyer)
|
||||
else if (programMode == BuyerMode.Buyer)
|
||||
InsertLog("Buyer 구동 중..");
|
||||
else if (programMode == BuyerMode.BuyerTicker)
|
||||
InsertLog("Buyer Ticker 구동 중..");
|
||||
@@ -381,7 +381,7 @@ namespace Million_Buyer
|
||||
AliveCheckor = false;
|
||||
InsertLog("Alive");
|
||||
}
|
||||
|
||||
|
||||
|
||||
#region 기본 데이터 Setting
|
||||
if (firstFlag)
|
||||
@@ -391,7 +391,8 @@ namespace Million_Buyer
|
||||
var startDateTime = DateTime.Now;
|
||||
var endDateTime = startDateTime;
|
||||
|
||||
if (programMode == BuyerMode.BuyerTicker) {
|
||||
if (programMode == BuyerMode.BuyerTicker)
|
||||
{
|
||||
startDateTime = dt_Start.DateTime;
|
||||
endDateTime = dt_End.DateTime;
|
||||
}
|
||||
@@ -406,7 +407,7 @@ namespace Million_Buyer
|
||||
|
||||
if (programMode == BuyerMode.Buyer)
|
||||
{
|
||||
buyList = InitManager.GetBuyListofAccounts(this.accounts, dataList);
|
||||
buyList = InitManager.GetBuyListofAccounts(this.accounts, dataList);
|
||||
}
|
||||
|
||||
this.BeginInvoke(new Action(delegate ()
|
||||
@@ -428,14 +429,14 @@ namespace Million_Buyer
|
||||
}));
|
||||
|
||||
#region TODO 이미 구매되어 있는 종목에 대한 기본 데이터 Setting 필요
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
firstFlag = false;
|
||||
|
||||
|
||||
|
||||
sw.Stop();
|
||||
InsertLog("Deafult Data Setting 완료..\\r\n" + "Default 계산 시간 : " + sw.Elapsed.ToString());
|
||||
InsertLog("Deafult Data Setting 완료..\\r\n" + "Default 계산 시간 : " + sw.Elapsed.ToString());
|
||||
LogManager.WriteLog("Default 계산 시간 : " + sw.Elapsed.ToString());
|
||||
}
|
||||
else
|
||||
@@ -443,7 +444,7 @@ namespace Million_Buyer
|
||||
sw.Restart();
|
||||
dataList = realTimeMsg.ProcessRecentlyCandleDatas(dataList, candleTypeList);
|
||||
|
||||
if(dataList == null)
|
||||
if (dataList == null)
|
||||
{
|
||||
InsertLog("Buyer Ticker List 종료");
|
||||
break;
|
||||
@@ -467,29 +468,29 @@ namespace Million_Buyer
|
||||
sw.Stop();
|
||||
if (sw.Elapsed.TotalSeconds > 1)
|
||||
InsertLog("Execute 계산 시간 : " + sw.Elapsed.ToString());
|
||||
|
||||
|
||||
var minDateTime = dic[MCandleTimeType.M1].Select(t => t.DateTime).Min();
|
||||
var maxDateTime = dic[MCandleTimeType.M1].Select(t => t.DateTime).Max().AddHours(1);
|
||||
|
||||
var buyDataList = buyList.FirstOrDefault(t => t.ConGoodsData.CoinFullName == item);
|
||||
sw.Restart();
|
||||
if (buyDataList != null && buyDataList.CandleDataLists_Im.Count > 0)
|
||||
{
|
||||
{
|
||||
dic = IndicatorSetupManager.CalculateIndicator(dic, totalIndicatorList, minDateTime, maxDateTime, item, true, buyDataList.CandleDataLists_Im[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
dic = IndicatorSetupManager.CalculateIndicator(dic, totalIndicatorList, minDateTime, maxDateTime, item, true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sw.Stop();
|
||||
if (sw.Elapsed.TotalSeconds > 1)
|
||||
InsertLog("Indicator Calculate 계산 시간 : " + sw.Elapsed.ToString());
|
||||
#endregion
|
||||
|
||||
|
||||
#region 사고 파는 로직
|
||||
//최신 데이터 가져오기
|
||||
|
||||
|
||||
var recentlyData = DataManager.GetRecentlyData(dic, MCandleTimeType.M1, true);
|
||||
|
||||
if (recentlyData == null)
|
||||
@@ -536,7 +537,7 @@ namespace Million_Buyer
|
||||
if (programMode != BuyerMode.Buyer)
|
||||
{
|
||||
recentlyData.BuyCount = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
recentlyData.BuyCount = Math.Round(cycleBuyMoney / recentlyData.BuyValue, 8);
|
||||
@@ -548,7 +549,7 @@ namespace Million_Buyer
|
||||
}
|
||||
buyCycleCount++;
|
||||
}
|
||||
|
||||
|
||||
buyList.Add(buyData);
|
||||
|
||||
string str = "Buy : " + item + ",\r\n Buy Candle Data : " + JsonConvert.SerializeObject(recentlyData) + "\r\n";
|
||||
@@ -561,7 +562,8 @@ namespace Million_Buyer
|
||||
//grid 처리 구매항목, 구매 가격, 구매 개수, 구매시점
|
||||
this.BeginInvoke(new Action(delegate ()
|
||||
{
|
||||
try {
|
||||
try
|
||||
{
|
||||
tl_BuyList.AppendNode(new object[]
|
||||
{
|
||||
buyData.ConGoodsData.CoinFullName, recentlyData.BuyValue, recentlyData.BuyCount, time.ToString("yyyy-MM-dd HH:mm:ss")
|
||||
@@ -591,7 +593,7 @@ namespace Million_Buyer
|
||||
var scriptStr = sellScript.regularExpressionString;
|
||||
if (!flag)
|
||||
{
|
||||
if (sellExceptionScript.regularExpressionString != null &&
|
||||
if (sellExceptionScript.regularExpressionString != null &&
|
||||
sellExceptionScript.regularExpressionString.Length > 0)
|
||||
{
|
||||
//예외처리 로직 추가
|
||||
@@ -607,17 +609,18 @@ namespace Million_Buyer
|
||||
sw.Restart();
|
||||
var buyItem = buyList.FirstOrDefault(x => x.ConGoodsData.CoinFullName == item);
|
||||
var time = DateTime.Now;
|
||||
|
||||
|
||||
var sellItem = recentlyData;
|
||||
var valDic = ResultLogicManager.GetIndicateValue(sellItem.CalculateFlag, totalIndicatorList, sellItem);
|
||||
|
||||
|
||||
|
||||
|
||||
sellItem.SellValue = OrderbookManager.GetAskPrice(CalculateManager.GetConditionValue(scriptStr, valDic, sellItem.CalculateFlag), false);
|
||||
|
||||
var sellVal = sellItem.SellValue;
|
||||
|
||||
if (allSell) {
|
||||
if (allSell)
|
||||
{
|
||||
// 현재가 던지기
|
||||
sellItem.SellValue = OrderbookManager.GetAskPrice(sellItem.EndValue, false);
|
||||
sellVal = 0;
|
||||
@@ -627,7 +630,7 @@ namespace Million_Buyer
|
||||
|
||||
var buyCandleData = buyItem.CandleDataLists_Im[0];
|
||||
var result = DataManager.GetBuyerSearchResult(buyCandleData, recentlyData, buyItem.ConGoodsData);
|
||||
|
||||
|
||||
// buycount 에서 sell count를 제외한 양이 미체결 량
|
||||
if (programMode == BuyerMode.Buyer)
|
||||
{
|
||||
@@ -644,13 +647,13 @@ namespace Million_Buyer
|
||||
LogManager.WriteLog(str, item);
|
||||
|
||||
//초기화 작업
|
||||
foreach(var sublIndi in subIndicator)
|
||||
foreach (var sublIndi in subIndicator)
|
||||
{
|
||||
CommonProperty.subIndicatorStateManagement[sublIndi.IndexString][item] = false;
|
||||
}
|
||||
|
||||
//처리한 buyList는 삭제
|
||||
buyList.Remove(buyItem);
|
||||
buyList.Remove(buyItem);
|
||||
InsertLog(buyItem.ConGoodsData.CoinFullName + " Market Data 판매 DateTime : " + time.ToString("yyyy-MM-dd HH:mm:ss"));
|
||||
this.BeginInvoke(new Action(delegate ()
|
||||
{
|
||||
@@ -822,7 +825,7 @@ namespace Million_Buyer
|
||||
}
|
||||
lb_log.Items.Insert(0, log);
|
||||
DBConnection.QueryInsertExecuter_MainLog(DateTime.Now, cb_UserList.Text, log);
|
||||
}));
|
||||
}));
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -845,7 +848,7 @@ namespace Million_Buyer
|
||||
|
||||
AliveCheckor = true;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 구매 함수
|
||||
/// Price가 0일경우 현재가 구매
|
||||
@@ -855,7 +858,7 @@ namespace Million_Buyer
|
||||
/// <param name="volume"></param>
|
||||
/// <param name="price"></param>
|
||||
private string OrderBuy(string coinFullName, double volume, double price)
|
||||
{
|
||||
{
|
||||
var side = UpbitOrderSide.bid;
|
||||
var ordType = UpbitOrderType.limit;
|
||||
|
||||
@@ -878,7 +881,7 @@ namespace Million_Buyer
|
||||
/// <param name="volume"></param>
|
||||
/// <param name="price"></param>
|
||||
private double OrderSell(string coinFullName, string uuid, double price)
|
||||
{
|
||||
{
|
||||
var side = UpbitOrderSide.ask;
|
||||
var ordType = UpbitOrderType.limit;
|
||||
|
||||
@@ -888,16 +891,16 @@ namespace Million_Buyer
|
||||
// 판매시 Order Cancel 진행
|
||||
OrderCancel(coinFullName, uuid);
|
||||
|
||||
var orderData = CommonProperty.UpbitApi.GetOrderInformation(uuid);
|
||||
var orderData = CommonProperty.UpbitApi.GetOrderInformation(uuid);
|
||||
|
||||
if(orderData == null)
|
||||
if (orderData == null)
|
||||
{
|
||||
orderData = new Order();
|
||||
var account = this.accounts.FirstOrDefault(t => t.UnitCurrency + "-" + t.Currency == coinFullName);
|
||||
if(account != null)
|
||||
var account = this.accounts.FirstOrDefault(t => t.UnitCurrency + "-" + t.Currency == coinFullName);
|
||||
if (account != null)
|
||||
{
|
||||
orderData.ExecutedVolume = account.Balance;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (orderData.ExecutedVolume != 0)
|
||||
{
|
||||
@@ -915,7 +918,7 @@ namespace Million_Buyer
|
||||
/// </summary>
|
||||
/// <param name="coinFullName"></param>
|
||||
/// <param name="uuid"></param>
|
||||
private void OrderCancel(string coinFullName, string uuid ="")
|
||||
private void OrderCancel(string coinFullName, string uuid = "")
|
||||
{
|
||||
InsertLog("------------------------------------");
|
||||
InsertLog("Order Cancel");
|
||||
@@ -926,11 +929,11 @@ namespace Million_Buyer
|
||||
{
|
||||
if (item.State == "wait" || item.State == "watch")
|
||||
{
|
||||
if(item.CoinFullName == coinFullName)
|
||||
if (item.CoinFullName == coinFullName)
|
||||
{
|
||||
var returnData = CommonProperty.UpbitApi.CancelOrder(item.Uuid);
|
||||
InsertLog("Order Cancel Data : " + JsonConvert.SerializeObject(returnData));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
InsertLog("------------------------------------");
|
||||
@@ -975,7 +978,7 @@ namespace Million_Buyer
|
||||
var subStr = "원";
|
||||
if (cb_AccountList.Text == "KRW")
|
||||
{
|
||||
this.payment = PaymentType.KRW;
|
||||
this.payment = PaymentType.KRW;
|
||||
}
|
||||
else if (cb_AccountList.Text == "BTC")
|
||||
{
|
||||
@@ -985,7 +988,7 @@ namespace Million_Buyer
|
||||
else if (cb_AccountList.Text == "USDT")
|
||||
{
|
||||
this.payment = PaymentType.USDT;
|
||||
subStr = "USDT";
|
||||
subStr = "USDT";
|
||||
}
|
||||
lb_TotalMoney.Text = account.Balance.ToString() + subStr;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user