private void toolStripButtonShowEntryData_Click(object sender, EventArgs e) { if (listViewProviderEntries.SelectedItems.Count == 0) { return; } if (listViewProviderEntries.SelectedItems.Count > 1) { MessageBox.Show("Select only one entry to show its data.", "Note", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } DataStoreEntry entry = (DataStoreEntry)listViewProviderEntries.SelectedItems[0].Tag; if (entry.Period.HasValue == false || entry.DataType != DataStoreEntry.EntryDataTypeEnum.DataBar) { return; } DataReaderWriter <DataBar> readerWriter = entry.GetDataBarReaderWriter(); if (readerWriter == null) { MessageBox.Show("Failed to read entry file.", "Open Forex Platform", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } List <DataBar> barData = readerWriter.Read(); RawDataTradeChartSeries series = new RawDataTradeChartSeries(entry.Symbol.Name); series.Initialize(barData, entry.Period.Value); ChartForm form = new ChartForm("Entry [" + entry.Symbol.Name + "," + entry.Period.ToString() + "] Data"); form.Chart.MasterPane.Add(series); form.Chart.MasterPane.FitDrawingSpaceToScreen(true, true); form.Show(this.ParentForm); }
/// <summary> /// Request bar dataDelivery from entry. /// </summary> public bool RequestDataHistoryUpdate(DataSessionInfo sessionInfo, DataHistoryRequest request, bool waitResult) { DataStoreEntry entry = DataStore.Instance.GetEntryBySessionInfo(sessionInfo); if (this.OperationalState != OperationalStateEnum.Operational || entry == null) { SystemMonitor.OperationError("Data history request received while not operational, or invalid session requrested."); return(false); } if (entry.Period != request.Period) { SystemMonitor.OperationError("Data history request received but period not recognized."); return(false); } if (request.MaxValuesRetrieved.HasValue == false) { request.MaxValuesRetrieved = int.MaxValue; } if (request.StartIndex.HasValue == false) { request.StartIndex = -1; } GeneralHelper.GenericReturnDelegate <bool> operationDelegate = delegate() { if (request.IsTickBased) { DataReaderWriter <DataTick> readerWriter = entry.GetDataTickReaderWriter(); List <DataTick> dataTicks; DataHistoryUpdate update = new DataHistoryUpdate(request.Period, new DataTick[] { }); if (readerWriter.Read(request.StartIndex.Value, request.MaxValuesRetrieved.Value, out dataTicks)) { update.DataTicksUnsafe.AddRange(dataTicks); if (DataHistoryUpdateEvent != null) { DataHistoryUpdateEvent(this, sessionInfo, update); } return(true); } } else { DataReaderWriter <DataBar> readerWriter = entry.GetDataBarReaderWriter(); if (readerWriter == null) { SystemMonitor.OperationError("Failed to establish file reader writer for entry."); return(false); } List <DataBar> dataBars; DataHistoryUpdate update = new DataHistoryUpdate(request.Period, new DataBar[] { }); bool readResult = false; if (request.StartIndex.Value < 0) {// Instruction is to read the last count items. readResult = readerWriter.ReadLast( request.MaxValuesRetrieved.Value, out dataBars); } else { readResult = readerWriter.Read(request.StartIndex.Value, request.MaxValuesRetrieved.Value, out dataBars); } if (readResult) { update.DataBarsUnsafe.AddRange(dataBars); if (DataHistoryUpdateEvent != null) { DataHistoryUpdateEvent(this, sessionInfo, update); } return(true); } } return(false); }; if (waitResult) { return(operationDelegate()); } else { GeneralHelper.FireAndForget(operationDelegate); return(true); } }