Ошибка расчета IV
Atom
12.09.2011


Добрый день!
Помогите, пожалуйста, разобраться со следующей проблемой:

Версия S# 3.2.9

При вызове данного выражения

Код

decimal _volatily = _targetOption.IV(TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto));


периодически выскакивает ошибка "Данная функция не поддерживает операции с плавающей точкой"[crying]

значения выражения TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto) при этом адекватные

Не уверен, но возможно ошибка появляется через какое-то время после запуска VolatilityQuotingStrategy (эта стртегия у меня запускается в рамках другой стратегии)

Заранее спасибо!

Теги:


Спасибо:


Артем_2

Фотография
Дата: 12.09.2011
Ответить


Такая же ошибка появляется в стакане по волатильности.

Код

private void OnQuotesChanged()
        {
            var ivDepth = this._depth.IV(); // ВОТ ТУТ ОШИБКА "Aritmetic Exception" Функция не поддерживает значения с плавающей точкой."

            this.GuiAsync(() =>
            {
                this.Quotes.Clear();
                this.Quotes.AddRange(ivDepth.Select(q => new IVQuote(q)));
            });
        }
Спасибо:

Mikhail Sukhov

Фотография
Дата: 12.09.2011
Ответить


Артем_2 Перейти

периодически выскакивает ошибка "Данная функция не поддерживает операции с плавающей точкой"[crying]


Приведите полный текст ошибки и входные параметры.
Спасибо:

Alexander

Фотография
Дата: 12.09.2011
Ответить


Перенёс тему.
Это всё же не о Квике, а о стратегиях и алгоритмах.
Будьте внимательнее в следующий раз.
Спасибо:

Артем_2

Фотография
Дата: 13.09.2011
Ответить


Mikhail Sukhov Перейти
Артем_2 Перейти

периодически выскакивает ошибка "Данная функция не поддерживает операции с плавающей точкой"[crying]


Приведите полный текст ошибки и входные параметры.


Параметры:
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:
Спасибо:

Alexander

Фотография
Дата: 13.09.2011
Ответить


Про параметры не понял.
Чем _depth равен?
Спасибо:

Артем_2

Фотография
Дата: 13.09.2011
Ответить


Код

decimal _volatily = _targetOption.IV(TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto));


В этой формуле нет Depth. Используется опцион. Какой параметр опциона нужен?
Спасибо:

Mikhail Sukhov

Фотография
Дата: 13.09.2011
Ответить


Артем_2 Перейти
Mikhail Sukhov Перейти
Артем_2 Перейти

периодически выскакивает ошибка "Данная функция не поддерживает операции с плавающей точкой"[crying]


Приведите полный текст ошибки и входные параметры.


Параметры:
TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto) = 2530
_targetOption = RI155000BU1@RTS


Посмотрите, чему равны в этот момент значения:

_targetOption.Strike
_targetOption.ExpiryDate
_targetOption.LastTrade.Price
_targetOption.Trader.MarketTime
_targetOption.GetUnderlyingFuture().LastTrade.Price
Спасибо:

Артем_2

Фотография
Дата: 14.09.2011
Ответить


Mikhail Sukhov Перейти
Артем_2 Перейти
Mikhail Sukhov Перейти
Артем_2 Перейти

периодически выскакивает ошибка "Данная функция не поддерживает операции с плавающей точкой"[crying]


Приведите полный текст ошибки и входные параметры.


Параметры:
TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto) = 2530
_targetOption = RI155000BU1@RTS


Посмотрите, чему равны в этот момент значения:

_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
Спасибо:

Mikhail Sukhov

Фотография
Дата: 15.09.2011
Ответить


Артем_2 Перейти
Добрый день!
Вот необходимые значения:

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
Спасибо: Артем_2

Артем_2

Фотография
Дата: 16.09.2011
Ответить



Спасибо большое!
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy