RealTimeEmulationTrader QuikTrader TakeProfitStopLimit
Atom Ответить
12.10.2011


Заявка, приведенная ниже регистрируется но не отрабатывает при наступлении условий. Вопрос: А работает ли TakeProfitStopLimit под RealTimeEmulationTrader <QuikTrader> ?

TargetOrder22 = new Order // CreateTakeProfitAndStopLimit() //Sell back
{
Type = OrderTypes.Conditional,
Volume = 1,
Price = _contactRIZ1.MinPrice,
Security = _contactRIZ1,
Direction = OrderDirections.Sell,
Portfolio = MainWindow.Instance._portfolio,
StopCondition = new QuikStopCondition
{
Type = QuikStopConditionTypes.TakeProfitStopLimit,
ExpiryDate = DateTime.MaxValue,
StopPrice = _contactRIZ1.ShrinkPrice(_contactRIZ1.BestAsk.Price + (decimal)dblTragetProfit),
StopLimitPrice = _contactRIZ1.ShrinkPrice(_contactRIZ1.BestAsk.Price- (decimaldblTragetProfit),
Offset = new Unit((decimal)dblTragetProfit), // Величина отступа от максимума (минимума) цены последней сделки.
Spread = new Unit(0), // Величина защитного спрэда
//ActiveTime = new Range<DateTime>,
ActiveTime = new Range<DateTime>(DateTime.Today - TimeSpan.FromDays(5), DateTime.Today + TimeSpan.FromDays(5)),
},
};



Спасибо:




33 Ответов
1 2  >
Alexander

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


нет, стоп заявки не работают
Спасибо: lshaton

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 12.10.2011
Ответить


Стоп заявки в эмуляторе не работают. Работают только защитные стратегии S#.
Спасибо: lshaton

lshaton

Фотография
Программист
Дата: 13.10.2011
Ответить


Вот жаль, со стратегиями одна проблема, что надо писать собственный кусок StrategyRule, если событие, запускающее стратегию не входить в список стандартных. Например,если стратегия подключается к событийной модели с нестандартным событием (хочу купить акциию к дню рождения моей двоюродной тети:). Вот если бы было что-то типа:
.When(день рождения моей двоюродной тети.IsTrue()).Do(() =>{...RegisterOrder(MyOrder)})
.. именно пооизвольный делегат внутри Do() и простой предикат внутри When().
Может это можно легко сделать, а я чего-то не догоняю?
Автор топика
Спасибо:

Alexander

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


Так напишите свой StrategyRule и используйте как хотите. В чём пожелание \ сложность?
суметь понять "день рождение двоюродной тети"? :))
Спасибо:

lshaton

Фотография
Программист
Дата: 14.10.2011
Ответить


Alexander Mukhanchikov Перейти
Так напишите свой StrategyRule и используйте как хотите. В чём пожелание \ сложность?
суметь понять "день рождение двоюродной тети"? :))


Спасибо. Как я понимаю самое простое правило должно выглядеть так:
public static class MyAntStrategyRule:StrategyRule
{
public StrategyRule MyAntStrategyRule( DateTime MyAntBirthday)
{ if (MyAntBirthday == DateTime.Today) this.Activate();
return this;}
}
Если можно еще проще - подскажите.
Автор топика
Спасибо:

andrv

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


Добрый день!
При попытке добавить защитные стратегии (как в документации) в SampleHistoryTestyng выводятся следующие ошибки об отсутствии расширений метода where, addrange, select и count. В обще каким образом можно добавить стоплосс стратегию к тесту? Или эти стратегии действуют только на релтайм тестах?
Заранее благодарю
Спасибо:

andrv

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


Разобрался!
Но теперь почему-то не работает, хотя стратегия стартует но дальше от нее никаких действий нет. Может я что-нибудь не так делаю, хотя сделал все как описано в документации.
Спасибо:

Alexander

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


andrv Перейти
Разобрался!
Но теперь почему-то не работает, хотя стратегия стартует но дальше от нее никаких действий нет. Может я что-нибудь не так делаю, хотя сделал все как описано в документации.


Т.е. она стартует, есть об этом вывод, но в OnProcess не заходит, фактически ни разу не запускается? Тогда не на ту папку с данными дали путь.
Спасибо:

andrv

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


Сама стратегия запускается и отрабатывает, не отрабатывает StopLoss стратегия, которая является дочерней к основной.
Причем по логу видно что эта стратегия запустилась но за весь период теста нет ни одного обращения к методу OnNewMyTrades(IEnumerable<MyTrade> trades)
При это видно что имеются убыточные сделки.
Спасибо:

Alexander

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


andrv Перейти
Сама стратегия запускается и отрабатывает, не отрабатывает StopLoss стратегия, которая является дочерней к основной.
Причем по логу видно что эта стратегия запустилась но за весь период теста нет ни одного обращения к методу OnNewMyTrades(IEnumerable<MyTrade> trades)
При это видно что имеются убыточные сделки.


Что за метод и при чём он здесь?
Приведите кусок кода где вы пытаетесь определить работоспособность вложенной защитной стратегии, где вы добавляете стратегию и покажите для какого MyTrade и protectiveDelta её создаёте.
Спасибо:

andrv

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


Это просто пример который идет с библиотекой
Код
if (_isShortLessThenLong != isShortLessThenLong)
			{
				// если короткая меньше чем длинная, то продажа, иначе, покупка.
				var direction = isShortLessThenLong ? OrderDirections.Sell : OrderDirections.Buy;

				// создаем заявку
				var order = this.CreateOrder(direction, base.Security.GetMarketPrice(direction), base.Volume);

				// регистрируем заявку (обычным способом - лимитированной заявкой)
				// base.RegisterOrder(order);

				// регистрируем заявку (через котирование)
				var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
                var st = new MyStrategy();
                
                base.ChildStrategies.Add(strategy);
                base.ChildStrategies.Add(st);               //           Добавляю защитную стратегию
                
				// запоминаем текущее положение относительно друг друга
				_isShortLessThenLong = isShortLessThenLong;
			}

			return ProcessResults.Continue;
		}

по защитной стратегии код как описано здесь https://stocksharp.ru/do...27-985a-1654e8d9cfc1.htm
Спасибо:

Alexander

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


andrv Перейти
Это просто пример который идет с библиотекой
Код
if (_isShortLessThenLong != isShortLessThenLong)
			{
				// если короткая меньше чем длинная, то продажа, иначе, покупка.
				var direction = isShortLessThenLong ? OrderDirections.Sell : OrderDirections.Buy;

				// создаем заявку
				var order = this.CreateOrder(direction, base.Security.GetMarketPrice(direction), base.Volume);

				// регистрируем заявку (обычным способом - лимитированной заявкой)
				// base.RegisterOrder(order);

				// регистрируем заявку (через котирование)
				var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
                var st = new MyStrategy();
                
                base.ChildStrategies.Add(strategy);
                base.ChildStrategies.Add(st);               //           Добавляю защитную стратегию
                
				// запоминаем текущее положение относительно друг друга
				_isShortLessThenLong = isShortLessThenLong;
			}

			return ProcessResults.Continue;
		}

по защитной стратегии код как описано здесь https://stocksharp.ru/do...27-985a-1654e8d9cfc1.htm


И всё же - какие сделки добавляете в StopLoss?
Что конкретно не вызывается - событие NewMyTrades у базовой стратегии? И при этом сделки у базовой стратегии проходит?
Спасибо:

andrv

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


вот лог:
Код
00:00:00.000 |            | SS              | Стратегия запущена.
11:20:00.000 |            | MQS             | Стратегия запущена.
11:20:00.000 |            | MS              | Стратегия запущена.
11:20:00.990 |            | MQS             | Регистрация новой заявки на Sell с ценой 85 и объемом 1.
11:20:00.990 |            | MQS             | Заявка 74305730 на Sell отправлена с ценой 85 объемом 1.
11:20:04.990 |            | MQS             | Цена текущей 85 и лучшей 90.
11:20:04.990 |            | MQS             | Лучший бид 84,4800000 и лучший аск 89,4800000.
11:20:04.990 |            | MQS             | Котирование заявки 74305730 на Sell с ценой 85 объемом 1.
11:20:04.990 |            | MQS             | Отмена заявки 74305730.
11:20:05.990 |            | MQS             | Отмена заявки 74305730 прошло успешно.
11:20:05.990 |            | MQS             | Регистрация новой заявки на Sell с ценой 85 и объемом 1.
11:20:05.990 |            | MQS             | Заявка 74305731 на Sell отправлена с ценой 85 объемом 1.
11:20:06.990 | Warning    | MQS             | Заявка 74305731 не имеет состояния.
11:20:07.990 | Warning    | MQS             | Заявка 74305731 не имеет состояния.


из него что стратегия запускается, но когда начинается резкое падение курса стратегия не срабатывает.
отсюда вопрос на истории она вообще работает или я все таки чего-то не доделал, может там еще что дописать надо, например написать правила или еще что?
Спасибо:

Alexander

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


andrv Перейти
вот лог:
Код
00:00:00.000 |            | SS              | Стратегия запущена.
11:20:00.000 |            | MQS             | Стратегия запущена.
11:20:00.000 |            | MS              | Стратегия запущена.
11:20:00.990 |            | MQS             | Регистрация новой заявки на Sell с ценой 85 и объемом 1.
11:20:00.990 |            | MQS             | Заявка 74305730 на Sell отправлена с ценой 85 объемом 1.
11:20:04.990 |            | MQS             | Цена текущей 85 и лучшей 90.
11:20:04.990 |            | MQS             | Лучший бид 84,4800000 и лучший аск 89,4800000.
11:20:04.990 |            | MQS             | Котирование заявки 74305730 на Sell с ценой 85 объемом 1.
11:20:04.990 |            | MQS             | Отмена заявки 74305730.
11:20:05.990 |            | MQS             | Отмена заявки 74305730 прошло успешно.
11:20:05.990 |            | MQS             | Регистрация новой заявки на Sell с ценой 85 и объемом 1.
11:20:05.990 |            | MQS             | Заявка 74305731 на Sell отправлена с ценой 85 объемом 1.
11:20:06.990 | Warning    | MQS             | Заявка 74305731 не имеет состояния.
11:20:07.990 | Warning    | MQS             | Заявка 74305731 не имеет состояния.


из него что стратегия запускается, но когда начинается резкое падение курса стратегия не срабатывает.
отсюда вопрос на истории она вообще работает или я все таки чего-то не доделал, может там еще что дописать надо, например написать правила или еще что?



Ответьте на заданные вопросы.

1) Какая сделка передаётся в StopLossStrategy?
2) Вызывается ли событие NewMyTrades у запущенной стратегии?
3) Распечатайте все Strategy.MyTrades после окончания работы стратегии.
Спасибо:

andrv

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


на все вопросы нет
я взял SempleSMA и пытаюсь понять как к ней еще можно добавить стоплос стратегию.
Ведь нет не одного примера который ее реализует.
Спасибо:

Alexander

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


andrv Перейти
на все вопросы нет
я взял SempleSMA и пытаюсь понять как к ней еще можно добавить стоплос стратегию.
Ведь нет не одного примера который ее реализует.


Нет на последний вопрос что означает - у вас даже у SampleSMA сделок нет?
А на первый что означает - вы и не пытаетесь добавить StopLossStrategy к SampleSma, т.е. никакого ордера не передаёте?

Можно как-то более конкретно ответить на вопросы. А то ответ "нет" на запрос лога вызывает удивление.
Спасибо:

esper

Фотография
Программист
Дата: 13.11.2011
Ответить


andrv Перейти
Ведь нет не одного примера который ее реализует.

Как нет, а тут тогда что?
Спасибо:

andrv

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


Alexander Mukhanchikov Перейти


Ответьте на заданные вопросы.

1) Какая сделка передаётся в StopLossStrategy?
2) Вызывается ли событие NewMyTrades у запущенной стратегии?
3) Распечатайте все Strategy.MyTrades после окончания работы стратегии.


последнее не понятно событие MyTrade Вызываается только в стратегии MyStrategy, но пример теста на истории какимто образом считает трэйды.

Вобщем из всего вышесказанного нужно в основной стратегии вызывать событие NewMyTrades?
Спасибо:

andrv

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


esper Перейти
andrv Перейти
Ведь нет не одного примера который ее реализует.

Как нет, а тут тогда что?


вот я ее и использовал, теперь пытаюсь понять как заставить ее работать
Спасибо:

Alexander

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


andrv Перейти
Alexander Mukhanchikov Перейти


Ответьте на заданные вопросы.

1) Какая сделка передаётся в StopLossStrategy?
2) Вызывается ли событие NewMyTrades у запущенной стратегии?
3) Распечатайте все Strategy.MyTrades после окончания работы стратегии.


последнее не понятно событие MyTrade Вызываается только в стратегии MyStrategy, но пример теста на истории какимто образом считает трэйды.

Вобщем из всего вышесказанного нужно в основной стратегии вызывать событие NewMyTrades?


Я совсем запутался.

MyStrategy - это что? Вы писали что используете SampleHistoryTestyng, там есть SmaStrategy.
Где вы взяли MyStrategy? Что делает эта ваша стратегия?

Можете конкретно привести строчку где вы добавляете создаёте StopLossStrategy?
Спасибо:

esper

Фотография
Программист
Дата: 13.11.2011
Ответить


Да проблема похоже не стоп-лоссе, судя по логу, тут котирование не порождает сделок
Спасибо:

Alexander

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


И ещё просьба - посмотрите, пожалуйста, когда поднимается событие NewOrder у стратегии MQS - добавьте вывод этого сообщения в лог.
Спасибо:

andrv

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


Стратегия считает средние, пример SampleHistoryTesting я пытаюсь понять как сделать так чтоб с ней вместе работала еще TakeProfitStrategy и StopLossStrategy. Вот этот код из SampleSMA стратегии куда я попытался добавить вызов MyStrateg.
Код
if (_isShortLessThenLong != isShortLessThenLong)
            {
                // если короткая меньше чем длинная, то продажа, иначе, покупка.
                var direction = isShortLessThenLong ? OrderDirections.Sell : OrderDirections.Buy;
 
                // создаем заявку
                var order = this.CreateOrder(direction, base.Security.GetMarketPrice(direction), base.Volume);
 
                // регистрируем заявку (обычным способом - лимитированной заявкой)
                // base.RegisterOrder(order);
 
                // регистрируем заявку (через котирование)
                var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
                var st = new MyStrategy();
                 
                base.ChildStrategies.Add(strategy);
                base.ChildStrategies.Add(st);               //           Добавляю защитную стратегию
                 
                // запоминаем текущее положение относительно друг друга
                _isShortLessThenLong = isShortLessThenLong;
            }
 
            return ProcessResults.Continue;
        }


Вот у меня и возник вопрос что я сделал не так, если весь код взят из примеров?
Спасибо:

Alexander

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


andrv Перейти
Стратегия считает средние, пример SampleHistoryTesting я пытаюсь понять как сделать так чтоб с ней вместе работала еще TakeProfitStrategy и StopLossStrategy. Вот этот код из SampleSMA стратегии куда я попытался добавить вызов MyStrateg.
Код
if (_isShortLessThenLong != isShortLessThenLong)
            {
                // если короткая меньше чем длинная, то продажа, иначе, покупка.
                var direction = isShortLessThenLong ? OrderDirections.Sell : OrderDirections.Buy;
 
                // создаем заявку
                var order = this.CreateOrder(direction, base.Security.GetMarketPrice(direction), base.Volume);
 
                // регистрируем заявку (обычным способом - лимитированной заявкой)
                // base.RegisterOrder(order);
 
                // регистрируем заявку (через котирование)
                var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
                var st = new MyStrategy();
                 
                base.ChildStrategies.Add(strategy);
                base.ChildStrategies.Add(st);               //           Добавляю защитную стратегию
                 
                // запоминаем текущее положение относительно друг друга
                _isShortLessThenLong = isShortLessThenLong;
            }
 
            return ProcessResults.Continue;
        }


Вот у меня и возник вопрос что я сделал не так, если весь код взят из примеров?


Вы должны в SampleSMA подписаться на событие NewMyTrades и для новых своих сделок добавить StopLossStrategy.
Спасибо:

andrv

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


Alexander Mukhanchikov Перейти


Вы должны в SampleSMA подписаться на событие NewMyTrades и для новых своих сделок добавить StopLossStrategy.


Т.е. мне не надо создавать новую стратегию, а все что написано тут добавить в основную стратегию?
Спасибо:
1 2  >

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

loading
clippy