public static void sendValueDouble2(ValueDouble item) { var context = GlobalHost.ConnectionManager.GetHubContext <TradeHub>(); context.Clients.All.addValueDouble2(item); //Console.WriteLine(String.Format("{0:dd/MM/yyyy H:mm:ss.fff}, {1}, сигнал Indicator1", DateTime.Now, item)); }
public override IdpeMessage Parse(bool onlyConstraints) { try { this._ParseResult = new IdpeMessage(IdpeMessageCodes.IDPE_SUCCESS); if (base.Value.ToUpper() != "NULL") { if (ValueDouble == null) { TryExtractingSpecificType(); if (ValueDouble == null) //still null { this._ParseResult = new IdpeMessage(IdpeMessageCodes.IDPE_DECIMAL_TYPE_DATA_VALIDATION_FAILED); this._ParseResult.Message = string.Format(this._ParseResult.Message, PrintRowColPosition(), Type, base.Value); } } else { Value = ValueDouble.ToString(); CheckConstraints(); } } } catch (Exception ex) { ExtensionMethods.TraceError(ex.ToString()); this._ParseResult = new IdpeMessage(IdpeMessageCodes.IDPE_DECIMAL_TYPE_DATA_VALIDATION_FAILED); this._ParseResult.Message = string.Format(this._ParseResult.Message, PrintRowColPosition(), Type, Value); } _IsParsed = true; return(this._ParseResult); }
/* * public override void OnItemAdded(Bar item) * { * }*/ /// <summary> /// здесь проверяем пересечение отклонением уровней /// </summary> /// <param name="item"></param> public void OnValueItemAdded(ValueDouble item) { //уровень текщий //уровень предыдущий // ------------------------------------------------- #region //пересечение уровней // ------------------------------------------------- Levels.Do(maDeviation.De); //IList<bool> ПересеченияСверху = levels.ПересеченияСверху; //IList<bool> ПересеченияСнизу = levels.ПересеченияСнизу; ПересечениeСверху.Add(Levels.ПересечениеСверху); ПересечениеСнизу.Add(Levels.ПересечениеСнизу); Уровень.Add(Levels.УровеньТекущий); //уровень текщий УровеньПрошлый.Add(Levels.УровеньПрошлый); //уровень предыдущий #endregion // ------------------------------------------------- ПроверитьПризнакНаОткрытиеВерхний(); ПроверитьПризнакНаОткрытиеНижний(); ПроверитьПризнакНаЗакрытиеВерхний(); ПроверитьПризнакНаЗакрытиеНижний(); // ------------------------------------------------- #region // Проверка сигналов по времени // ------------------------------------------------- #endregion // ------------------------------------------------- // ------------------------------------------------- #region // Подача заявок // ------------------------------------------------- /// Сформировать Сигналы на открытие закрытие позиций СформироватьСигналы(); #endregion // ------------------------------------------------- }
public static bool TryCreateValue(string typeString, string valueString, out Value value) { value = null; var isNull = valueString.Equals("NULL") || valueString.Equals("null") || valueString.Equals(""); switch (typeString) { case "integer": if (isNull) { value = new ValueInt(null); return(true); } if (!long.TryParse(valueString, out var intResult)) { return(false); } value = new ValueInt(intResult); return(true); case "string": if (isNull) { value = new ValueString(null); return(true); } value = new ValueString(valueString.Trim('\"')); return(true); case "time": if (isNull) { value = new ValueTime(null as RefStruct <long>); return(true); } value = new ValueTime(valueString); return(true); case "double": if (isNull) { value = new ValueDouble(null); return(true); } if (!double.TryParse(valueString, NumberStyles.Any, CultureInfo.InvariantCulture, out var doubleResult)) { return(false); } value = new ValueDouble(doubleResult); return(true); case "boolean": if (isNull) { value = new ValueBoolean(null); return(true); } if (!bool.TryParse(valueString, out var booleanResult)) { return(false); } value = new ValueBoolean(booleanResult); return(true); case "duration": if (isNull) { value = new ValueDuration(null as RefStruct <long>); return(true); } value = new ValueDuration(valueString); return(true); case "contact": if (isNull) { value = new ValueContact(null, null); return(true); } var split = valueString.Split(' '); if (split.Length != 2 && split.Length != 3) { return(false); } if (!IPAddress.TryParse(split[1], out var address)) { return(false); } var port = 555; if (split.Length == 3 && !int.TryParse(split[2], out port)) { return(false); } if (!split[0].StartsWith("/")) { split[0] = '/' + split[0]; } value = new ValueContact(new PathName(split[0]), address, port); return(true); } var splitByOf = typeString.Split(" of ", 2); if (splitByOf.Length != 2) { return(false); } var splitBySpace = splitByOf[1].Split(' ', 2); if (splitBySpace.Length != 2) { return(false); } if (!int.TryParse(splitBySpace[0], out var count)) { return(false); } // based on StackOverflow answer: https://stackoverflow.com/a/3147901 var collectionStrings = Regex.Split(valueString.Trim('{', '}', '[', ']'), ",(?=(?:[^']*'[^']*')*[^']*$)") .Select(s => s.Trim(' ')).ToList(); if (collectionStrings.Count != count) { if (count != 0 && (collectionStrings.Count != 1 || !string.IsNullOrEmpty(collectionStrings[0]))) { return(false); } collectionStrings = new List <string>(count); } var elements = new List <Value>(count); var elementTypeString = splitBySpace[1]; foreach (var element in collectionStrings) { if (!TryCreateValue(elementTypeString, element, out var elementVal)) { return(false); } elements.Add(elementVal); } if (!TryGetPrimitiveAttributeType(elementTypeString, out var elementType)) { return(false); } switch (splitByOf[0]) { case "set": value = new ValueSet(elements.ToHashSet(), elementType); return(true); case "list": value = new ValueList(elements, elementType); return(true); } return(false); }