Trading algorítmico para .NET e Python✦86+ conectores · bolsas · corretoras · cripto✦S#.Designer · backtest · otimizar · ao vivo✦Uma comunidade de 31,467+ traders e desenvolvedores✦Trading algorítmico para .NET e Python✦86+ conectores · bolsas · corretoras · cripto✦S#.Designer · backtest · otimizar · ao vivo✦Uma comunidade de 31,467+ traders e desenvolvedores✦
Что-то я коряво написал. Извиняюсь, уже поздно было :)
Меня вот что интересует: когда стратегия заходит в сделку у меня запускается TakeProfitStopLossStrategy.
TakeProfit стоит о-очень далеко, так как из сделки, если не по стопу, то выхожу через определенное время. Так вот как сделать, чтобы TakeProfitStopLossStrategy при выходе из сделки через определенное время дальше не отрабатывала бы уровень стопа.
А то получается: зашел на покупку по 100, стоп на 90. Вышел через определенное время по 105. А потом через час, когда цена упала до 90 TakeProfitStopLossStrategy открывается вниз.
Насколько я понимаю при выходе по времени, мне требуется останавливать (или удалять?) TakeProfitStopLossStrategy? Есть ли возможность, каким-либо образом, среди запущенных дочерних стратегий находить именно ту, которая была запущена после входа в определенную сделку?
Не путайте терминологию:
то, что вы описали называется не "сделка", а "позиция".
Сделка - это просто событие торговли: купля или продажа чего-либо.
В сделке нельзя "находиться".
Исходя их того что написано, ТС наверное имел ввиду следующее:
Прошла сделка(например купили 1 лот) -> Position = 1;
Добавлена защитная стратегия для сделки -> TakeProfitStopLossStrategy. Примерно как здесь.
В какой то момент решаем что надо выйти в кэш -> Position = 0, следовательно надо удалить не сработавшую защитную стратегию.
Ну проще всего это наверное сделать используя правило Position.Changed.
Проверям если Position == 0, то очищяем список дочерних стратегий - ChildStrategies.Clear();
Если используются еще какие то дочерние стратегии, то берем только TakeProfitStopLossStrategy и удаляем их:
var s = ChildStrategies.OfType<TakeProfitStopLossStrategy>();
ChildStrategies.RemoveRange(s);
По умолчанию, дочерние стратегии не связанны друг с другом, и исполняются независимо друг от друга. Когда требуется установить зависимость между стратегиями, необходимо использовать класс BasketStrategy. Данный класс позволяет задать условия завершения стратегий в зависимости друг от друга через признаки BasketStrategyFinishModes. Например, через значение First задается условие, при котором все дочерние стратегии будут остановлены, когда исполнится хотя бы одна из них.
Utilizamos cookies para garantir a melhor experiência em nosso site. Ao continuar a usar nosso site, você concorda com o uso de cookies.
Comentários (7)
Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário
Незакрытые сделки это что? 😳
Что-то я коряво написал. Извиняюсь, уже поздно было :)
Меня вот что интересует: когда стратегия заходит в сделку у меня запускается TakeProfitStopLossStrategy. TakeProfit стоит о-очень далеко, так как из сделки, если не по стопу, то выхожу через определенное время. Так вот как сделать, чтобы TakeProfitStopLossStrategy при выходе из сделки через определенное время дальше не отрабатывала бы уровень стопа. А то получается: зашел на покупку по 100, стоп на 90. Вышел через определенное время по 105. А потом через час, когда цена упала до 90 TakeProfitStopLossStrategy открывается вниз.
Насколько я понимаю при выходе по времени, мне требуется останавливать (или удалять?) TakeProfitStopLossStrategy? Есть ли возможность, каким-либо образом, среди запущенных дочерних стратегий находить именно ту, которая была запущена после входа в определенную сделку?
Не путайте терминологию: то, что вы описали называется не "сделка", а "позиция". Сделка - это просто событие торговли: купля или продажа чего-либо. В сделке нельзя "находиться".
Соответственно, отвечая на ваш первый вопрос, - нечего искать позиции в таблице сделок.
Понятно.
Исходя их того что написано, ТС наверное имел ввиду следующее:
Прошла сделка(например купили 1 лот) -> Position = 1; Добавлена защитная стратегия для сделки -> TakeProfitStopLossStrategy. Примерно как здесь. В какой то момент решаем что надо выйти в кэш -> Position = 0, следовательно надо удалить не сработавшую защитную стратегию.
Ну проще всего это наверное сделать используя правило Position.Changed. Проверям если Position == 0, то очищяем список дочерних стратегий - ChildStrategies.Clear();
Если используются еще какие то дочерние стратегии, то берем только TakeProfitStopLossStrategy и удаляем их:
Из документации: