Negociação Sistemática

AK-47 Scalper EA: O Expert Advisor Ideal para o MetaTrader 4
MetaTrader4
AK-47 Scalper EA: O Expert Advisor Ideal para o MetaTrader 4

1. Parâmetros de Entrada #define ExtBotName "AK-47 Scalper EA" // Nome do Bot #define  Version "1.00" //--- parâmetros de entrada extern string  EASettings        = "---------------------------------------------"; //-------- <Configurações do EA> -------- input int      InpMagicNumber    = 124656;   //Número Mágico extern string  TradingSettings   = "---------------------------------------------"; //-------- <Configurações de Negociação> -------- input double   Inpuser_lot       = 0.01;     //Lotes input double   InpSL_Pips        = 3.5;      //Stoploss (em Pips) input double   InpMax_spread     = 0.5;      //Spread máximo permitido (em Pips) (0 = flutuante) extern string  MoneySettings     = "---------------------------------------------"; //-------- <Configurações de Dinheiro> -------- input bool     isVolume_Percent  = true;     //Permitir Volume Percentual input double   InpRisk           = 3;        //Porcentagem de Risco do Saldo (%) input string   TimeSettings      = "---------------------------------------------"; //-------- <Configurações de Horário de Negociação> -------- input bool     InpTimeFilter     = true      //Filtro de Horário de Negociação input int      InpStartHour      = 2;         //Hora de Início input int      InpStartMinute    = 30;        //Minuto de Início input int      InpEndHour        = 21;        //Hora de Fim input int      InpEndMinute      = 0         //Minuto de Fim 2. Inicialização de Variáveis Locais //--- Variáveis int      Pips2Points;               // slippage  3 pips    3=points    30=points double   Pips2Double;               // Stoploss 15 pips    0.015      0.0150 int      InpMax_slippage   = 3;     // Slippage máximo permitido. bool     isOrder           = false; // abre apenas 1 ordem int      slippage; string   strComment        = ""; 3. Código Principal a/ Função de Inicialização do Expert int OnInit()   { //---      //Detectar 3 ou 5 dígitos    //Pip e ponto    if (Digits % 2 == 1)    {       Pips2Double  = _Point*10;       Pips2Points  = 10;       slippage = 10* InpMax_slippage;    }    else    {           Pips2Double  = _Point;       Pips2Points  =  1;       slippage = InpMax_slippage;    }    //---    return(INIT_SUCCEEDED);   } b/ Função Tick do Expert void OnTick()   { //---      if(IsTradeAllowed() == false)      {       Comment("AK-47 EA\nNegociação não permitida.");       return;      }             MqlDateTime structTime;        TimeCurrent(structTime);        structTime.sec = 0;               //Define hora de início        structTime.hour = InpStartHour;        structTime.min = InpStartMinute;              datetime timeStart = StructToTime(structTime);               //Define hora de fim        structTime.hour = InpEndHour;        structTime.min = InpEndMinute;        datetime timeEnd = StructToTime(structTime);               double acSpread = MarketInfo(Symbol(), MODE_SPREAD);        StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);              strComment = "\n" + ExtBotName + " - v." + (string)Version;       strComment += "\nHora GMT = " + TimeToString(TimeGMT(),TIME_DATE|TIME_SECONDS);       strComment += "\nHorário de Negociação = [" + (string)InpStartHour + "h" + (string)InpStartMinute + " --> " +  (string)InpEndHour + "h" + (string)InpEndMinute + "]";              strComment += "\nSpread Atual = " + (string)acSpread + " Points";       strComment += "\nNível de Stop Atual = " + (string)StopLevel + " Points";              Comment(strComment);          //Atualizar Valores       UpdateOrders();              TrailingStop();              //Verificar Horário de Negociação       if(InpTimeFilter)       {          if(TimeCurrent() >= timeStart && TimeCurrent() < timeEnd)          {             if(!isOrder) OpenOrder();          }       }       else       {          if(!isOrder) OpenOrder();       }   } 3.1 Calcular sinal para enviar ordens void OpenOrder(){       //int OrdType = OP_SELL;//-1;    double TP = 0;    double SL = 0;    string comment = ExtBotName;    //Calcular Lotes    double lot1 = CalculateVolume();       //if(OrdType == OP_SELL){       double OpenPrice = NormalizeDouble(Bid - (StopLevel * _Point) - (InpSL_Pips/2) * Pips2Double, Digits);       SL = NormalizeDouble(Ask + StopLevel * _Point + InpSL_Pips/2 * Pips2Double, Digits);                if(CheckSpreadAllow())                                    //Verificar Spread       {          if(!OrderSend(_Symbol, OP_SELLSTOP, lot1, OpenPrice, slippage, SL, TP, comment, InpMagicNumber, 0, clrRed))          Print(__FUNCTION__,"--> Erro ao enviar ordem ",GetLastError());       }    //} } 3.2 Calcular Volume double CalculateVolume()   {    double LotSize = 0;    if(isVolume_Percent == false)      {       LotSize = Inpuser_lot;      }    else      {       LotSize = (InpRisk) * AccountFreeMargin();       LotSize = LotSize /100000;       double n = MathFloor(LotSize/Inpuser_lot);       //Comment((string)n);       LotSize = n * Inpuser_lot;       if(LotSize < Inpuser_lot)          LotSize = Inpuser_lot;       if(LotSize > MarketInfo(Symbol(),MODE_MAXLOT))          LotSize = MarketInfo(Symbol(),MODE_MAXLOT);       if(LotSize < MarketInfo(Symbol(),MODE_MINLOT))          LotSize = MarketInfo(Symbol(),MODE_MINLOT);      }    return(LotSize);   } 3.3 O EA possui função de "Trailing Stop", O SL mudará a cada vez que o preço mudar (para baixo) void TrailingStop()   {    for(int i = OrdersTotal() - 1; i >= 0; i--)      {       if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))         {          if((OrderMagicNumber() == InpMagicNumber) && (OrderSymbol() == Symbol()))   //_Symbol))            {             //Para Ordem de Venda             if(OrderType() == OP_SELL)               {                   //--Calcular SL quando o preço mudar                   double SL_in_Pip = NormalizeDouble(OrderStopLoss() - (StopLevel * _Point) - Ask, Digits) / Pips2Double;                   if(SL_in_Pip > InpSL_Pips){                         double newSL = NormalizeDouble(Ask + (StopLevel * _Point) + InpSL_Pips * Pips2Double, Digits);                         if(!OrderModify(OrderTicket(), OrderOpenPrice(), newSL, OrderTakeProfit(), 0, clrRed))                         {                            Print(__FUNCTION__,"--> Erro ao modificar a ordem ",GetLastError());                            continue                           }               }                          //Para Ordem de Venda a Mercado             else if(OrderType() == OP_SELLSTOP)               {                   double SL_in_Pip = NormalizeDouble(OrderStopLoss() - (StopLevel * _Point) - Ask, Digits) / Pips2Double;                                      if(SL_in_Pip < InpSL_Pips/2){                      double newOP = NormalizeDouble(Bid - (StopLevel * _Point) - (InpSL_Pips/2) * Pips2Double, Digits);                      double newSL = NormalizeDouble(Ask + (StopLevel * _Point) + (InpSL_Pips/2) * Pips2Double, Digits);                                           if(!OrderModify(OrderTicket(), newOP, newSL, OrderTakeProfit(), 0, clrRed))                          {                              Print(__FUNCTION__,"--> Erro ao modificar a Ordem Pendente!", GetLastError());                             continue                        }                   }               }            }      }   }

2023.01.14
Gerenciador de Trades Forex para MT5: A Solução Ideal para Traders
MetaTrader5
Gerenciador de Trades Forex para MT5: A Solução Ideal para Traders

O Gerenciador de Trades Forex para MT5 é a ferramenta que todo trader precisa para simplificar a gestão de ordens abertas no MetaTrader 5. Ao abrir uma nova ordem, o gerenciador configura automaticamente o Stop Loss e o Take Profit. À medida que o preço se movimenta, o programa pode mover o Stop Loss para o Break Even (onde o stop loss é igual ao preço de abertura) ou ajustar continuamente o Stop Loss (Trailing Stop) para proteger seus lucros. O Gerenciador de Trades Forex pode controlar ordens apenas para os símbolos atuais (onde o EA está ativo) ou para todas as ordens abertas, independentemente do símbolo, e ainda esconde o Stop Loss e o Take Profit dos corretores. Esta estratégia é perfeita para gerenciar trades manuais abertos (seja em todos os símbolos ou apenas no símbolo do gráfico atual) através de: Definição de Stop Loss e/ou Take Profit em pips; Função Trailing Stop que ajusta o SL conforme o preço; Break Even, que move o SL para o BE em uma distância escolhida. O SL/TP pode ser gerenciado pelo corretor (da forma padrão) ou em modo stealth – oculto do corretor. Parâmetros: “Parâmetros SLTP” Stop Loss – stop loss em pips para as trades; Take Profit – take profit em pips para as trades; “Break Even” UseBreakEven (true/false) – permite usar apenas a função de break-even para trades abertas; BEActivation – lucro em pips quando a função de break-even é ativada; BELevel – distância adicional do BE em pips quando o SL é colocado pela função de break-even. “Trailing Stop” UseTrailingStop (true/false) – permite usar apenas a função de trailing stop para trades abertas; TSStart – lucro em pips quando a função de trailing stop é ativada; TSStep – diferença mínima em pips entre o novo e o atual SL para permitir o movimento do SL pela função de trailing stop; TSDistance – distância do preço atual em pips quando o SL é colocado pela função de trailing stop. “Comportamento” StealthMode (true/false) – oculta os níveis de SL/TP do corretor e o EA fecha trades nesses níveis programaticamente; OnlyCurrentPair (true/false) – permite a gestão de trades apenas do símbolo do gráfico atual (true) ou de todos os pares (false). Informações: Todos os parâmetros para as trades e funções são configuráveis nas definições do EA. O Gerenciador de Trades Forex também exibe no gráfico informações sobre o lucro/prejuízo diário atual em pips e na moeda da conta.

2023.01.10
Gerenciador de Ordens Forex Grid MT5: Domine Suas Negociações com Este EA
MetaTrader5
Gerenciador de Ordens Forex Grid MT5: Domine Suas Negociações com Este EA

Olá, traders! Hoje vou falar sobre o Gerenciador de Ordens Forex Grid MT5, uma ferramenta incrível para quem utiliza o MetaTrader 5. Esse EA (Expert Advisor) pode ser um grande aliado na hora de gerenciar suas ordens e alcançar seus objetivos financeiros. Com o Forex Trade Manager Grid, você só precisa fazer a primeira ordem com um Take Profit definido. Depois, é só rodar o EA e especificar o lucro (em pips) que você deseja obter. O sistema cuidará das suas posições, acumulando o número de pips que você determinou. É uma estratégia voltada para a gestão de negociações manuais que você já abriu no par atual. O funcionamento é simples: o EA adiciona posições às ordens abertas em um gerenciamento de grid, respeitando uma distância escolhida em pips entre as operações, podendo chegar a até 15 trades (ou menos). As três primeiras ordens são gerenciadas com take profits individuais, e a partir da quarta, o EA fecha toda a grade em um nível comum (break-even). Após o fechamento de uma trade no TP, ela pode ser renovada. O ciclo completo pode ser encerrado se a perda ultrapassar a porcentagem de risco de saldo permitida. Parâmetros: Parâmetros Adicionais de Negociação: AddNewTradeAfter – distância em pips da última trade após a qual novas ordens são adicionadas à grade. Take Profit TakeProfit1Total (número) – TP total em pips exigido da primeira posição. TakeProfit1Partitive – TP inicial em pips para a primeira posição do ciclo. TakeProfit1Offset – distância mínima em pips do take profit da última posição fechada exigida para renovar essa primeira trade. TakeProfit 2/3 – TP individual em pips para a segunda/terceira posição do ciclo. TakeProfit 4/5/6/...15Total – TP total em pips de todas as posições no ciclo (para 4 ou mais trades abertas). Parâmetros de Negociação: MaxOrders – número máximo permitido de trades na grade. Risk Balance % – perda máxima permitida como porcentagem do saldo da conta (fecha todas as posições abertas). Lots – tamanho do lote para as trades abertas pelo EA. Slippage – deslizamento permitido em pontos. Informações: Todas as configurações para as trades e funções são ajustáveis nas configurações do EA. O Forex Trade Manager Grid também exibe no gráfico informações sobre o lucro ou a perda do ciclo atual em pips e na moeda da conta.

2023.01.10
XP Forex Trade Manager MT4: Otimize suas Operações no MetaTrader 4
MetaTrader4
XP Forex Trade Manager MT4: Otimize suas Operações no MetaTrader 4

O Forex Trade Manager MT4 é uma ferramenta que facilita a gestão de ordens abertas no MetaTrader 4. Ao abrir uma nova ordem, o gerenciador automaticamente define o Stop Loss e o Take Profit. Conforme o preço se movimenta, o programa pode ajustar o Stop Loss para o Break Even (stop loss = preço de abertura) ou mover continuamente o Stop Loss (chamado de Tailing Stop) para proteger seus lucros. O Forex Trade Manager consegue controlar ordens apenas para os símbolos atuais (onde o Expert Advisor está funcionando) ou para todas as ordens abertas (independente do símbolo) e ainda pode ocultar o Stop Loss e o Take Profit dos corretores. Essa é uma estratégia de gestão para operações manuais abertas (que podem ser em todos os símbolos ou apenas no símbolo do gráfico atual) através de: definição de Stop Loss e/ou Take Profit para as operações em pips; função de Tailing Stop que ajusta o SL conforme o preço; Break Even que move o SL para o BE em uma distância escolhida. O SL/TP pode ser gerenciado pelo corretor (forma padrão) ou em modo stealth – oculto do corretor. Parâmetros: “Parâmetros SLTP” Stop Loss – stop loss em pips para as operações; Take Profit – take profit em pips para as operações; “Break Even” UseBreakEven (true/false) – permitindo usar apenas a função de break-even para ordens abertas; BEActivation – lucro em pips quando a função de break even é ativada; BELevel – distância adicional do BE em pips quando o SL é colocado pela função de break even; “Trailing Stop” UseTrailingStop (true/false) – permitindo usar apenas a função de trailing stop para ordens abertas; TSStart – lucro em pips quando a função de trailing stop é ativada; TSStep – diferença mínima em pips entre o novo e o atual SL para permitir o ajuste do SL pela função de trailing stop; TSDistance – distância do preço atual em pips quando o SL é colocado pela função de trailing stop; “Comportamento” StealthMode(true/false) – oculta os níveis de sl/tp do corretor e o EA fecha operações nesses níveis programaticamente; OnlyCurrentPair(true/false) – permite a gestão de operações apenas do símbolo no gráfico atual (true) ou de todos os pares (false). Informações: Todos os parâmetros para operações e funções são configuráveis nas definições do EA. O Forex Trade Manager também exibe no gráfico informações sobre o lucro/prejuízo diário atual em pips e na moeda da conta.

2023.01.10
Gerenciador de Trades Forex Grid MT4: A Ferramenta Essencial para Traders
MetaTrader4
Gerenciador de Trades Forex Grid MT4: A Ferramenta Essencial para Traders

Se você está buscando uma maneira eficiente de gerenciar suas ordens e alcançar seus objetivos no mercado de Forex, o Gerenciador de Trades Forex Grid MT4 é a solução ideal. Com uma configuração simples, você só precisa realizar a primeira ordem com o Take Profit desejado, ativar o robô (EA) e definir os parâmetros de lucro (em pips) que deseja obter. O EA gerenciará suas posições, reunindo o número de pips que você especificou. Esta estratégia é perfeita para gerenciar trades manuais que já estão abertos no par atual. O sistema adiciona posições às trades abertas em uma gestão de grid, com uma distância escolhida em pips entre as ordens - podendo chegar a 15 trades (ou menos). As três primeiras ordens são gerenciadas com Take Profits individuais, e a partir da quarta ordem, o EA fecha todo o grid em um nível comum (break-even). Após o fechamento de uma ordem com TP, é possível renová-la. O ciclo completo pode ser encerrado caso a perda ultrapasse a porcentagem de risco permitida em relação ao saldo da conta. Parâmetros: Parâmetros de Trade Adicionais: AddNewTradeAfter – distância em pips da última trade após a qual novas ordens são adicionadas ao grid. Take Profit: TakeProfit1Total (número) – TP total em pips necessário a partir da primeira posição. TakeProfit1Partitivo – TP inicial em pips para a primeira posição no ciclo. TakeProfit1Offset – distância mínima em pips do Take Profit da última posição fechada necessária para renovar essa primeira trade. TakeProfit 2/3 – TP individual em pips para a segunda/terceira posição no ciclo. TakeProfit 4/5/6/...15Total – TP total em pips de todas as posições no ciclo (para 4 ou mais trades abertas). Parâmetros de Trade: MaxOrders – número máximo permitido de trades no grid. Risco Balance % – perda máxima permitida como porcentagem do saldo da conta (fecha todas as posições abertas). Lots – tamanho do lote para as trades abertas pelo EA. Slippage – desvio permitido em pontos. Informações: Todos os parâmetros para as trades e funções podem ser ajustados nas configurações do EA. O Gerenciador de Trades Forex Grid também exibe no gráfico informações sobre o lucro/prejuízo do ciclo atual em pips e na moeda da conta.

2023.01.10
Lazy Bot MT5: O EA Ideal para Operações de Breakout Diárias
MetaTrader5
Lazy Bot MT5: O EA Ideal para Operações de Breakout Diárias

Se você está em busca de um robô de trading que simplifique suas operações no MetaTrader 5, o Lazy Bot MT5, também conhecido como Daily Breakout EA, pode ser a solução que você precisa. Neste post, vamos explorar suas funcionalidades e como configurá-lo para maximizar seus lucros. 1. Parâmetros de Entrada Configurações do EA: // Importando classes externas #include <Trade\PositionInfo.mqh> #include <Trade\Trade.mqh> #include <Trade\SymbolInfo.mqh> #include <Trade\AccountInfo.mqh> #include <Trade\OrderInfo.mqh> //--- Definindo variáveis para legibilidade do código #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) //--- parâmetros de entrada input string EASettings = "---------------------------------------------"; //-------- <Configurações do EA> -------- input int InpMagicNumber = 123456; // Número Mágico input string InpBotName = "LazyBot_V1"; // Nome do Bot input string TradingSettings = "---------------------------------------------"; //-------- <Configurações de Trading> -------- input double Inpuser_lot = 0.01; // Tamanho dos Lotes input double Inpuser_SL = 5.0; // Stoploss (em Pips) input double InpAddPrice_pip = 0; // Distância de [H], [L] até OP_Price (em Pips) input int Inpuser_SLippage = 3; // Slippage máximo permitido (em Pips) input double InpMax_spread = 0; // Spread máximo permitido (em Pips) (0 = flutuante) 2. Inicialização de Variáveis Locais // Parâmetros locais datetime last; int totalBars; int Pips2Points; // slippage 3 pips double Pips2Double; // Stoploss 15 pips double slippage; double acSpread; string strComment = ""; CPositionInfo m_position; // objeto de posição de trade CTrade m_trade; // objeto de trading CSymbolInfo m_symbol; // objeto de informações do símbolo CAccountInfo m_account; // wrapper de informações da conta COrderInfo m_order; // objeto de ordens pendentes 3. Código Principal O Lazy Bot MT5 elimina todas as ordens antigas a cada dia, identifica os valores mais altos e mais baixos da barra diária anterior e envia duas ordens pendentes: BUY_STOP e SELL_STOP (sem TakeProfit). a/ Função de Inicialização do Expert int OnInit() { //--- // Detecção de 3 ou 5 dígitos if(_Digits % 2 == 1) { Pips2Double = _Point * 10; Pips2Points = 10; slippage = 10 * Inpuser_SLippage; } else { Pips2Double = _Point; Pips2Points = 1; slippage = Inpuser_SLippage; } if(!m_symbol.Name(Symbol())) // define o nome do símbolo return(INIT_FAILED); RefreshRates(); m_trade.SetExpertMagicNumber(InpMagicNumber); m_trade.SetMarginMode(); m_trade.SetTypeFillingBySymbol(m_symbol.Name()); m_trade.SetDeviationInPoints(slippage); return(INIT_SUCCEEDED); } b/ Função Tick do Expert void OnTick() { if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) == false) { Comment("LazyBot\nTrade not allowed."); return; } // Obtenção da hora local e do servidor MqlDateTime timeLocal; MqlDateTime timeServer; TimeLocal(timeLocal); TimeCurrent(timeServer); if(timeServer.day_of_week == 0 || timeServer.day_of_week == 6) return; int hourLocal = timeLocal.hour; int hourCurrent = timeServer.hour; acSpread = SymbolInfoInteger(_Symbol, SYMBOL_SPREAD); strComment = "\nHora Local = " + hourLocal; strComment += "\nHora Atual = " + hourCurrent; strComment += "\nSpread = " + (string)acSpread; strComment += "\nTotal de Barras = " + (string)totalBars; Comment(strComment); // Verifica o Trailing TrailingSL(); if(last != iTime(m_symbol.Name(), PERIOD_D1, 0)) { // Verifica o horário de trading if(isTradingTime) { if(hourCurrent >= InpStartHour) { DeleteOldOrds(); OpenOrder(); last = iTime(m_symbol.Name(), PERIOD_D1, 0); } } else { DeleteOldOrds(); OpenOrder(); last = iTime(m_symbol.Name(), PERIOD_D1, 0); } } } 3.1 Calcular sinal e enviar ordens void OpenOrder() { double TP_Buy = 0, TP_Sell = 0; double SL_Buy = 0, SL_Sell = 0; // Verifica o Spread máximo if(InpMax_spread != 0) { if(acSpread > InpMax_spread) { Print(__FUNCTION__, " > o Spread atual é maior que o permitido!"); return; } } double Bar1High = m_symbol.NormalizePrice(iHigh(m_symbol.Name(), PERIOD_D1, 1)); double Bar1Low = m_symbol.NormalizePrice(iLow(m_symbol.Name(), PERIOD_D1, 1)); double lot1 = CalculateVolume(); double OpenPrice = m_symbol.NormalizePrice(Bar1High + InpAddPrice_pip * Pips2Double); // Para BUY_STOP SL_Buy = m_symbol.NormalizePrice(OpenPrice - Inpuser_SL * Pips2Double); totalBars = iBars(m_symbol.Name(), PERIOD_D1); string comment = InpBotName + ";" + m_symbol.Name() + ";" + totalBars; if(CheckVolumeValue(lot1) && CheckOrderForFREEZE_LEVEL(ORDER_TYPE_BUY_STOP, OpenPrice) && CheckMoneyForTrade(m_symbol.Name(), lot1, ORDER_TYPE_BUY) && CheckStopLoss(OpenPrice, SL_Buy)) { if(!m_trade.BuyStop(lot1, OpenPrice, m_symbol.Name(), SL_Buy, TP_Buy, ORDER_TIME_GTC, 0, comment)) Print(__FUNCTION__, "--> Erro ao comprar"); } // Para SELL_STOP OpenPrice = m_symbol.NormalizePrice(Bar1Low - InpAddPrice_pip * Pips2Double); SL_Sell = m_symbol.NormalizePrice(OpenPrice + Inpuser_SL * Pips2Double); if(CheckVolumeValue(lot1) && CheckOrderForFREEZE_LEVEL(ORDER_TYPE_SELL_STOP, OpenPrice) && CheckMoneyForTrade(m_symbol.Name(), lot1, ORDER_TYPE_SELL) && CheckStopLoss(OpenPrice, SL_Sell)) { if(!m_trade.SellStop(lot1, OpenPrice, m_symbol.Name(), SL_Sell, TP_Sell, ORDER_TIME_GTC, 0, comment)) Print(__FUNCTION__, "--> Erro ao vender"); } } 3.2 Novo dia, delete todas as ordens antigas void DeleteOldOrds() { string sep=";"; // Um separador como caráter ushort u_sep; // O código do caráter separador string result[]; // Um array para obter strings for(int i = OrdersTotal() - 1; i >= 0; i--) { if(m_order.SelectByIndex(i)) { u_sep = StringGetCharacter(sep, 0); string Ordcomment = m_order.Comment(); int k = StringSplit(Ordcomment, u_sep, result); if(k > 2) { string sym = m_symbol.Name(); if((m_order.Magic() == InpMagicNumber) && (sym == result[1])) { m_trade.OrderDelete(m_order.Ticket()); } } } } } 3.3 Função de Trailing StopLoss void TrailingSL() { double SL_in_Pip = 0; for(int i = PositionsTotal() - 1; i >= 0; i--) { if(m_position.SelectByIndex(i)) { if((m_position.Magic() == InpMagicNumber) && (m_position.Symbol() == m_symbol.Name())) { double order_stoploss1 = m_position.StopLoss(); if(m_position.PositionType() == POSITION_TYPE_BUY) { SL_in_Pip = NormalizeDouble((Bid - order_stoploss1), _Digits) / Pips2Double; if(SL_in_Pip > Inpuser_SL) { order_stoploss1 = NormalizeDouble(Bid - (Inpuser_SL * Pips2Double), _Digits); m_trade.PositionModify(m_position.Ticket(), order_stoploss1, m_position.TakeProfit()); } } if(m_position.PositionType() == POSITION_TYPE_SELL) { SL_in_Pip = NormalizeDouble((m_position.StopLoss() - Ask), _Digits) / Pips2Double; if(SL_in_Pip > Inpuser_SL) { order_stoploss1 = NormalizeDouble(Ask + (Inpuser_SL * Pips2Double), _Digits); m_trade.PositionModify(m_position.Ticket(), order_stoploss1, m_position.TakeProfit()); } } } } } } Para mais informações sobre como utilizar o Lazy Bot MT5, confira os vídeos abaixo: Vídeo MQL4: Vídeo MQL5:

2022.12.14
Estratégia de Mean Reversion: Potencialize seus Trades no MetaTrader 4
MetaTrader4
Estratégia de Mean Reversion: Potencialize seus Trades no MetaTrader 4

Se você está buscando uma estratégia eficiente para operar no mercado Forex, a estratégia de Mean Reversion pode ser a chave para melhorar seus resultados, especialmente em pares de moedas principais no gráfico diário. O que você precisa saber: Teste em uma conta demo primeiro para entender como a estratégia funciona sem arriscar seu capital. Este robô de trading opera apenas com o preço da vela de abertura! Se você não quer aumentar o tamanho da posição após uma perda, ajuste a configuração: IncreaseFactor=0. Além disso, aqui estão algumas configurações que você pode considerar ao utilizar o EA: Configurações Importantes Use_TP_In_Money: Utilizar Take Profit em dinheiro (valores: true/false). TP_In_Money: Take Profit em dinheiro (valores: 10-100). Use_TP_In_percent: Utilizar Take Profit em percentual (valores: true/false). TP_In_Percent: Take Profit em percentual (valores: 10-100). ------------------Controle de Stop Loss e Trailing------------------ Enable_Trailing: Ativar trailing stop (valores: true/false). Take Profit em dinheiro: (valores: 25-200). Stop Loss em dinheiro: (valores: 1-20). ------------------------------------------------------------------------ Exit: Fechar operações se a tendência estiver contra você (valores: true/false). BarsToCount: Número de barras a contar (valores: 1-20). Lots: Tamanho do lote (valores: 0.01-1). MagicNumber: Número mágico (valores: 1-100000). TakeProfit: Take Profit (valores: 50-200). FastMA: Média Móvel Rápida (valores: 1-20). SlowMA: Média Móvel Lenta (valores: 50-200). ------------------Controle de Drawdown------------------ UseEquityStop: (valores: true/false). TotalEquityRisk: (valores: 0.01-20). ------------------------------------------------------------------------ Max_Trades: Número máximo de operações (1-12). FractalNum: Número de altas e baixas (valores: 1-10). Dicas Finais: Você deve otimizar este EA a cada poucos meses, utilizando as mesmas configurações mencionadas. Ele pode ser usado como um EA de hedging grid ou como um EA de operação única. Para realizar um backtest, acesse este link.

2022.10.26
Como Usar o Trailing Stop com o Parabolic SAR Fixo no MetaTrader 5
MetaTrader5
Como Usar o Trailing Stop com o Parabolic SAR Fixo no MetaTrader 5

Olá, traders! Hoje vou compartilhar uma dica valiosa sobre como utilizar o Trailing Stop com o Parabolic SAR Fixo no MetaTrader 5. Essa estratégia pode ajudar a maximizar seus lucros enquanto minimiza os riscos. Vamos lá! Primeiro, vamos falar sobre como modificar o Parabolic SAR para permitir a especificação direta do ponto de partida. Isso é fundamental para que possamos implementar o Trailing Stop de forma eficaz. Parâmetros Modo de Trailing: Nenhum / Trailing Fixo / Trailing Parabolic SAR Fixo Aqui está a parte do código que cuida do cálculo do Parabolic SAR: bool CSampleExpert::LongModifiedEx(void) { bool res=false; //--- verifica o trailing stop if(m_trailing_max < m_last_bar.high) { double tp=m_position.TakeProfit(); double sl=m_position.StopLoss(); //--- calcula o ParabolicSAR m_trailing_max = m_last_bar.high; m_trailing_step = fmin(InpPSAR_Maximum, m_trailing_step + InpPSAR_Step); double sar_stop = sl + (m_trailing_max - sl)* m_trailing_step; sar_stop=NormalizeDouble(sar_stop,m_symbol.Digits()); //--- if((sl==0.0 || sl < sar_stop) && sar_stop < m_symbol.Bid()) { //--- modifica a posição if(m_trade.PositionModify(Symbol(),sar_stop,tp)) printf("Posição longa de %s a ser modificada",Symbol()); else { printf("Erro ao modificar a posição de %s : '%s'",Symbol(),m_trade.ResultComment()); printf("Parâmetros de modificação : SL=%f,TP=%f",sar_stop,tp); } //--- modificado e deve sair do expert res=true; } } //--- resultado return(res); } Essas configurações são cruciais para garantir que você esteja sempre um passo à frente no mercado. O uso do Trailing Stop em conjunto com o Parabolic SAR pode ser uma estratégia poderosa! Se você ainda tem alguma dúvida ou quer compartilhar suas experiências, fique à vontade para deixar um comentário abaixo. Vamos trocar ideias!

2022.07.09
Primeiro Anterior 6 7 8 9 10 11 12 13 14 15 16 Próximo Último