Biblioteca de classes de perda final StopLoss para MQL5 - biblioteca para MetaTrader 5
Biblioteca de classes universal para a implementação de várias estratégias de StopLoss trailing em robôs de negociação. A biblioteca permite que você gerencie com flexibilidade o StopLoss de posições abertas por uma distância fixa do preço, bem como pelos valores de indicadores populares: Parabolic SAR, AMA, DEMA, FRAMA, MA, TEMA, VIDYA e nível arbitrário.
A biblioteca oferece uma maneira conveniente de adicionar vários tipos diferentes de StopLoss trailing ao seu Expert Advisor MQL5. Basta conectar a classe necessária, configurar os parâmetros e chamar o método Run() em OnTick().
Cabeçalho
#include <Trailings\Trailings.mqh> Estrutura da classe
| Classe | Finalidade | Exemplos de uso |
|---|---|---|
| CSimpleTrailing | classe base do rastreamento de preço (rastreamento simples) | //--- Conexão #include <Trailings\Trailings.mqh> //--- Globalmente CSimpleTrailing trail; //--- Em OnInit(): trail.SetSymbol(_Symbol); trail.SetMagicNumber(123); trail.SetStopLossOffset(100); trail.SetActive(true); //--- Em OnTick(): trail.Run(); |
| CTrailingByInd | classe base do trailing por indicador | Usada por classes herdadas |
| CTrailingBySAR | trailing pelo indicador Parabolic SAR | //--- Conexão #include <Trailings\Trailings.mqh> //--- Globalmente CTrailingBySAR trailSAR; //--- Em OnInit(): trailSAR.Initialize(_Symbol, PERIOD_M15, 0.02, 0.2); trailSAR.SetActive(true); //--- Em OnTick(): trailSAR.Run(); |
| CTrailingByAMA | Trailing por Adaptive Moving Average (média móvel adaptável) | //--- Conexão #include <Trailings\Trailings.mqh> //--- Globalmente CTrailingByAMA trailAMA; //--- Em OnInit(): trailAMA.Initialize(_Symbol, PERIOD_H1, 9, 2, 30, 0, PRICE_CLOSE); trailAMA.SetActive(true); //--- Em OnTick(): trailAMA.Run(); |
| CTrailingByDEMA | Trailing por Média Móvel Exponencial Dupla | //--- Conexão #include <Trailings\Trailings.mqh> //--- Globalmente CTrailingByDEMA trailDEMA; //--- Em OnInit(): trailDEMA.Initialize(_Symbol, PERIOD_H1, 14, 0, PRICE_CLOSE); trailDEMA.SetActive(true); //--- Em OnTick(): trailDEMA.Run(); |
| CTrailingByFRAMA | Trailing por Fractal Adaptive Moving Average | //--- Conexão #include <Trailings\Trailings.mqh> //--- Globalmente CTrailingByFRAMA trailFRAMA; //--- Em OnInit(): trailFRAMA.Initialize(_Symbol, PERIOD_H1, 14, 0, PRICE_CLOSE); trailFRAMA.SetActive(true); //--- Em OnTick(): trailFRAMA.Run(); |
| CTrailingByMA | Média móvel de arrasto | //--- Conexão #include <Trailings\Trailings.mqh> //--- Globalmente CTrailingByMA trailMA; //--- Em OnInit(): trailMA.Initialize(_Symbol, PERIOD_H1, 20, 0, MODE_EMA, PRICE_CLOSE); trailMA.SetActive(true); //--- Em OnTick(): trailMA.Run(); |
| CTrailingByTEMA | Média Móvel Exponencial Tripla com Trailing | //--- Conexão #include <Trailings\Trailings.mqh> //--- Globalmente CTrailingByTEMA trailTEMA; //--- Em OnInit(): trailTEMA.Initialize(_Symbol, PERIOD_H1, 14, 0, PRICE_CLOSE); trailTEMA.SetActive(true); //--- Em OnTick(): trailTEMA.Run(); |
| CTrailingByVIDYA | Trailing Variable Index Dynamic Average (média dinâmica de índice variável) | //--- Conexão #include <Trailings\Trailings.mqh> //--- Globalmente CTrailingByVIDYA trailVIDYA; //--- Em OnInit(): trailVIDYA.Initialize(_Symbol, PERIOD_H1, 9, 12, 0, PRICE_CLOSE); trailVIDYA.SetActive(true); //--- Em OnTick(): trailVIDYA.Run(); |
| CTrailingByValue | Trailing em um nível especificado | //--- Conexão #include <Trailings\Trailings.mqh> //--- Globalmente CTrailingByValue trailValue; //--- Em OnInit(): trailValue.SetSymbol(_Symbol); trailValue.SetActive(true); //--- Em OnTick(): trailValue.Run(customSLBuy, customSLSell); |
Parâmetros de configuração:
- SetSymbol(symbol) - define o símbolo de negociação;
- SetMagicNumber(magic) - define o número mágico;
- SetStopLossOffset(offset) - define o deslocamento do StopLoss em relação ao preço/indicador;
- SetTrailingStart(start) - definir o lucro mínimo para a ativação do trailing;
- SetTrailingStep(step) - definir o passo do movimento do StopLoss;
- SetSpreadMultiplier(value) - definir o multiplicador de spread para StopLevel;
- SetActive(flag) - ativar/desativar o trailing.
Para classes de indicadores - parâmetros adicionais do indicador (períodos, tipos de preço, métodos, etc.).
Aqui está um exemplo de como a rede de arrasto Parabolic SAR conectada funciona com o Expert Advisor padrão \MQL5\Experts\Advisors\ExpertMACD.mq5:

Mais detalhes sobre o tópico desses trawls podem ser encontrados nos artigos
- Como adicionar Trailing Stop no indicador Parabolic SAR
- Como criar qualquer tipo de Trailing Stop e conectá-lo a um Expert Advisor
OTrailings.mqh é uma maneira fácil de adicionar um Trailing StopLoss ao seu Expert Advisor MQL5.
Conecte a classe necessária, configure os parâmetros e chame *.Run() em OnTick.
Se o seu EA tiver um ciclo de enumeração de suas posições, você poderá chamar o método Run() do trailing com o tíquete da posição selecionada:
Run(const ulong pos_ticket);
No caso simples comum, isso seria feito no manipulador OnTick():
for(int i=PositionsTotal()-1; i>=0; i--) { trailing_simple.Run(PositionGetTicket(i)); }
Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/63926