private void OnRefreshOnBuy(object sender, MetaOrder e) { Log.Warning($"Begin cancel order: {e}"); _container.Resolve <IBittrexExchange>().CancelOrder(e.OrderId).GetAwaiter().GetResult(); Log.Warning($"Canceled. Push on sell"); _container.Resolve <IBusControl>().Publish <BuyCurrency>(new { Id = Guid.NewGuid(), Created = DateTime.Now, Amount = e.Amount, Bid = e.Rate }).GetAwaiter().GetResult(); }
private static (string value, bool isValueInPips) FormatOrderValue(MetaOrder order) { if (order == null) { return(null, false); } StringBuilder formula = new StringBuilder(); bool valueInPips = true; string lastOperation = null; foreach (var value in order.ValueStack) { switch (value.ValueType) { case FormulaItemType.Operand: formula.Append(value.Value); lastOperation = value.Value; break; case FormulaItemType.Parameter: switch (lastOperation) { case "-": case "+": formula.Append($"instance.parameters.{value.Value}*source:pipSize()"); break; default: formula.Append($"instance.parameters.{value.Value}"); break; } break; case FormulaItemType.Stream: case FormulaItemType.StreamValue: if (string.IsNullOrEmpty(value.Substream)) { formula.Append($"{value.Value}:tick(period)"); } else { if (value.Value == null && value.StreamType == StreamType.Instrument) { formula.Append($"source.{value.Substream}:tick(period)"); } else { formula.Append($"{value.Value}.{value.Substream}:tick(period)"); } } valueInPips = false; break; case FormulaItemType.Value: switch (lastOperation) { case "-": case "+": formula.Append($"{value.Value}*source:pipSize()"); break; default: formula.Append($"{value.Value}"); break; } break; } } return(formula.ToString(), valueInPips); }
public void AddOrder(MetaOrder metaOrder) { _orders.Add(metaOrder); }
/// <summary> /// Format order value /// </summary> /// <exception cref="NotSupportedFormulaItemException">Unsupported element in the value</exception> /// <param name="order">Order</param> /// <returns>Formatted value</returns> private static (string value, bool isValueInPips) FormatOrderValue(MetaOrder order) { if (order == null) { return(null, false); } StringBuilder formula = new StringBuilder(); bool valueInPips = true; string lastOperation = null; foreach (var value in order.ValueStack) { switch (value.ValueType) { case FormulaItemType.Operand: formula.Append(value.Value); lastOperation = value.Value; break; case FormulaItemType.Parameter: switch (lastOperation) { case "-": case "+": throw new NotSupportedFormulaItemException(value.ValueType, "Pine Script"); default: formula.Append($"{value.Value}"); break; } break; case FormulaItemType.Stream: case FormulaItemType.StreamValue: if (string.IsNullOrEmpty(value.Substream)) { formula.Append($"{value.Value}"); } else { if (value.Value == null && value.StreamType == StreamType.Instrument) { formula.Append($"{value.Substream}"); } else { formula.Append($"{value.Value}_{value.Substream}"); } } valueInPips = false; break; case FormulaItemType.Value: switch (lastOperation) { case "-": case "+": throw new NotSupportedFormulaItemException(value.ValueType, "Pine Script"); default: formula.Append($"{value.Value}"); break; } break; } } return(formula.ToString(), valueInPips); }