RealTimeEmulationTrader QuikTrader TakeProfitStopLimit


RealTimeEmulationTrader QuikTrader TakeProfitStopLimit
Atom
10/12/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)),
},
};



Thanks:


< 1 2 3 4  >
esper

Avatar
Date: 11/13/2011
Reply


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

Alexander

Avatar
Date: 11/13/2011
Reply


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

andrv

Avatar
Date: 11/13/2011
Reply


Стратегия считает средние, пример SampleHistoryTesting я пытаюсь понять как сделать так чтоб с ней вместе работала еще TakeProfitStrategy и StopLossStrategy. Вот этот код из SampleSMA стратегии куда я попытался добавить вызов MyStrateg.
Code
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;
        }


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

Alexander

Avatar
Date: 11/13/2011
Reply


andrv Go to
Стратегия считает средние, пример SampleHistoryTesting я пытаюсь понять как сделать так чтоб с ней вместе работала еще TakeProfitStrategy и StopLossStrategy. Вот этот код из SampleSMA стратегии куда я попытался добавить вызов MyStrateg.
Code
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.
Thanks:

andrv

Avatar
Date: 11/13/2011
Reply


Alexander Mukhanchikov Go to


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


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

Alexander

Avatar
Date: 11/13/2011
Reply


andrv Go to
Alexander Mukhanchikov Go to


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


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


Да, только т.к. вам не нужен TakeProfit - вам ни к чему BasketStrategy, а можно обойтись лишь StopLossStrategy
Thanks:

andrv

Avatar
Date: 11/13/2011
Reply


тогда возникает другой вопрос если отсюда:
Code
// для каждой сделки добавляем для защиты по пакетной стратегии
    basket.ChildStrategies.AddRange(trades.Select(t =>
    {
        var s = new BasketStrategy(BasketStrategyFinishModes.First);

        // выставляет тейк-профит в 40 пунктов
        var takeProfit = new TakeProfitStrategy(t, 40);

        // выставляет стоп-лосс в 20 пунктов
        var stopLoss = new StopLossStrategy(t, 20);

        s.ChildStrategies.Add(takeProfit);
        s.ChildStrategies.Add(stopLoss);
        return s;
    }).Cast<Strategy>())


ясно откуда мы берем переменную типа MyTrade, то если я добавляю вот так:
Code
// регистрируем заявку (через котирование)
                var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
                var st = new StopLossStrategy(t, 20);  //    здесь непонятно откуда брать переменную
                 
                base.ChildStrategies.Add(strategy);
                base.ChildStrategies.Add(st);               //           Добавляю защитную стратеги


непонятно откуда брать значение MyTrade
Thanks:

Alexander

Avatar
Date: 11/13/2011
Reply


andrv Go to
тогда возникает другой вопрос если отсюда:
Code
// для каждой сделки добавляем для защиты по пакетной стратегии
    basket.ChildStrategies.AddRange(trades.Select(t =>
    {
        var s = new BasketStrategy(BasketStrategyFinishModes.First);

        // выставляет тейк-профит в 40 пунктов
        var takeProfit = new TakeProfitStrategy(t, 40);

        // выставляет стоп-лосс в 20 пунктов
        var stopLoss = new StopLossStrategy(t, 20);

        s.ChildStrategies.Add(takeProfit);
        s.ChildStrategies.Add(stopLoss);
        return s;
    }).Cast<Strategy>())


ясно откуда мы берем переменную типа MyTrade, то если я добавляю вот так:
Code
// регистрируем заявку (через котирование)
                var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
                var st = new StopLossStrategy(t, 20);  //    здесь непонятно откуда брать переменную
                 
                base.ChildStrategies.Add(strategy);
                base.ChildStrategies.Add(st);               //           Добавляю защитную стратеги


непонятно откуда брать значение MyTrade



Ну как - StopLossStrategy создаётся для чего - для сделки стратегии, для MyTrade.
Вот и берите откуда надо - либо по событиям, либо из Strategy, либо из Trader.

Попробуйте побольше изучать примеры, данные вопросы тогда отпадут.
Thanks: andrv

andrv

Avatar
Date: 11/13/2011
Reply


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


при добавлении в конструктор SampleSMA строчки:

Code
base.NewMyTrades += OnNewMyTrades;


Программа вылетает с ошибкой в StockSharp.BusinessEntities возник бесконечный цикл ну и StackOverride или что-то подобное
Thanks:

Alexander

Avatar
Date: 11/13/2011
Reply


andrv Go to
Alexander Mukhanchikov Go to
[
Вы должны в SampleSMA подписаться на событие NewMyTrades и для новых своих сделок добавить StopLossStrategy.


при добавлении в конструктор SampleSMA строчки:

Code
base.NewMyTrades += OnNewMyTrades;


Программа вылетает с ошибкой в StockSharp.BusinessEntities возник бесконечный цикл ну и StackOverride или что-то подобное


Где бесконечный цикл? сколько раз у вас вызывается конструктор SampleSma?
Thanks:
< 1 2 3 4  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy