особенности работы BatchStrategy
Atom
22.12.2010
xtonic


Для закрытия позиций по стопу и профиту использую BatchStrategy, также стратегия может робота иногда закрывать позиции сама. Сделал все по примеру, но результат прямо скажем удивительный, возможно я выбрал слишком маленьки значения (10 пунктов stoploss и 30 - takeprofit). Есть и позиции закрытые точно по указанным числам, но в основном отклонения довольно приличные, вот примерный список сегодняшних закрытий: +30 +30 ок ! 2 раза закрылись по профиту, хорошо, идем далее: -50 -55 -75 -140 -35 -5 45 95 130 5 и так далее, то есть даже незнаю что и делать.

Код у меня такой, вобщем просто взят из документации:


        private void OnMewMyTrades(IEnumerable<MyTrade> trades)
        {
            var sec = trades.First().Trade.Security;
            // для каждой сделки добавляем для защиты по пакетной стратегии
            foreach (var t in trades) {
                var s = new BatchStrategy(BatchFinishModes.First) { IsParallel = true };

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

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

                // делаем стратегии параллельными, чтобы они не блокировали работу контролирующей BatchStrategy
                takeProfit.IsParallel = stopLoss.IsParallel = true;

                s.ChildStrategies.Add(takeProfit);
                s.ChildStrategies.Add(stopLoss);
                batch.ChildStrategies.Add(s);
                //return s;
            };

            base.ChildStrategies.Add(batch);
       }


Теги:


Спасибо:


Mikhail Sukhov

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


В логе ничего не понял. А вот по коду могу сказать, что фильтр на сделки необходимо добавить http://stocksharp.com/doc/help/html/63952fce-6e43-4427-985a-1654e8d9cfc1.htm .

 // фильтруем сделки, чтобы найти те, которые произошли для заявки TargetOrder
	trades = trades.Where(t => t.Order == this.TargetOrder);
	
	// если не найдена ни одна сделка для заявки TargetOrder
	if (trades.Count() == 0)
		return;
Спасибо:

xtonic

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


Фильтрацию добавил, но вобщем ничего не поменялось. Лог означает профит сделки, т.е. я ожидаю чтото такое: +30 +30 -10 +30 -10 -10

т.е. видим что убыточные сделки закрываются в -10 пунктов т.е. по стоплоссу, а прибыльные по тейкпрофиту: +30. Конечно такого ожидать можно в идеале, а на практике должны быть отклонения, но я не думал что такие будут большие. Может это из-за повышенной волатильности инструмента такое быть, тестирую на RIH1 ?

Спасибо:


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

loading
clippy