Существует две распространенные причины:
- Рыночные данные, из-за того, как быстро они обновляются, иногда выдают неверные данные в зависимости от поставщика. Если вы потребляете напрямую с биржи, вам нужно написать код для этого. Некоторые провайдеры (например, OPRA ) будут фильтровать или помечать плохие тики для вас.
- Если вы постоянно сталкиваетесь с этой проблемой, это связано с такими вещами, как размер или масштаб тика. Некоторые биржи делают это по-разному, но эффективно вам нужно умножить определенные ценовые поля на определенный масштаб. За подробностями обращайтесь к документации поставщика данных.
Если это наблюдается очень редко, вы, вероятно, просто получили плохую цену. Да, это абсолютно будет случаться время от времени, и вы должны быть готовы к этому, если только вы не хотите стать следующим Рыцарь Капитал .
Во всех обработчиках I ' Мы написали (или внесли свой вклад), что есть «проверка работоспособности», чтобы проверить, хороши ли данные. В зависимости от того, что вы пытаетесь выполнить sh, достаточно просто сбросить плохой тик.
Другое решение, которое я обычно использовал, - это альтернативные потоки данных (обычно называемые «A» и «B»). потоки или аналогичные). Если вы получаете плохую галочку в одном потоке, используйте другой.
Тем не менее, это не имеет прямого отношения к языку программирования, но в основном он обрабатывает причуды с API / данными.
Редактировать
Также остерегайтесь проблем с потоками здесь. Убедитесь, что CurrentPrice
не обновляется несколькими потоками одновременно. decimal
- это 128-битная базовая 10 с плавающей запятой, и это больше, чем размер слова в настоящее время (32 или 64 бита).
Вам может потребоваться синхронизировать чтение и запись в него, что вы можете делать различными способами. способов. Приведенная выше информация по-прежнему применима, однако.