private void CheckBids() { if (BottomPrice > CurrentPrice) { AppJournal.Write("Order", "Bottom price more than current"); proc = false; StartCmdName = "Запуск"; MessageBox.Show("Минимальная цена больше стартовой"); } else { if (SelectedMode.type == "Конкурирующий") { if (BottomPrice < CurrentPrice && (CurrentPrice < LastPrice || LastPrice == 0)) { if (LastBroker == null || !LastBroker.ToLower().Contains(SelectedFirmBroker.name.ToLower())) { SendOrder(1); } } } else if (SelectedMode.type == "Разовый") { if (LastPrice < BottomPrice) { MessageBox.Show("Заявляемая цена меньше минимальной"); } else { SendOrder(2); } } } }
private Boolean proc; // Флаг запуска private void TimerTask() { while (proc) { // Проверка минимальной цены if (BottomPrice > CurrentPrice) { AppJournal.Write("Order", "Bottom price more than current"); proc = false; StartCmdName = "Запуск"; MessageBox.Show("Минимальная цена больше стартовой"); } else { // Поточный режим if (SelectedMode.type == "Поточный") { if (BottomPrice < CurrentPrice) { SendOrder(1); Thread.Sleep(PauseTime); } // Конкурирующий режим } else if (SelectedMode.type == "Конкурирующий") { if (BottomPrice < CurrentPrice && (CurrentPrice < LastPrice || LastPrice == 0)) { if (LastBroker == null || !LastBroker.ToLower().Contains(SelectedFirmBroker.name.ToLower())) { SendOrder(1); } } } else if (SelectedMode.type == "Разовый") { if (LastPrice < BottomPrice) { MessageBox.Show("Заявляемая цена меньше минимальной"); } else { SendOrder(2); } } } } }
// Определение текущей цены void TableQuotesAddRow(int IDConnect, int IDRecord, object Fields) { IList collection = (IList)Fields; if (collection[0].ToString() == SelectedIssue.name) { decimal rez; decimal.TryParse(collection[1].ToString(), NumberStyles.Any, new CultureInfo("en-US"), out rez); CurrentPrice = rez; LastBroker = collection[3].ToString(); FirmName = collection[3].ToString(); if (LastBroker.ToLower().Contains(SelectedFirmBroker.name.ToLower())) { if (IsPrimary) { IsPrimary = false; } else { IsPrimary = true; } } else { if (IsPrimary && proc) { CheckBids(); } } LogWriter(2, "", string.Format("Firm: {0}, lot: {1}, price: {2}, serverTime: {3}, curTime: {4}", collection[3].ToString(), collection[0].ToString(), collection[1].ToString(), collection[2].ToString(), DateTime.Now.ToString("hh:mm:ss:fff")), collection[0].ToString()); } if (CurrentPrice == 0) { CurrentPrice = SelectedIssue.nominal - Step; } }