← Voltar

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

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

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

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

Este tópico foi útil?

Compartilhar tópico

Comentários (31)

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

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 Autor

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

Alexander
Alexander

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

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

frontman
frontman Autor

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

Alexander
Alexander

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

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

frontman
frontman Autor

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

Alexander
Alexander

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

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

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

frontman
frontman Autor

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

Alexander
Alexander

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

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

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

frontman
frontman Autor

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 Autor

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

Alexander
Alexander

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

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

frontman
frontman Autor
        ```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 Autor

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 Autor
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 Autor

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

Alexander
Alexander

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

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

frontman
frontman Autor

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

Mikhail Sukhov
Mikhail Sukhov

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

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

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

frontman
frontman Autor

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

Alexander
Alexander

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

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

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

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

frontman
frontman Autor

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

Mikhail Sukhov
Mikhail Sukhov

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

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

frontman
frontman Autor

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

frontman
frontman Autor

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

Alexander
Alexander

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

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

frontman
frontman Autor

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

Alexander
Alexander

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

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

frontman
frontman Autor

Понял.Ок.