RealTimeEmulationTrader QuikTrader TakeProfitStopLimit
Atom
12.10.2011
lshaton


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

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, ActiveTime = new Range(DateTime.Today - TimeSpan.FromDays(5), DateTime.Today + TimeSpan.FromDays(5)), }, };




Спасибо:


< 1 2 3 4  >
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.

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

Спасибо:

Alexander

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


andrv:

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

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

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

Спасибо:

andrv

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


тогда возникает другой вопрос если отсюда:

// для каждой сделки добавляем для защиты по пакетной стратегии
    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, то если я добавляю вот так:

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

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

Спасибо:

Alexander

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


andrv: тогда возникает другой вопрос если отсюда:

// для каждой сделки добавляем для защиты по пакетной стратегии 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, то если я добавляю вот так:
> ```csharp
// регистрируем заявку (через котирование)
                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.

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

Спасибо: andrv

andrv

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


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

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

base.NewMyTrades += OnNewMyTrades;

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

Спасибо:

Alexander

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


andrv:

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

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

base.NewMyTrades += OnNewMyTrades;

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

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

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

loading
clippy