public DbExecution(IBfExecution exec) { ExecutionId = exec.ExecutionId; ExecutedTime = exec.ExecutedTime; Side = exec.Side; Price = exec.Price; Size = exec.Size; }
public void Update(IBfExecution exec) { StartExecutionId = Math.Min(exec.ExecutionId, StartExecutionId); StartExecutedTime = (exec.ExecutedTime < StartExecutedTime) ? exec.ExecutedTime : StartExecutedTime; EndExecutionId = Math.Max(exec.ExecutionId, EndExecutionId); EndExecutedTime = (exec.ExecutedTime > EndExecutedTime) ? exec.ExecutedTime : EndExecutedTime; LastUpdatedTime = DateTime.UtcNow; ExecutionCount++; }
public void Add(IBfExecution exec) { if (_manageRec == null) { _manageRec = new DbManageRecord(); } _dbctx.Add(new DbExecution(exec)); _manageRec.Update(exec); if (_manageRec.ExecutionCount >= CommitCount) { SaveChanges(); _dbctx.ClearCache(); } }
public RealtimeOhlc Update(IBfExecution exec) { ExecutionCount++; if (exec.ExecutedTime < Start) { Start = exec.ExecutedTime; Open = exec.Price; } if (exec.ExecutedTime > End) { End = exec.ExecutedTime; Close = exec.Price; } High = Math.Max(High, exec.Price); Low = Math.Min(Low, exec.Price); switch (exec.Side) { case BfTradeSide.Buy: BuyVolume += unchecked ((double)exec.Size); break; case BfTradeSide.Sell: SellVolume += unchecked ((double)exec.Size); break; default: ExecutedVolume += unchecked ((double)exec.Size); break; } _amount += exec.Price * exec.Size; try { VWAP = unchecked ((double)(_amount / unchecked ((decimal)Volume))); } catch (DivideByZeroException) { VWAP = 0; } UpdateEvent?.Invoke(this); return(this); }
public void UpdateMarker(IBfExecution exec) { if (_lastExec == null) { _lastExec = exec; return; } var lastMarkTime = _lastExec.ExecutedTime.Round(MarkerSpan); var currentMarkTime = exec.ExecutedTime.Round(MarkerSpan); if (lastMarkTime != currentMarkTime) { // Marked time changed if (_marker != null) { if (!_ctx.Marker.Any(e => e.MarkedTime == _marker.MarkedTime)) { _marker.StartExecutionId = _lastExec.ExecutionId; _ctx.Marker.Add(_marker); } } _marker = new DbMinuteMarker { MarkedTime = currentMarkTime, EndExecutionId = exec.ExecutionId }; } if (_marker != null) { _marker.ExecutionCount++; } _lastExec = exec; }
public void AddExecution(IBfExecution exec) { _ctxExec.Instance.Add(exec as DbExecution); }
public RealtimeOhlc(IBfExecution exec) { Update(exec); }
public void AddExecution(IBfExecution exec) { _ctx.GetExecutions().Add(exec as DbExecution); }