← 返回

Неправильно срабатывает LastTradePriceLess

Использую правило:

this.When(Security.LastTradePriceLess(StopProtectiveDelta))
                   .Do(() => 
                       AddedStopOrder(OrderDirections.Sell))
                   .Once();

Но стоп не ждет, пока цена пройдет StopProtectiveDelta, а сразу же выставляет заявку (цену заявки указывает верно, с учетом стопа и проскальзывания). Подскажите, в чем может быть проблема? Моя ошибка или ошибка в работе правила?

本主题对您有帮助吗?

分享主题

评论 (31)

登录创建账户, 登录或注册以发表评论

Alexander
Alexander

frontman: Использую правило:

this.When(Security.LastTradePriceLess(StopProtectiveDelta)) .Do(() => AddedStopOrder(OrderDirections.Sell)) .Once();

> Но стоп не ждет, пока цена пройдет StopProtectiveDelta, а сразу же выставляет заявку (цену заявки указывает верно, с учетом стопа и проскальзывания).
> Подскажите, в чем может быть проблема? Моя ошибка или ошибка в работе правила?

1) Никакого отношения к Плазе данная тема не имеет
2) Читайте разницу в методах:
[LastTradePriceLessAbsolute](http://stocksharp.com/doc/html/M_StockSharp_Algo_Strategies_StrategyRuleConditionHelper_LastTradePriceLessAbsolute.htm)
[LastTradePriceLess](http://stocksharp.com/doc/html/M_StockSharp_Algo_Strategies_StrategyRuleConditionHelper_LastTradePriceLess.htm)
frontman
frontman 作者

Именно. Пробовал и тот и другой метод. LastTradePriceLess(StopProtectiveDelta) . StopProtectiveDelta - и есть величина сдвига!

Alexander
Alexander

frontman: Именно. Пробовал и тот и другой метод. LastTradePriceLess(StopProtectiveDelta) . StopProtectiveDelta - и есть величина сдвига!

Пишите чему равна StopProtectiveDelta, чему равен LastTradePrice в момент начала экспорта. Стакан экспортируется?

frontman
frontman 作者

Да. Экспортируется(Правда размерностью 5). "...в момент начала экспорта." - это что значит? На момент начала работы стратегии в которой рег это правило или на момент вызова метода ITrader.StartExport()? На момент срабатывания правила StopProtectiveDelta = 10, а LastTradePrice = 15108, а цена защищаемой сделки = 15109, т.е 10 пунктов явно не пройдено.

Alexander
Alexander

frontman: Да. Экспортируется(Правда размерностью 5). "...в момент начала экспорта." - это что значит? На момент начала работы стратегии в которой рег это правило или на момент вызова метода ITrader.StartExport()? На момент срабатывания правила StopProtectiveDelta = 10, а LastTradePrice = 15108, а цена защищаемой сделки = 15109, т.е 10 пунктов явно не пройдено.

При чём тут цена защищаемой сделки? Чему равен LastTradePrice в момент установки правила?

frontman
frontman 作者

Данное правило устанавливается сразу после совершения сделки. Т.е LastTradePrice = цена защищаемой сделки = 15109

Alexander
Alexander

frontman: Данное правило устанавливается сразу после совершения сделки. Т.е LastTradePrice = цена защищаемой сделки = 15109

Не обязательно. Где вы устанавливаете это правило? Время проходит и сделки от момента совершения сделки до того как вы понимаете что оно сработало.

Ещё раз, дубль 3, выведите LastTradePrice перед установкой правила. И в момент срабатывания правила.

frontman
frontman 作者

Я понял. Т.е цена берется с момента установки правила... Правда очень странно то что 10 пунктов проходит... Но а как быть тогда с LastTradePriceLessAbsolute? Для нее я рассчитывал порог явно. А результат тот же...

Alexander
Alexander

frontman: Я понял. Т.е цена берется с момента установки правила... Правда очень странно то что 10 пунктов проходит... Но а как быть тогда с LastTradePriceLessAbsolute? Для нее я рассчитывал порог явно. А результат тот же...

Дубль 4. Пишите LastTradePrice в момент установки правила, цену которую вы передаёте и цену в момент срабатывания.

Терпение у нас тоже не безгранично. Одни и те же ответы писать надоедает.

frontman
frontman 作者

15:53:57.372 | | Спред стратегия | Стратегия запущена. 15:53:58.622 | | Спред стратегия | Обработка Limit заявки 0 на Buy с номером 5338088677. 15:53:59.825 | | Спред стратегия | Обработка Limit заявки 57134139 на Buy с номером 5338089549. 15:53:59.825 | | Спред стратегия | Обработка Limit заявки 0 на Buy с номером 5338089565. 15:53:59.825 | | Спред стратегия | Обработка Limit заявки 57134140 на Sell с номером 5338089587. 15:53:59.919 | | Спред стратегия | Отменяю текущий спред 15:54:00.028 | | Спред стратегия | Отменяю текущий спред 15:54:00.044 | | Спред стратегия | Позиция выводимая при срабатывании PositionChanged: -1 15:54:00.060 | | Спред стратегия | Новая Sell сделка 417650984 на 1 заявки 57134140. 15:54:00.091 | | Спред стратегия | Позиция расчитываемая мною: -1 15:54:00.091 | | Спред стратегия | Позиция расчитываемая PositionManager: -1 15:54:00.107 | | PS | Стратегия запущена. <mark>15:54:00.107 | | PS | Порог цены: 15188,00000 15:54:00.107 | | PS | Цена на момент создания правила: 15178,00000 15:54:00.357 | | PS | Цена на момент срабатывания правила: 15175,00000</mark> 15:54:00.685 | | Спред стратегия | Обработка Limit заявки 57134145 на Buy с номером 5338090224. 15:54:00.685 | | PS | Обработка Limit заявки 57134145 на Buy с номером 5338090224. 15:54:00.700 | | PS | Стратегия останавливается. 15:54:00.700 | | PS | Стратегия остановлена. 15:54:00.716 | | Спред стратегия | Новая Buy сделка 417651006 на 1 заявки 57134145. 15:54:00.716 | | Спред стратегия | Позиция расчитываемая мною: 0 15:54:00.716 | | Спред стратегия | Позиция расчитываемая PositionManager: -1 15:54:00.903 | | Спред стратегия | Обработка Limit заявки 57134146 на Buy с номером 5338090351. 15:54:00.903 | | Спред стратегия | Обработка Limit заявки 57134147 на Sell с номером 5338090377. 15:54:01.122 | | Спред стратегия | Отменяю текущий спред 15:54:01.247 | | Спред стратегия | Отменяю текущий спред 15:54:01.341 | | Спред стратегия | Отменяю текущий спред 15:54:01.450 | | Спред стратегия | Отменяю текущий спред 15:54:02.122 | | Спред стратегия | Обработка Limit заявки 0 на Buy с номером 5338091236. 15:54:02.778 | | Спред стратегия | Обработка Limit заявки 0 на Buy с номером 5338091770. 15:54:05.825 | | Спред стратегия | Обработка Limit заявки 57134156 на Buy с номером 5338093840. 15:54:05.825 | | Спред стратегия | Обработка Limit заявки 0 на Buy с номером 5338093863. 15:54:05.935 | | Спред стратегия | Обработка Limit заявки 57134157 на Sell с номером 5338093898. 15:54:06.153 | | Спред стратегия | Отменяю текущий спред 15:54:06.153 | | Спред стратегия | Позиция выводимая при срабатывании PositionChanged: -2 15:54:06.153 | | Спред стратегия | Новая Sell сделка 417651364 на 1 заявки 57134157. 15:54:06.153 | | Спред стратегия | Позиция расчитываемая мною: -1 15:54:06.153 | | Спред стратегия | Позиция расчитываемая PositionManager: -2 15:54:06.153 | | PS | Стратегия запущена. <mark>15:54:06.153 | | PS | Порог цены: 15171,00000 15:54:06.153 | | PS | Цена на момент создания правила: 15161,00000 15:54:06.153 | | PS | Цена на момент срабатывания правила: 15161,00000</mark> 15:54:06.591 | | Спред стратегия | Обработка Limit заявки 57134159 на Buy с номером 5338094388. 15:54:06.591 | | PS | Обработка Limit заявки 57134159 на Buy с номером 5338094388. 15:54:06.591 | | PS | Стратегия останавливается. 15:54:06.591 | | PS | Стратегия остановлена. 15:54:06.591 | | Спред стратегия | Новая Buy сделка 417651392 на 1 заявки 57134159. 15:54:06.591 | | Спред стратегия | Позиция расчитываемая мною: 0 15:54:06.591 | | Спред стратегия | Позиция расчитываемая PositionManager: -2 15:54:07.716 | | Спред стратегия | Стратегия останавливается. 15:54:07.716 | | Спред стратегия | Стратегия остановлена.

frontman
frontman 作者

Используется LastTradePriceLessAbsolute и LastTradePriceMoreAbsolute

Alexander
Alexander

frontman: Используется LastTradePriceLessAbsolute и LastTradePriceMoreAbsolute

Покажите создание и вывод. Где что выводится? вывод одинаков что для LastTradePriceMoreAbsolute, что для LastTradePriceLessAbsolute

frontman
frontman 作者
        ```csharp

this.AddInfoLog("Порог цены: {0}", stopPrice); if (Trade.Order.Direction == OrderDirections.Buy) { this.AddInfoLog("Цена на момент создания правила: {0}", Security.LastTrade.Price); this.When(Security.LastTradePriceLessAbsolute(stopPrice)) .Do(() => { this.AddInfoLog("Цена на момент срабатывания правила: {0}", Security.LastTrade.Price); AddedStopOrder(OrderDirections.Sell); }) .Once(); } else { this.AddInfoLog("Цена на момент создания правила: {0}", Security.LastTrade.Price); this.When(Security.LastTradePriceMoreAbsolute(stopPrice)) .Do(() => { this.AddInfoLog("Цена на момент срабатывания правила: {0}", Security.LastTrade.Price); AddedStopOrder(OrderDirections.Buy); }) .Once(); }

Alexander
Alexander

Сделайте разную печать. Такое впечатление что срабатывает оба раза LastTradePriceLessAbsolute. И срабатывает понятное дело правильно.

frontman
frontman 作者

16:21:03.294 | | PS | <mark>Порог цены: 15158,00000 16:21:03.294 | | PS | Цена на момент создания правила LastTradePriceMoreAbsolute: 15148,00000 16:21:03.310 | | PS | Цена на момент срабатывания правила LastTradePriceMoreAbsolute: 15149,00000</mark>

16:21:13.778 | | PS | Стратегия запущена. 16:21:13.778 | | PS | <mark>Порог цены: 15165,00000 16:21:13.778 | | PS | Цена на момент создания правила LastTradePriceMoreAbsolute: 15155,00000 16:21:13.778 | | PS | Цена на момент срабатывания правила LastTradePriceMoreAbsolute: 15158,00000</mark>

<mark>16:21:14.669 | | PS | Порог цены: 15145,00000 16:21:14.669 | | PS | Цена на момент создания правила LastTradePriceLessAbsolute: 15155,00000 16:21:14.669 | | PS | Цена на момент срабатывания правила LastTradePriceLessAbsolute: 15154,00000</mark>

frontman
frontman 作者
this.AddInfoLog("Порог цены: {0}", stopPrice);
            if (Trade.Order.Direction == OrderDirections.Buy)
            {
                this.AddInfoLog("Цена на момент создания правила LastTradePriceLessAbsolute: {0}", Security.LastTrade.Price);
                this.When(Security.LastTradePriceLessAbsolute(stopPrice))
                    .Do(() =>
                            {
                                this.AddInfoLog("Цена на момент срабатывания правила LastTradePriceLessAbsolute: {0}", Security.LastTrade.Price);
                                AddedStopOrder(OrderDirections.Sell);
                            })
                    .Once();
            }
            else
            {
                this.AddInfoLog("Цена на момент создания правила LastTradePriceMoreAbsolute: {0}", Security.LastTrade.Price);
                this.When(Security.LastTradePriceMoreAbsolute(stopPrice))
                    .Do(() =>
                            {
                                this.AddInfoLog("Цена на момент срабатывания правила LastTradePriceMoreAbsolute: {0}", Security.LastTrade.Price);
                                AddedStopOrder(OrderDirections.Buy);
                            })
                    .Once();
            }
Alexander
Alexander

Вроде исправил. в 4.0.2 будет.

frontman
frontman 作者

Благодарю. А не могли бы вы хотя бы примерно расписать причины? Ну так для расширения так сказать кругозора)

Alexander
Alexander

frontman: Благодарю. А не могли бы вы хотя бы примерно расписать причины? Ну так для расширения так сказать кругозора)

Какой ответ ожидаете? :) Ошибка при разработке логического характера.

frontman
frontman 作者

) Ну понял) В принципе согласен с вами не видя исходников врятли я что то пойму)

Mikhail Sukhov
Mikhail Sukhov

frontman: ) Ну понял) В принципе согласен с вами не видя исходников врятли я что то пойму)

Исходники Плазы видны, а вы до сих пор ни одного коммита не сделали.😂

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

frontman
frontman 作者

А разве LastTradePriceLess и другие стандартные правила не лежат в StockSharp.Algo - закрытой для простых смертных части StokSharpa?! Я прост исходников Algo не видел ни разу. Давно бы уже сам залез и посмотрел да и подправил...

Alexander
Alexander

frontman: А разве LastTradePriceLess и другие стандартные правила не лежат в StockSharp.Algo - закрытой для простых смертных части StokSharpa?! Я прост исходников Algo не видел ни разу. Давно бы уже сам залез и посмотрел да и подправил...

О скольких проблемах и недостатках в плазе вы отписывались? Сколько было фиксов?

Вот с Algo было бы тоже самое.

Есть желание доказать что нет? Есть желание сделать так, чтоб в будущем мы давали исходники вам для исправления? Велкам к фиксингу багов в плазе! 👍

frontman
frontman 作者

😀 Это типо я как Фауст а вы как дьвол😀 Не я не против. Просто с такими несложными вещами как правила я б еще разобрался, а вот с плазой... Ну правда я не насток опытен) Но все равно спасибо) Я буду оч хорошим правд😀

Mikhail Sukhov
Mikhail Sukhov

frontman: Не я не против. Просто с такими несложными вещами как правила я б еще разобрался, а вот с плазой...

По Плазе есть документация, примеры. Та же утилита для проверки пропускной способности логина... Задачи есть на любой уровень знаний. Было бы желание со стороны тех, кто якобы хочет, но не может.

frontman
frontman 作者

Щас вот основные загвоздки(лично у меня с работой правил и стандартных стратегий). А их я как раз пофиксить не могу...

frontman
frontman 作者

Так... Как мне использовать систему управ версиями? Где нибуть есть топик о ом как влиться в ряды разработчиков?)

Alexander
Alexander

frontman: Так... Как мне использовать систему управ версиями? Где нибуть есть топик о ом как влиться в ряды разработчиков?)

На codeplex Но вначале необходимо понять что конкретно вы хотите править, чтоб мы вас подключили к разработчикам и дали доступ.

frontman
frontman 作者

Хм) Ну вот например сейчас наткнулся на след проблему: У меня есть приложение которое подключено к роутеру и работает с ним(Роутер плазы) я попытался подключиться к роутеру другой прогой и на методе Connect() у меня эксепшен вывалился. Вот хотелось бы залезть в этот метод и найти причину и исправить возможно...

Alexander
Alexander

frontman: Хм) Ну вот например сейчас наткнулся на след проблему: У меня есть приложение которое подключено к роутеру и работает с ним(Роутер плазы) я попытался подключиться к роутеру другой прогой и на методе Connect() у меня эксепшен вывалился. Вот хотелось бы залезть в этот метод и найти причину и исправить возможно...

Ну так кто мешает? Исходники здесь. Уже много раз говорили. Открыты для всех. Будет фикс - пишите, добавим в группу, дадим возможность внесения изменений.

frontman
frontman 作者

Понял.Ок.