private void sellStock(object obj) { Surface.MyTimer.Data.StockInfo si = (Surface.MyTimer.Data.StockInfo)obj; bool changeFlag = false; bool sellFlag = false; int count; double price; countAndPrice cp = calculateCount(si.StockID, si.Proportion, Surface.MyTimer.Data.HoldingValue, "Sell"); count = cp.Count; price = cp.Price; //Surface.WinfairTDAPI.Function.OrderInsert(si.StockID, price, count); string localHandleID = Surface.WinfairTDAPI.Function.TDOrderInsert(); Thread.Sleep(SellWaitTime); if (orderStatus[localHandleID] == "ALLTRADED") { changeFlag = true; } if (changeFlag) { //Surface.WinfairTDAPI.Function.OrderAction(); for (int i = 1; i < SellTry; i++) { cp = calculateCount(si.StockID, si.Proportion, Surface.MyTimer.Data.HoldingValue, "Sell"); count = cp.Count; price = cp.Price; //Surface.WinfairTDAPI.Function.OrderInsert(si.StockID, price, count); localHandleID = Surface.WinfairTDAPI.Function.TDOrderInsert(); Thread.Sleep(SellWaitTime); if (orderStatus[localHandleID] == "ALLTRADED") { changeFlag = true; } if (changeFlag) { //Surface.WinfairTDAPI.Function.OrderAction(); if (i == SellTry - 1) { cp = calculateCount(si.StockID, si.Proportion, Surface.MyTimer.Data.HoldingValue, "SellLimit"); count = cp.Count; price = cp.Price; //Surface.WinfairTDAPI.Function.OrderInsert(si.StockID, price, count); localHandleID = Surface.WinfairTDAPI.Function.TDOrderInsert(); Thread.Sleep(SellWaitTime); if (orderStatus[localHandleID] == "ALLTRADED") { changeFlag = true; } if (sellFlag) { Console.WriteLine("Selling failed."); } } } } } }
private void stockExchange(string stockID, double changingProportion, double value, int order) { if (Surface.MyTimer.Data.MDDict.ContainsKey(stockID)) { string optionStockID = ""; if (order == 1) { optionStockID = Surface.MyTimer.Data.OperationDict[stockID].OptionStockID1; BuyInfo bi = new BuyInfo(Surface.MyTimer.Data.OperationDict[stockID], stockID, 1); Surface.MyTimer.Data.StockInfo si = bi.Si; si = new Surface.MyTimer.Data.StockInfo(); si.StockID = optionStockID; si.Proportion = changingProportion; buyStock(bi); } else if (order == 2) { optionStockID = Surface.MyTimer.Data.OperationDict[stockID].OptionStockID2; BuyInfo bi = new BuyInfo(Surface.MyTimer.Data.OperationDict[stockID], stockID, 2); Surface.MyTimer.Data.StockInfo si = bi.Si; si = new Surface.MyTimer.Data.StockInfo(); si.StockID = optionStockID; si.Proportion = changingProportion; buyStock(bi); } else if (order == 3) { optionStockID = Surface.MyTimer.Data.OperationDict[stockID].OptionStockID3; BuyInfo bi = new BuyInfo(Surface.MyTimer.Data.OperationDict[stockID], stockID, 3); Surface.MyTimer.Data.StockInfo si = bi.Si; si = new Surface.MyTimer.Data.StockInfo(); si.StockID = optionStockID; si.Proportion = changingProportion; buyStock(bi); } else { Console.WriteLine("Buying option stock failed."); } } else { Console.WriteLine("Target list add error!"); } }