← Zurück

ошибка эмуляционный 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==)

ОК

War dieses Thema hilfreich?

Thema teilen

Kommentare (17)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

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 раз), ордерам, сделкам и изменению позиции стратегии.
С той версии что вы указываете у нас никаких изменений не было, пока совсем не ясно почему у вас такие проблемы.



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