Как в MyTrades найти сделки, которые еще не закрыты
Atom Ответить
06.05.2013


Собственно, задача следить за незакрытыми сделками и при необходимости их закрывать.
Спасибо.

Теги:


Спасибо:




7 Ответов
Moadip

Фотография
Автор статей Программист
Дата: 07.05.2013
Ответить


Незакрытые сделки это что? Blink
Спасибо:

Lipot

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


Что-то я коряво написал. Извиняюсь, уже поздно было :)

Меня вот что интересует: когда стратегия заходит в сделку у меня запускается TakeProfitStopLossStrategy.
TakeProfit стоит о-очень далеко, так как из сделки, если не по стопу, то выхожу через определенное время. Так вот как сделать, чтобы TakeProfitStopLossStrategy при выходе из сделки через определенное время дальше не отрабатывала бы уровень стопа.
А то получается: зашел на покупку по 100, стоп на 90. Вышел через определенное время по 105. А потом через час, когда цена упала до 90 TakeProfitStopLossStrategy открывается вниз.

Насколько я понимаю при выходе по времени, мне требуется останавливать (или удалять?) TakeProfitStopLossStrategy? Есть ли возможность, каким-либо образом, среди запущенных дочерних стратегий находить именно ту, которая была запущена после входа в определенную сделку?
Автор топика
Спасибо:

VassilSanych

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


Не путайте терминологию:
то, что вы описали называется не "сделка", а "позиция".
Сделка - это просто событие торговли: купля или продажа чего-либо.
В сделке нельзя "находиться".
Спасибо:

VassilSanych

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


Соответственно, отвечая на ваш первый вопрос, - нечего искать позиции в таблице сделок.
Спасибо:

Lipot

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


Понятно.
Автор топика
Спасибо:

Moadip

Фотография
Автор статей Программист
Дата: 07.05.2013
Ответить


Исходя их того что написано, ТС наверное имел ввиду следующее:

Прошла сделка(например купили 1 лот) -> Position = 1;
Добавлена защитная стратегия для сделки -> TakeProfitStopLossStrategy. Примерно как здесь.
В какой то момент решаем что надо выйти в кэш -> Position = 0, следовательно надо удалить не сработавшую защитную стратегию.

Ну проще всего это наверное сделать используя правило Position.Changed.
Проверям если Position == 0, то очищяем список дочерних стратегий - ChildStrategies.Clear();

Если используются еще какие то дочерние стратегии, то берем только TakeProfitStopLossStrategy и удаляем их:
Код

var s = ChildStrategies.OfType<TakeProfitStopLossStrategy>();
ChildStrategies.RemoveRange(s);
Спасибо: Lipot

esper

Фотография
Программист
Дата: 07.05.2013
Ответить


Из документации:

Цитата:
По умолчанию, дочерние стратегии не связанны друг с другом, и исполняются независимо друг от друга. Когда требуется установить зависимость между стратегиями, необходимо использовать класс BasketStrategy. Данный класс позволяет задать условия завершения стратегий в зависимости друг от друга через признаки BasketStrategyFinishModes. Например, через значение First задается условие, при котором все дочерние стратегии будут остановлены, когда исполнится хотя бы одна из них.
Спасибо: Lipot


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

loading
clippy