Estratégia Exp Iin MA Signal MMRec
Um port StockSharp do expert MetaTrader "Exp_Iin_MA_Signal_MMRec". A estratégia ouve os sinais de cruzamento produzidos por um par de médias móveis configuráveis (o indicador original Iin_MA_Signal) e aplica um esquema de dimensionamento de posição adaptativo com redução baseada em perdas.
Visão Geral
- Geração de sinais: as médias móveis rápida e lenta são avaliadas no tipo de vela selecionado e no preço aplicado. Um sinal de compra é criado quando a média rápida cruza acima da lenta, enquanto um sinal de venda é produzido no cruzamento oposto. O parâmetro
SignalBaradia a execução pelo número especificado de barras completamente fechadas, reproduzindo o atraso do buffer do indicador usado na versão MQL. - Gerenciamento de posição:
BuyPosOpeneSellPosOpenhabilitam ou desabilitam entradas longas e curtas. Quando um sinal oposto aparece e o flagBuyPosCloseouSellPosClosecorrespondente está habilitado, a estratégia fecha a exposição atual ou reverte diretamente para a nova direção. - Controle de risco:
StopLossPointseTakeProfitPointssão traduzidos para distâncias de preço usandoSecurity.PriceStepe verificados contra as extremidades da vela antes de processar novos sinais. - Gerenciamento de dinheiro: as últimas negociações são rastreadas separadamente para compras e vendas. Quando o número de negociações perdedoras dentro da janela
BuyTotalTrigger/SellTotalTriggeratinge o limite de perda respectivo, a estratégia muda deNormalVolumeparaReducedVolume. O parâmetroMoneyModedefine como o valor do volume é interpretado (lotes fixos, porcentagem do saldo, ou porcentagem de risco baseada em stop).
Parâmetros
FastPeriod,SlowPeriod– comprimentos das médias móveis rápida e lenta.FastType,SlowType– tipos de médias móveis (Simple,Exponential,Smoothed,Weighted,VolumeWeighted).FastPrice,SlowPrice– preço aplicado para cada média (Close,Open,High,Low,Median,Typical,Weighted).SignalBar– número de barras fechadas entre um sinal detectado e o envio da ordem.BuyPosOpen,SellPosOpen– interruptores para abrir posições compradas/vendidas.BuyPosClose,SellPosClose– interruptores para fechar ou reverter uma posição existente no sinal oposto.BuyTotalTrigger,SellTotalTrigger– quantas negociações recentes são inspecionadas para o contador de perdas.BuyLossTrigger,SellLossTrigger– número mínimo de perdas dentro da janela inspecionada que ativa o volume reduzido.NormalVolume,ReducedVolume– volume primário e de fallback (ou fator de risco, dependendo deMoneyMode).StopLossPoints,TakeProfitPoints– distâncias de stop loss e take profit em pontos do instrumento.MoneyMode– interpretação dos valores de volume (Lot,Balance,FreeMargin,BalanceRisk,FreeMarginRisk). Modos baseados em saldo usamPortfolio.CurrentValue, enquanto modos baseados em risco dividem o valor de risco pela distância calculada do stop.CandleType– série de velas usada para cálculos de indicadores.
Lógica de Sinais
- Cada vela terminada alimenta as médias móveis com o preço aplicado escolhido.
- A diferença entre os valores atuais e anteriores das médias móveis define um evento de cruzamento.
- Sinais são enfileirados, e a entrada mais antiga é executada assim que o tamanho da fila excede
SignalBar. - Quando um sinal de compra é executado:
- Se uma posição curta existe e
SellPosCloseestá habilitado, a estratégia calcula o PnL realizado para esse trade curto. Em seguida, reverte para um comprado (seBuyPosOpenestiver habilitado) ou simplesmente fecha a exposição. - Se nenhuma posição está aberta e
BuyPosOpenestá habilitado, um novo comprado é aberto com o volume calculado.
- Se uma posição curta existe e
- Sinais de venda espelham o fluxo de trabalho de compra.
Detalhes de Gerenciamento de Dinheiro
- O histórico de negociações é armazenado como uma fila FIFO rotativa limitada por
BuyTotalTrigger/SellTotalTrigger. - Uma negociação perdedora (PnL negativo) incrementa o contador de perdas. Quando o contador atinge
BuyLossTriggerouSellLossTrigger, a próxima posição usaReducedVolume. MoneyMode = Lottrata os valores de volume como quantidades brutas.MoneyMode = BalanceeFreeMarginmultiplicam o valor configurado porPortfolio.CurrentValuee dividem pelo preço de fechamento atual para obter a quantidade.MoneyMode = BalanceRiskeFreeMarginRiskmultiplicam o valor configurado porPortfolio.CurrentValuee dividem pela distância do stop-loss. Se a distância do stop for zero, o fallback é idêntico ao cálculo do porcentagem do saldo.- Se informações do portfólio não estiverem disponíveis, o volume calculado assume o valor padrão de zero para evitar ordens acidentais.
Tratamento de Risco
- Os níveis de stop-loss e take-profit são recalculados em cada vela usando o preço de entrada e o valor do ponto. Se um nível for tocado dentro do range da vela, a posição é fechada antes que novos sinais sejam processados.
- As ações de fechamento sempre registram o resultado da negociação, garantindo que as filas de gerenciamento de dinheiro permaneçam sincronizadas com as saídas reais.
Notas
- Certifique-se de que
StopLossPointseTakeProfitPointssejam compatíveis com o tamanho do tick do instrumento; a estratégia os multiplica porSecurity.PriceStep. - Quando
MoneyModedepende de dados do portfólio, a estratégia espera que o objetoPortfolioexponhaCurrentValue. - O algoritmo opera numa base de posição líquida: holdings longos e curtos simultâneos não são suportados.