← 返回

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

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

本主题对您有帮助吗?

分享主题

评论 (7)

登录创建账户, 登录或注册以发表评论

Moadip
Moadip

Незакрытые сделки это что? 😳

Lipot
Lipot 作者

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

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

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

VassilSanych
VassilSanych

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

VassilSanych
VassilSanych

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

Lipot
Lipot 作者

Понятно.

Moadip
Moadip

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

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

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

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


var s = ChildStrategies.OfType<TakeProfitStopLossStrategy>();
ChildStrategies.RemoveRange(s);

Lipot
esper
esper

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

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

Lipot