Добрый день! Помогите, пожалуйста, разобраться со следующей проблемой:
Версия S# 3.2.9
При вызове данного выражения
decimal _volatily = _targetOption.IV(TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto));
периодически выскакивает ошибка "Данная функция не поддерживает операции с плавающей точкой"😭
значения выражения TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto) при этом адекватные
Не уверен, но возможно ошибка появляется через какое-то время после запуска VolatilityQuotingStrategy (эта стртегия у меня запускается в рамках другой стратегии)
Заранее спасибо!
评论 (10)
登录 或 创建账户, 登录或注册以发表评论
Такая же ошибка появляется в стакане по волатильности.
Приведите полный текст ошибки и входные параметры.
Параметры: TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto) = 2530 _targetOption = RI155000BU1@RTS
Полный текст ошибки:
System.ArithmeticException was unhandled Message=Функция не поддерживает значения с плавающей точкой. Source=mscorlib StackTrace: в System.Math.Sign(Double value) в alglib.normaldistr.erf(Double x) в alglib.normaldistr.normaldistribution(Double x) в StockSharp.Algo.TraderHelper.Premium(Security option, Decimal deviation, Decimal riskFree, Decimal dividend) в StockSharp.Algo.TraderHelper.IV(Security option, Decimal premium, Decimal riskFree, Decimal dividend) в NAZAR_ROBOT.Strategies.OptionsStrategy.GetCurrent() в C:\Documents and Settings\Admin\Рабочий стол\PROJECT_NazarRobot\NAZAR_ROBOT\WpfApplication_NazarRobot\Strategies\OptoinsStrategy.cs:строка 76 в NAZAR_ROBOT.Strategies.OptionsStrategy.DoProcess(Object sender, EventArgs e) в C:\Documents and Settings\Admin\Рабочий стол\PROJECT_NazarRobot\NAZAR_ROBOT\WpfApplication_NazarRobot\Strategies\OptoinsStrategy.cs:строка 32 в System.Windows.Threading.DispatcherTimer.FireTick(Object unused) в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) в System.Windows.Threading.DispatcherOperation.InvokeImpl() в System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state) в System.Threading.ExecutionContext.runTryCode(Object userData) в System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) в System.Windows.Threading.DispatcherOperation.Invoke() в System.Windows.Threading.Dispatcher.ProcessQueue() в System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) в System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs) в MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) в MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) в System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) в System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame) в System.Windows.Threading.Dispatcher.Run() в System.Windows.Application.RunDispatcher(Object ignore) в System.Windows.Application.RunInternal(Window window) в System.Windows.Application.Run(Window window) в System.Windows.Application.Run() в NAZAR_ROBOT.App.Main() в C:\Documents and Settings\Admin\Рабочий стол\PROJECT_NazarRobot\NAZAR_ROBOT\WpfApplication_NazarRobot\obj\x86\Debug\App.g.cs:строка 0 в System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() в System.Threading.ThreadHelper.ThreadStart_Context(Object state) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) в System.Threading.ThreadHelper.ThreadStart() InnerException:
Посмотрите, чему равны в этот момент значения:
_targetOption.Strike _targetOption.ExpiryDate _targetOption.LastTrade.Price _targetOption.Trader.MarketTime _targetOption.GetUnderlyingFuture().LastTrade.Price
Добрый день! Вот необходимые значения:
TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto) = 8320 _targetOption.ID = RI155000BU1@RTS _targetOption.Strike = 155000 _targetOption.ExpiryDate = 17.10.2011 _targetOption.LastTrade.Price = 8100 _targetOption.Trader.MarketTime = 14.09.2011 13:31:10 _targetOption.GetUnderlyingFuture().LastTrade.Price = 154990
Покопал расчеты, понял что ошибка появляется только тогда, когда страйк равен цене сделки. Так что данные не совсем верные. Будем фиксить в 3.2.11
Перенёс тему. Это всё же не о Квике, а о стратегиях и алгоритмах. Будьте внимательнее в следующий раз.
Про параметры не понял. Чем _depth равен?
В этой формуле нет Depth. Используется опцион. Какой параметр опциона нужен?
Спасибо большое!