RealTimeEmulationTrader QuikTrader TakeProfitStopLimit
Atom
12.10.2011
lshaton


Заявка, приведенная ниже регистрируется но не отрабатывает при наступлении условий. Вопрос: А работает ли 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)),
},
};



Спасибо:


< 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, то если я добавляю вот так:
Код
// регистрируем заявку (через котирование)
                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