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

Фотография
Дата: 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?
Спасибо:

andrv

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


Один, ошибка возникает только при добавлении этой строчки
Код
 public SmaStrategy(CandleManager candleManager, SimpleMovingAverage longSma, SimpleMovingAverage shortSma, TimeSpan timeFrame)
			: base(timeFrame)
		{
			_candleManager = candleManager;

			this.LongSma = longSma;
			this.ShortSma = shortSma;

            base.NewMyTrades += OnNewMyTrades; // добавляю эту строчку и через некоторое время вылетает ошибка

                       
		}
er.tif 92,1KB (0)
Спасибо:

Alexander

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


andrv Перейти
Один, ошибка возникает только при добавлении этой строчки
Код
 public SmaStrategy(CandleManager candleManager, SimpleMovingAverage longSma, SimpleMovingAverage shortSma, TimeSpan timeFrame)
			: base(timeFrame)
		{
			_candleManager = candleManager;

			this.LongSma = longSma;
			this.ShortSma = shortSma;

            base.NewMyTrades += OnNewMyTrades; // добавляю эту строчку и через некоторое время вылетает ошибка

                       
		}



А почему base.NewMyTrades?
Вам нужны сделки от текущей стратегии, а не от базовой.

Как определили что конструктор 1 раз вызывается?
Спасибо:

andrv

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


через отладчик, хотя ...
сейчас еще раз гляну уже с this

с this то же самое, второй раз до конструктора не доходит
Спасибо:
< 1 2 

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

loading
clippy