internal void checkUpdateStatus(DataGridView gridView, int row, int col, OptionSpreadExpression optionSpreadExpression) { Color backColor; //if (optionSpreadManager.realtimeMonitorSettings.eodAnalysis) if (optionSpreadExpression.instrument.eodAnalysisAtInstrument) { backColor = Color.Plum; } else if (optionSpreadExpression.minutesSinceLastUpdate > TradingSystemConstants.MINUTES_STALE_LIVE_UPDATE) { backColor = Color.Yellow; } else { backColor = Color.LightSkyBlue; } markLiveAsConnected(gridView, row, col, true, backColor); }
copyToMongoDB_OptionSpreadExpression(OptionSpreadExpression ose) { MongoDB_OptionSpreadExpression mongoDB_OptionSpreadExpression = new MongoDB_OptionSpreadExpression(); mongoDB_OptionSpreadExpression.cqgSymbol = ose.cqgSymbol; //******* // idInstrument; //instrument; ////this is used for margin calculation from option payoff chart ////****************************************** //public int optionMonthInt; //public int optionYear; //public int futureContractMonthInt; //public int futureContractYear; ////****************************************** //public OPTION_EXPRESSION_TYPES optionExpressionType; //public OPTION_SPREAD_CONTRACT_TYPE callPutOrFuture; //public char callPutOrFutureChar; //public int optionId; //only filled if contract is an option //public int underlyingFutureId; //public int substituteOptionId; //only filled if contract is an option //public int substituteUnderlyingFutureId; //public int futureId; //only filled if contract is a future //public int substituteFutureId; //public double strikePrice; //public double riskFreeRate = 0.01; //public bool riskFreeRateFilled = false; //public double yearFraction; //public DateTime lastTimeUpdated; //public double minutesSinceLastUpdate = 0; //public DateTime lastTimeFuturePriceUpdated; //is separate b/c can get time stamp off of historical bars //public double ask; //public bool askFilled; //public double bid; //public bool bidFilled; //public double trade; //public bool tradeFilled; //public double settlement; //public bool settlementFilled; //public bool manuallyFilled; //public DateTime settlementDateTime; //public bool settlementIsCurrentDay; //public double yesterdaySettlement; //public bool yesterdaySettlementFilled; //public double defaultBidPriceBeforeTheor; ////public bool defaultBidPriceBeforeTheorFilled; //public double defaultAskPriceBeforeTheor; ////public bool defaultAskPriceBeforeTheorFilled; //public double defaultMidPriceBeforeTheor; //public double defaultPrice; //public bool defaultPriceFilled; //public double decisionPrice; //public DateTime decisionPriceTime; //public bool decisionPriceFilled = false; //public double transactionPrice; //public DateTime transactionPriceTime; //public bool transactionPriceFilled = false; //public double impliedVolFromSpan; //public double theoreticalOptionPrice; //public double settlementImpliedVol; //public double impliedVol; //public bool impliedVolFilled = false; //used for calculating option transaction price //public double delta; //public List<OHLCData> futureBarData; //public List<DateTime> futureBarTimeRef; //public List<TheoreticalBar> theoreticalOptionDataList; //public DateTime previousDateTimeBoundaryStart; //public OHLCData todayTransactionBar; //public DateTime todayTransactionTimeBoundary; //public bool reachedTransactionTimeBoundary = false; //public bool filledAfterTransactionTimeBoundary = false; //public OHLCData decisionBar; //public DateTime todayDecisionTime; //public bool reachedDecisionBar = false; //public bool reachedBarAfterDecisionBar = false; //public bool reached1MinAfterDecisionBarUsedForSnapshot = false; //******* return(mongoDB_OptionSpreadExpression); }
public void sendUpdateToADMPositionsGrid(OptionRealtimeMonitor optionRealtimeMonitor) //*eQuoteType cqgQuoteType,*/ int spreadExpressionIdx /*int colIdx*/) { //CQGQuote quote = optionSpreadExpressionList[spreadExpressionIdx].cqgInstrument.Quotes[cqgQuoteType]; DataGridView gridLiveFCMData = optionRealtimeMonitor.getGridLiveFCMData; try { List <ADMPositionImportWeb> admPositionImportWeb = optionSpreadManager.admPositionImportWeb; //int optionSpreadCounter = 0; //List<LiveADMStrategyInfo> liveADMStrategyInfoList = optionSpreadManager.liveADMStrategyInfoList; for (int admWebPositionCounter = 0; admWebPositionCounter < admPositionImportWeb.Count; admWebPositionCounter++) { // int totalLegs = liveADMStrategyInfoList[optionSpreadCounter].admLegInfo.Count; // //if (optionSpreadExpressionList[spreadExpressionIdx].cqgInstrument != null) // for (int legCounter = 0; legCounter < totalLegs; legCounter++) // { if (admPositionImportWeb[admWebPositionCounter].contractData.optionSpreadExpression != null) { CQGInstrument cqgInstrument = admPositionImportWeb[admWebPositionCounter].contractData.optionSpreadExpression.cqgInstrument; if (cqgInstrument != null) // && CQG. cqgInstrument) { OptionSpreadExpression optionSpreadExpressionList = admPositionImportWeb[admWebPositionCounter].contractData.optionSpreadExpression; //checkUpdateStatus(admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, // optionSpreadExpressionList, true); optionSpreadManager.statusAndConnectedUpdates.checkUpdateStatus(gridLiveFCMData, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.TIME, optionSpreadExpressionList); //if (optionSpreadManager.realtimeMonitorSettings.eodAnalysis) if (optionSpreadExpressionList.instrument.eodAnalysisAtInstrument) { gridLiveFCMData.Columns[(int)OPTION_LIVE_ADM_DATA_COLUMNS.TIME].DefaultCellStyle.Font = new Font("Tahoma", 6); fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.TIME, optionSpreadExpressionList.lastTimeUpdated.ToString("yyyy-MM-dd HH:mm", DateTimeFormatInfo.InvariantInfo), false, 0); } else { gridLiveFCMData.Columns[(int)OPTION_LIVE_ADM_DATA_COLUMNS.TIME].DefaultCellStyle.Font = new Font("Tahoma", 8); fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.TIME, optionSpreadExpressionList.lastTimeUpdated.ToString("HH:mm", DateTimeFormatInfo.InvariantInfo), false, 0); } fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.ASK, cqgInstrument.ToDisplayPrice(optionSpreadExpressionList.ask), false, optionSpreadExpressionList.ask); fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.BID, cqgInstrument.ToDisplayPrice(optionSpreadExpressionList.bid), false, optionSpreadExpressionList.bid); fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.LAST, cqgInstrument.ToDisplayPrice(optionSpreadExpressionList.trade), false, optionSpreadExpressionList.trade); fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.DFLT_PRICE, cqgInstrument.ToDisplayPrice(optionSpreadExpressionList.defaultPrice), false, optionSpreadExpressionList.defaultPrice); fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.STTLE, cqgInstrument.ToDisplayPrice(optionSpreadExpressionList.settlement), false, optionSpreadExpressionList.settlement); if (optionSpreadExpressionList.settlementDateTime.Date.CompareTo(DateTime.Now.Date) >= 0) { fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.SETL_TIME, optionSpreadExpressionList.settlementDateTime.ToString("yyyy-MM-dd HH:mm", DateTimeFormatInfo.InvariantInfo), true, 1); } else { fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.SETL_TIME, optionSpreadExpressionList.settlementDateTime.ToString("yyyy-MM-dd HH:mm", DateTimeFormatInfo.InvariantInfo), true, -1); } fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.YEST_STTLE, cqgInstrument.ToDisplayPrice(optionSpreadExpressionList.yesterdaySettlement), false, optionSpreadExpressionList.yesterdaySettlement); fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.IMPL_VOL, Math.Round(optionSpreadExpressionList.impliedVol, 2).ToString(), false, optionSpreadExpressionList.impliedVol); fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.THEOR_PRICE, cqgInstrument.ToDisplayPrice( optionSpreadExpressionList.theoreticalOptionPrice), false, optionSpreadExpressionList.theoreticalOptionPrice); fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.SPAN_IMPL_VOL, Math.Round(optionSpreadExpressionList.impliedVolFromSpan, 2).ToString(), false, optionSpreadExpressionList.impliedVolFromSpan); fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.SETL_IMPL_VOL, Math.Round(optionSpreadExpressionList.settlementImpliedVol, 2).ToString(), false, optionSpreadExpressionList.settlementImpliedVol); fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.RFR, optionSpreadExpressionList.riskFreeRate.ToString(), false, optionSpreadExpressionList.riskFreeRate); fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.PL_DAY_CHG, Math.Round(admPositionImportWeb[admWebPositionCounter].contractData.pAndLDay, 2).ToString(), true, admPositionImportWeb[admWebPositionCounter].contractData.pAndLDay); fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.PL_TRANS, Math.Round(admPositionImportWeb[admWebPositionCounter].contractData.pAndLDayOrders, 2).ToString(), true, admPositionImportWeb[admWebPositionCounter].contractData.pAndLDayOrders); //fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, // (int)OPTION_LIVE_ADM_DATA_COLUMNS.PL_DAY_CHG, // Math.Round(admPositionImportWeb[admWebPositionCounter].contractData.pAndLDay, 2).ToString(), // true, admPositionImportWeb[admWebPositionCounter].contractData.pAndLDay); fillLiveADMDataPage(optionRealtimeMonitor, admPositionImportWeb[admWebPositionCounter].liveADMRowIdx, (int)OPTION_LIVE_ADM_DATA_COLUMNS.DELTA, Math.Round(admPositionImportWeb[admWebPositionCounter].contractData.delta, 2).ToString(), true, admPositionImportWeb[admWebPositionCounter].contractData.delta); // //int numberOfContracts = (int)optionStrategies[optionSpreadCounter].optionStrategyParameters[ // // (int)TBL_STRATEGY_STATE_FIELDS.currentPosition].stateValueParsed[legCounter]; // //fillLiveADMDataPage(liveADMStrategyInfoList[optionSpreadCounter].admLegInfo[legCounter].rowIndex, // // (int)OPTION_LIVE_ADM_DATA_COLUMNS.SPREAD_QTY, // // numberOfContracts.ToString(), true, numberOfContracts); // } } } // fillLiveADMDataPage(liveADMStrategyInfoList[optionSpreadCounter].summaryRowIdx, // (int)OPTION_LIVE_ADM_DATA_COLUMNS.PL_DAY_CHG, // Math.Round(liveADMStrategyInfoList[optionSpreadCounter].liveSpreadADMTotals.pAndLDay, 2).ToString(), // true, liveADMStrategyInfoList[optionSpreadCounter].liveSpreadADMTotals.pAndLDay); // fillLiveADMDataPage(liveADMStrategyInfoList[optionSpreadCounter].summaryRowIdx, // (int)OPTION_LIVE_ADM_DATA_COLUMNS.DELTA, // Math.Round(liveADMStrategyInfoList[optionSpreadCounter].liveSpreadADMTotals.delta, 2).ToString(), // true, liveADMStrategyInfoList[optionSpreadCounter].liveSpreadADMTotals.delta); // optionSpreadCounter++; } } catch (Exception ex) { TSErrorCatch.errorCatchOut(Convert.ToString(this), ex); } }