← Voltar

ошибка эмуляционный plazaTrader

Версия 4.1 (beta) Переписал, под новую версию, для отлаживания решил поработать через эмуляционый трейдер

RealTimeEmulationTrader<PlazaTrader>

Стратегия работает, но вывод в график эквити нет, также не появляется информация в отчете о сделках, только о заявках.

Вот стек трейс


Ошибка обработки данных

System.MissingMethodException: Method not found: 'Void StockSharp.BusinessEntities.MyTrade.set_PnL(System.Decimal)'.

at StockSharp.Algo.Strategies.Strategy.#=qkgZFPxGi$ECujYjIxJexEA==(IEnumerable`1 #=qcE736mub7VO2W6WF6_Ksjw==)

at StockSharp.Algo.Strategies.Strategy.#=qMsE_t0UvJbk5pl_d10bUg65YKxFVfxDw_sxPZZdceso=(IEnumerable`1 #=qAVYNiKdFDaWf7$E79yD9HA==)

at System.Action`1.Invoke(T obj)

at Ecng.Common.DelegateHelper.SafeInvoke(Action`1 handler, T arg)

at StockSharp.Algo.Testing.RealTimeEmulationTrader1.#=q31tcw46kVie247LG7JC3rawsTV_4PPMiNb3nfHQhRAg=(IEnumerable1 #=q1SB9HRPlt19vFFcTcgdNUA==)

at Ecng.Common.DelegateHelper.SafeInvoke(Action`1 handler, T arg)

at StockSharp.Algo.Testing.MarketEmulator.#=quqtSnuGq5f5POgxeDleFXw==(Order #=qVYBEhfpbngiIldDzjfeNVw==, Decimal #=qB_q5TM5NqOVbmG8Sh_y0lA==, Decimal #=qJy$qJWxHkEld9IY5ASavhQ==)

at StockSharp.Algo.Testing.MarketEmulator.#=qf9CQicKzakD5vLTcalBhVaXvGMTvBHWEg0Z_wjOs9Fs=(Order #=qJ$avBfwd$514nCN7kM9DcA==, MarketDepth #=qOle93rDk3Vy4zS6UNYpYQw==, Boolean #=qt3rmFrcGsK2eVx1hmI0vXg==)

at StockSharp.Algo.Testing.MarketEmulator.#=qt9mNe1nnM0L_bVvVy_asHQ==(LinkedListNode`1 #=qn9ljsNq8MfAm9iGN4eGuGg==)

ОК

Este tópico foi útil?

Compartilhar tópico

Comentários (17)

Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário

fish
fish Autor

через реальный PlazaTrader также ошибка


Ошибка обработки данных

System.MissingMethodException: Method not found: 'Void StockSharp.BusinessEntities.MyTrade.set_PnL(System.Decimal)'.

at StockSharp.Algo.Strategies.Strategy.#=qkgZFPxGi$ECujYjIxJexEA==(IEnumerable`1 #=qcE736mub7VO2W6WF6_Ksjw==)

at StockSharp.Algo.Strategies.Strategy.#=qMsE_t0UvJbk5pl_d10bUg65YKxFVfxDw_sxPZZdceso=(IEnumerable`1 #=qAVYNiKdFDaWf7$E79yD9HA==)

at System.Action`1.Invoke(T obj)

at Ecng.Common.DelegateHelper.SafeInvoke(Action`1 handler, T arg)

at Ecng.ComponentModel.EventsContainer1.Raise(IEnumerable1 items)

ОК

fish
fish Autor

также вроде опять появился перебор позиции при MQS, пока не могу предоставить лог работы, пришлось оперативно отключать робота :D

Alexander
Alexander

Исправили, обновил сборки.

fish
fish Autor

спасибо большое!!!! удивляюсь Вашей оперативностью! 👍

fish
fish Autor

Проблема1: не правильно отображается доходность, график эквити

Завышена прибыль по эквити, т.е. реально к примеру алгоритм заработал 850 а робот уже отражает 2000 для индекса РТС (видимо с переводом проблемы)

Проблема2: перебор позиции

лог работы в виде отчета о сделках, там макс должно было быть 1 позиция, либо -1 либо + 1 В итоге доходило до 5 Как то была эта проблема но позже ее пофиксили, к примеру у предыдущей версии на которой я работал данной ошибки нет, позы набираются ровно, в коде робота поменял только событийную модель, в связи с последними изменениями

Alexander
Alexander

fish: Проблема2: перебор позиции

лог работы в виде отчета о сделках, там макс должно было быть 1 позиция, либо -1 либо + 1 В итоге доходило до 5 Как то была эта проблема но позже ее пофиксили, к примеру у предыдущей версии на которой я работал данной ошибки нет, позы набираются ровно, в коде робота поменял только событийную модель, в связи с последними изменениями

Посмотрел детально по отчёту и посчитал по сделкам.

Всё считается верно - у вас действительно на 521 и 523 сделке стала позиция = 5. На сделках 256, 260, 264, 268, 274, 278, 282, 432 и т.д. - позиция = 4.

Так что проблема не в определении позиции, а в вашем алгоритме.

По первому пункту - напишите чему равен MinStepPrice у инструмента. Может плаза криво оттранслировала. И какой инструмент?

P.S. Просьба для новых проблем создавать новые темы, а не писать в старых. Данные проблемы к эмуляционному plazaTrader отношения не имеют.

fish
fish Autor

да забыл добавить это реальный трейдер, а не эмуляционный

pyhta4og
pyhta4og

Equity рисуется в рублях. Перевод в рубли идет умножением PnL сделки в пунктах на Security.MinStepPrice.

Возможно в вашем случае MinStepPrice некорректно обновился через Plazatrader. Каким инструментом торгуете?

ЗЫ. Форма кривой эквити красивая) Всегда такая? Арбитраж?

fish
fish Autor

да знаю что в рублях, в предыдущей версии на которой работал (около 16700 сборка) корректно отображается

  • как писал выше нет проблем с перебором позиции

Арбитраж?

нет

Форма кривой эквити красивая) Всегда такая?

увы нет :D

fish
fish Autor

Посмотрел детально по отчёту и посчитал по сделкам.

Всё считается верно - у вас действительно на 521 и 523 сделке стала позиция = 5. На сделках 256, 260, 264, 268, 274, 278, 282, 432 и т.д. - позиция = 4.

Так что проблема не в определении позиции, а в вашем алгоритме.

Александр, эти сделки я скопировал с терминала (чтобы показать о проблеме набора лишней позиции), к сожалению лог работы самого робота не сохранил. В алгоритме исключительно заменил событийную логику. Есть алгоритм написанный на сборке (16700 приблизительно), он работает без перебора позиции, в этом алгоритме поменял в нескольких местах событийную логику в соответствии с новым синтаксисом ее написания. Т.е. логика самого алгоритма не поменялась.

В понедельник попробую версию которую выкладывает Михаил, так как помню что у вас на старых версиях сохранялась эта проблема с перебором позиции, а у Михаила нет. Возможно у Вас не полная совместимость версий? В понедельник отпишусь.

По первому пункту - напишите чему равен MinStepPrice у инструмента. Может плаза криво оттранслировала. И какой инструмент?

RIM2

P.S. Просьба для новых проблем создавать новые темы, а не писать в старых. Данные проблемы к эмуляционному plazaTrader отношения не имеют.

да Вы правы, исправлюсь!

Alexander
Alexander

fish: Александр, эти сделки я скопировал с терминала (чтобы показать о проблеме набора лишней позиции), к сожалению лог работы самого робота не сохранил. В алгоритме исключительно заменил событийную логику. Есть алгоритм написанный на сборке (16700 приблизительно), он работает без перебора позиции, в этом алгоритме поменял в нескольких местах событийную логику в соответствии с новым синтаксисом ее написания. Т.е. логика самого алгоритма не поменялась.

В понедельник попробую версию которую выкладывает Михаил, так как помню что у вас на старых версиях сохранялась эта проблема с перебором позиции, а у Михаила нет. Возможно у Вас не полная совместимость версий? В понедельник отпишусь.

Ещё раз. Можете сами посчитать позицию по тем сделкам что вы дали в excel - там действительно достигает позиции равной 4 и 5. Т.е. проблемы в подсчёте позиции нет. По сделкам ровно сколько отображает PositionManager, столько и получается.

Совместимость версий у нас полная, мы собираем релизы из одного места. Все исходники - up to date.

Чему равен MinStepPrice у инструмента? Уже в третий раз задаём вопрос.

fish
fish Autor

Ещё раз. Можете сами посчитать позицию по тем сделкам что вы дали в excel - там действительно достигает позиции равной 4 и 5. Т.е. проблемы в подсчёте позиции нет. По сделкам ровно сколько отображает PositionManager, столько и получается.

прежде чем отправить отчет я посчитал позиции из отчета, по этому и отправил его, в подтверждения того, что ошибка есть. данный отчет скопирован с терминала, т.е. это сделки не из логики робота, а именно сделки совершенный по факту! сделки из логики робота я не сохранил. проблему перебора как раз выявил наблюдая в квике за работой алгоритма подключенного по плазе, там и заметил перебор! Может это из за асинхроности отправки заявок?

Чему равен MinStepPrice у инструмента? Уже в третий раз задаём вопрос.

шаг цены 5 пунктов стоимость шага цены примерно 3.1 руб. думаю это можно было узнать и из названия инструмента, я ведь написал RIM2

Alexander
Alexander

Ещё раз. Можете сами посчитать позицию по тем сделкам что вы дали в excel - там действительно достигает позиции равной 4 и 5. Т.е. проблемы в подсчёте позиции нет. По сделкам ровно сколько отображает PositionManager, столько и получается.

прежде чем отправить отчет я посчитал позиции из отчета, по этому и отправил его, в подтверждения того, что ошибка есть. данный отчет скопирован с терминала, т.е. это сделки не из логики робота, а именно сделки совершенный по факту! сделки из логики робота я не сохранил. проблему перебора как раз выявил наблюдая в квике за работой алгоритма подключенного по плазе, там и заметил перебор! Может это из за асинхроности отправки заявок?

Чему равен MinStepPrice у инструмента? Уже в третий раз задаём вопрос.

шаг цены 5 пунктов стоимость шага цены примерно 3.1 руб. думаю это можно было узнать и из названия инструмента, я ведь написал RIM2

Давайте ещё раз. По первому: в чём заключается ошибка? В том, что неверно отображается позиция? Или в том что совершаются сделки которые совершаться не должны?

По второму: я прекрасно знаю шаг цены и стоимость шага цены по спецификации. Вопрос был чему они равны у данного инструмента в вашем роботе. Ведь эти значения при подсчёте PnL берутся именно из той информации что передаёт биржа. т.е. Security.MinStepPrice

fish
fish Autor

Давайте ещё раз. По первому: в чём заключается ошибка? В том, что неверно отображается позиция? Или в том что совершаются сделки которые совершаться не должны?

совершаются сделки которые совершаться не должны! в сборке (16700 приблизительно) этого нет! работает как следует! в новой версии заменил исключительно синтаксис, логика прежняя!

По второму: я прекрасно знаю шаг цены и стоимость шага цены по спецификации. Вопрос был чему они равны у данного инструмента в вашем роботе. Ведь эти значения при подсчёте PnL берутся именно из той информации что передаёт биржа. т.е. Security.MinStepPrice

ответить не смогу, в понедельник посмотрю!

Alexander
Alexander

fish: совершаются сделки которые совершаться не должны! в сборке (16700 приблизительно) этого нет! работает как следует! в новой версии заменил исключительно синтаксис, логика прежняя!

Какая стратегия используется? Покажите код создания стратегии.

fish
fish Autor

используется MQS в различных вариациях

создаю так:

Quoting = new MarketQuotingStrategy(order, new Unit(X), new Unit(X))
{
    Volume = 1,
    Security = Y,
    Trader = Trader,
    Portfolio = Portfolio
};

base.ChildStrategies.Add(Quoting);
Alexander
Alexander

fish: используется MQS в различных вариациях

создаю так:

Quoting = new MarketQuotingStrategy(order, new Unit(X), new Unit(X)) ;

base.ChildStrategies.Add(Quoting);



Приведите дополнительный лог - по инциализации (чтоб точно понимать что она запускается 1 раз), ордерам, сделкам и изменению позиции стратегии.
С той версии что вы указываете у нас никаких изменений не было, пока совсем не ясно почему у вас такие проблемы.



У кого-нибудь ещё наблюдаются проблемы с перебором позиции?