Estratégias
Visão Geral
A classe Strategy é a classe base para criar estratégias de negociação em StockSharp. Fornece um conjunto completo de ferramentas para subscrever dados de mercado, gerir ordens e posições, calcular estatísticas e gerar relatórios.
Principais capacidades da classe Strategy:
- Subscrever velas, livros de ordens, ticks e outros dados de mercado
- Colocar, modificar e cancelar ordens
- Gestão de posição alvo
- Cálculo de PnL, comissão e estatísticas
- Gestão de risco
- Sistema de temporizador e regras
- Alertas
- Geração de relatórios
Warning
A funcionalidade de estratégias filhas (ChildStrategies) foi declarada obsoleta e deixou de ser suportada. A propriedade ChildStrategies está marcada com o atributo [Obsolete("Child strategies no longer supported.")]. Se o seu código usa estratégias filhas, recomenda-se refatorar -- execute cada estratégia como uma instância independente.
Secções da Documentação
- Gestão de Posição Alvo -- gestão declarativa do tamanho da posição através de
SetTargetPosition - Modos de Negociação -- restrição da atividade de negociação através de
StrategyTradingModes - Sistema de Alertas -- envio de notificações (popup, som, log, Telegram)
- Sistema de Temporizador -- execução periódica de ações
- Gestão de Risco -- regras de gestão de risco
- Subscrições de Alto Nível -- subscrições simplificadas de dados de mercado
- Relatórios de Estratégia -- geração de relatórios de resultados de transações
- Funcionalidades Avançadas -- comentários de ordens, horários, taxa sem risco, fonte de indicadores
Estratégia Mínima
public class MyStrategy : Strategy
{
private readonly StrategyParam<DataType> _candleType;
public DataType CandleType
{
get => _candleType.Value;
set => _candleType.Value = value;
}
public MyStrategy()
{
_candleType = Param(nameof(CandleType), TimeSpan.FromMinutes(5).TimeFrame());
}
protected override void OnStarted2(DateTime time)
{
base.OnStarted2(time);
var subscription = SubscribeCandles(CandleType);
subscription
.Bind(ProcessCandle)
.Start();
}
private void ProcessCandle(ICandleMessage candle)
{
if (!IsFormedAndOnlineAndAllowTrading())
return;
// Lógica de negociação
}
}
Ciclo de Vida da Estratégia
- Criação -- construtor, declaração de parâmetros através de
Param<T>. - Configuração -- definição de
Security,Portfolio,Connectore parâmetros. - Início -- chamada de
Start(), transição para o estadoProcessStates.Started, invocação deOnStarted2(DateTime). - Execução -- processamento de dados de mercado, colocação de ordens.
- Paragem -- chamada de
Stop(), transição através deProcessStates.StoppingparaProcessStates.Stopped, invocação deOnStopped().