Negociação Sistemática

Como Ver a Última Negociação Fechada no MetaTrader 5
MetaTrader5
Como Ver a Última Negociação Fechada no MetaTrader 5

Se você é um trader que utiliza o MetaTrader 5, saber como obter os dados da última negociação fechada pode ser muito útil. Neste post, vou te mostrar um código simples que permite acessar essas informações sem precisar de loops. Passos para Obter os Dados da Última Negociação Você pode criar uma variável para definir o horário de início do dia, mas essa parte não é obrigatória. É interessante criar algumas variáveis adicionais para facilitar a impressão dos resultados no gráfico e também para uso em outros blocos de código. Utilizando esse código dentro da função OnTick();, você consegue visualizar o resultado a cada tick. Se preferir, pode configurá-lo para ser executado apenas uma vez por vela. Código para Acessar a Última Negociação Fechada // variáveis string DayStart = "00:00"; // Horário de Início do Dia double LastClosed_Profit; // Lucro da Última Negociação Fechada string TradeSymbol, TradeType; // Inicialização do Expert -------------------- int OnInit()   {    return(INIT_SUCCEEDED);   } // Desinicialização do Expert ------------------- void OnDeinit(const int reason)   {   } // Função OnTick -------------------------- void OnTick()   { // Verifica a última negociação fechada.    CheckLastClosed();   } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ void CheckLastClosed()   {    datetime HistoryTime = StringToTime(DayStart); // Históricos desde o início do dia até o tempo atual    if(HistorySelect(HistoryTime,TimeCurrent))      {       int Total = HistoryDealsTotal();       // Obtém o número do ticket da última negociação e seleciona para trabalho posterior.       ulong Ticket = HistoryDealGetTicket(Total -1);       // Obtenha as informações necessárias.       LastClosed_Profit = NormalizeDouble(HistoryDealGetDouble(Ticket,DEAL_PROFIT),2);       TradeSymbol      = HistoryOrderGetString(Ticket,ORDER_SYMBOL);       // Identifica uma negociação de venda.       if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_BUY)         {          TradeType = "Venda";         }       // Identifica uma negociação de compra       if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_SELL)         {          TradeType = "Compra";         }       // Saída no gráfico.       Comment("\n","Total de Negociações - :  ", Total,               "\n","Último Ticket - :  ", Ticket,               "\n", "Último Lucro -:  ", LastClosed_Profit,               "\n", "Última Negociação foi -:  ", TradeType);      }   } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ Se você quiser obter o histórico completo de negociações (desde o início da conta), pode utilizar a função HistorySelect(); da seguinte maneira: // Obter todo o histórico HistorySelect(0,TimeCurrent());

2024.04.22
QuickTradeKeys123: Seu Assistente de Trading para MetaTrader 5
MetaTrader5
QuickTradeKeys123: Seu Assistente de Trading para MetaTrader 5

Se você está em busca de uma maneira mais eficiente de operar no mercado, o QuickTradeKeys 123 pode ser exatamente o que você precisa! Este EA (Expert Advisor) foi criado para facilitar as respostas rápidas e eficazes ao mercado, permitindo que você execute operações com apenas um toque no teclado. Vamos dar uma olhada rápida nas suas funcionalidades: Funcionalidades Principais Tecla '1': Abre uma posição de compra com um tamanho de lote pré-definido. Tecla '2': Abre uma posição de venda com um tamanho de lote pré-definido. Tecla '3': Fecha todas as posições abertas que o EA abriu, com base no número mágico especificado. O QuickTradeKeys 123 é fácil de usar e pode ser uma mão na roda tanto para iniciantes quanto para traders mais experientes que buscam um controle eficaz e imediato das operações pelo teclado. Aplicação do EA Esse EA é adequado para todos os pares de moedas e timeframes. Para garantir um desempenho ideal e uma execução rápida, é importante operar em um ambiente com spread baixo e acesso fluido ao mercado. Instalação Para instalar, basta arrastar o EA para o gráfico desejado, certificar-se de que a negociação automatizada está ativada no MetaTrader e que o EA está autorizado a realizar operações. Não esqueça de configurar o número mágico conforme necessário nas configurações de entrada. Atenção! Este EA não deve ser utilizado em contas reais a menos que o usuário compreenda completamente o conceito subjacente e os riscos associados. É altamente recomendado testar o EA em uma conta demo antes de operar ao vivo, para se familiarizar com seu comportamento.

2024.04.20
Entendendo Classic e Virtual Trailing no MetaTrader 4: Como Otimizar Seus Trades
MetaTrader4
Entendendo Classic e Virtual Trailing no MetaTrader 4: Como Otimizar Seus Trades

Se você está começando a explorar o mundo do MetaTrader 4, provavelmente já ouviu falar de duas estratégias importantes: o Classic Trailing e o Virtual Trailing. Vamos dar uma olhada em como cada um deles funciona e como você pode utilizá-los para potencializar os seus ganhos no trading.O que é Classic Trailing?No Classic Trailing, você utiliza o Stop Loss para seguir a tendência do mercado. Isso significa que o seu Stop Loss vai se mover conforme o preço do ativo se movimenta, mantendo uma margem de segurança. Uma das grandes vantagens desse método é que ele é registrado diretamente no servidor do seu corretor, o que traz mais segurança e confiabilidade.O que é Virtual Trailing?Por outro lado, o Virtual Trailing não utiliza o Stop Loss para fazer esse acompanhamento. Ao contrário do Classic, as movimentações desse trailing não são refletidas no servidor do seu corretor. Isso pode ser vantajoso em certas situações, mas é preciso ter cuidado, pois pode gerar um risco maior em caso de oscilações bruscas no mercado.Termos Importantes no TrailingTrailing Gap: A diferença entre o preço de compra (Bid) e o preço de venda (Ask).Trailing Start: A distância do preço de entrada da ordem (preço de abertura da ordem) até o ponto em que começamos a aplicar o trailing.Agora que você já sabe a diferença entre essas duas abordagens, é hora de escolher a que mais se adapta ao seu estilo de trading. Lembre-se de sempre analisar o mercado e usar essas ferramentas com sabedoria!

2024.04.19
Como Usar Contadores no MetaTrader 5: Passar e Esperar em Seu Código
MetaTrader5
Como Usar Contadores no MetaTrader 5: Passar e Esperar em Seu Código

01. Contar "X" vezes e depois passar. Passo 01 - Crie uma variável para definir o limite de contagem. Você pode usá-la como um parâmetro de entrada e para otimização em seu código. Passo 02 - Crie outra variável para armazenar o limite contado (quantas vezes já foi contado). Passo 03 - Quando o Contador igualar seu limite de contagem, significa que é hora de passar o bloco de código que você especificou. Passo 04 - Após passar o código, não se esqueça de resetar o contador. Caso contrário, ele contará infinitamente (nesse caso). Você também pode definir condições de filtragem para o bloco do contador, como: >> "SE isso for verdade, então conte uma vez." input int count = 50; // Defina o limite de contagem como uma entrada int Counter; // variável do contador // Inicializando o Expert -------------------- int OnInit() { return(INIT_SUCCEEDED); } // Desinicializando o Expert ------------------- void OnDeinit(const int reason) { } // OnTick do Expert -------------------------- void OnTick() { Counter ++; // adicione 1 ao contador a cada tick. Comment("Contagem Atual -:", Counter); if(Counter == count) // Conte "X" vezes e passe | Este bloco é executado apenas uma vez por contagem. {      // Seu código vai aqui...... Alert(count," Vezes contadas"); Counter = 0; // Reset o contador ao final do seu bloco de código. Isso é necessário. } } // Fim do OnTick  <<---------------------- 02. Passar "X" vezes e depois Esperar "X" vezes. Esse método pode ser usado como esperar e passar, passar e esperar. Passo 01 - Crie uma variável para definir o limite de contagem e o limite de espera. Você pode usá-las como parâmetros de entrada e para otimização em seu código. Passo 02 - Crie outra variável para armazenar os limites contados e de espera (quantas vezes foi contado e quantas vezes esperou). Passo 03 - Quando o Contador igualar seu limite de contagem, significa que é hora de passar o bloco de código que você especificou. Passo 04 - Quando o esperador igualar seu limite de espera, significa que é hora de esperar um pouco. Passo 05 - Quando o limite de espera for alcançado, não se esqueça de resetar o contador e o esperador também. Caso contrário, ele deixará de funcionar (nesse caso). Você pode definir condições de filtragem para os blocos do contador e do esperador também, como: >> "SE isso for verdade, espere um pouco." input int count = 50; // Defina o limite de contagem como uma entrada input int wait = 50; // Defina o limite de espera como uma entrada int Counter; // variável do contador, valor padrão é "0" int Waiter; // variável do esperador, valor padrão é "0" // Inicializando o Expert -------------------- int OnInit()   {    return(INIT_SUCCEEDED);   } // Desinicializando o Expert ------------------- void OnDeinit(const int reason)   {   } // OnTick do Expert -------------------------- void OnTick()   {    Comment("Ticks Contados -: ", Counter, "\n", "Ticks Esperados -: ", Waiter);    if(Counter < count) // Passar "X" vezes      {       Counter++; // atualiza o contador       // Seu código vai aqui.      }    else       if(Waiter < wait) // Esperar por "X" vezes         {          Waiter++; // atualiza o esperador          // Seu código vai aqui.         }    if(Waiter == wait) // Limite de espera alcançado      {       Counter = 0; // resetar contador       Waiter = 0; // resetar esperador      }   } // Fim do OnTick  <<---------------------- //+------------------------------------------------------------------+ Especial -: Você pode programar o "Passar X vezes e parar" modificando o código acima, removendo o bloco de espera. Assim, ele contará por um número específico e parará até que o contador seja resetado. Você pode resetá-lo em qualquer lugar no seu código se criar essas variáveis em uma escala global. (variáveis globais)

2024.04.14
Como Detectar uma Nova Barra no MetaTrader 5 de Forma Eficiente
MetaTrader5
Como Detectar uma Nova Barra no MetaTrader 5 de Forma Eficiente

No código anterior, utilizei o tempo para detectar uma nova barra. Desta vez, vamos usar a contagem de barras para identificar uma nova barra. Essa abordagem é muito mais leve e rápida do que a utilização do método baseado em tempo. Declare as variáveis no tipo de dado inteiro para armazenar a contagem de barras. Atribua a contagem de barras à variável BarsTotal_OnInt na inicialização. Use a função iBars(); para atribuir a contagem de barras à variável BarsTotal_OnTick no gráfico ao vivo. Essa variável é atualizada a cada tick. Utilize comentários e alertas para verificar a precisão do código. int BarsTotal_OnInt; int BarsTotal_OnTick; //+------------------------------------------------------------------+ //| Função de inicialização do Expert                                   | //+------------------------------------------------------------------+ int OnInit()   {      BarsTotal_OnInt = iBars(NULL,PERIOD_CURRENT); // Atribui o total de barras na inicialização    return(INIT_SUCCEEDED);   }    void OnTick() // Função OnTick   {      BarsTotal_OnTick = iBars(NULL,PERIOD_CURRENT); // Armazena a quantidade atual       if(BarsTotal_OnTick > BarsTotal_OnInt) // Nova barra chegou    {     BarsTotal_OnInt = BarsTotal_OnTick; // Atualiza o histórico.     Alert("Uma Nova Barra chegou!");     Comment("Contagem de Barras no histórico -: ", BarsTotal_OnInt, "\n", "Contagem de Barras ao Vivo -: ", BarsTotal_OnTick); // Seu código vai aqui. -------------------------- // Você pode atualizar uma "flag" / variável para usar depois também.    }   }

2024.04.11
Gerenciando Trades com Virtual SL TP e Trailing Stop no MetaTrader 4
MetaTrader4
Gerenciando Trades com Virtual SL TP e Trailing Stop no MetaTrader 4

O que é o Virtual_SL_TP_Pending com Trailing Stop? A ferramenta Virtual_SL_TP_Pending_with_SL_Trailing.mq4 é uma solução para gerenciar suas operações no MetaTrader 4, permitindo que você defina níveis virtuais de stop loss e take profit, além de uma ordem pendente virtual com a opção de trailing stop loss. Detalhes do Script A seguir, um resumo das funcionalidades do script: Copyright e Link: Informa os direitos autorais e um link para o site do criador. Versão: Indica a versão do script. Descrição: Fornece informações sobre o script, incluindo o e-mail do criador, detalhes de propriedade intelectual e um aviso sobre o uso do software por sua conta e risco. Parâmetros de Entrada: Variáveis externas que permitem personalizar o comportamento do EA, incluindo: StopLossPoints: Stop Loss inicial em pontos. TakeProfitPoints: Take Profit inicial em pontos. SpreadThreshold: Limite de spread para stop loss/take profit virtual em pontos. TrailingStopPoints: Trailing stop em pontos para a ordem pendente virtual. EnableTrailing: Opção para ativar ou desativar o trailing stop. Variáveis Globais: Variáveis usadas em todo o script para armazenar o spread inicial, stop loss virtual, take profit virtual e preço da ordem pendente. Função de Inicialização (OnInit): Inicializa o EA quando anexado a um gráfico, calculando o stop loss virtual inicial, take profit e preço da ordem pendente com base nos parâmetros de entrada. Função Tick (OnTick): Chamado a cada tick de preço. Verifica se o spread aumentou além do limite e ajusta o stop loss virtual, take profit e preço da ordem pendente conforme necessário. Também monitora se o preço atinge o stop loss ou take profit virtual, fechando a posição. Se o trailing stop estiver ativado e o preço atingir o preço da ordem pendente, coloca uma ordem pendente virtual com um trailing stop loss. Função de Fechar Posição (ClosePosition): Fecha a posição quando o preço atinge o stop loss ou take profit virtual. Função de Colocar Ordem Pendente (PlacePendingOrder): Coloca uma ordem pendente virtual com trailing stop se o trailing stop estiver ativado. Esse EA oferece uma maneira flexível de gerenciar suas operações utilizando níveis virtuais e um recurso de trailing stop, permitindo que os traders automatizem seu processo de gerenciamento de trades no MetaTrader 4.

2024.04.10
Fechamento de Posições em Pares de Moedas: Conheça o Close Basket Pairs v1 para MetaTrader 4
MetaTrader4
Fechamento de Posições em Pares de Moedas: Conheça o Close Basket Pairs v1 para MetaTrader 4

Se você é um trader que opera com múltiplos pares de moedas, sabe como é importante gerenciar suas posições de forma eficiente. Hoje, vamos falar sobre um script incrível chamado Close Basket Pairs, que facilita o fechamento de posições em um conjunto de pares de moedas com base em limites de lucro e perda. O que é o Close Basket Pairs? O script é conhecido como "CloseBasketPairs.mq4". É uma criação da MetaQuotes Software Corp., com copyright de 2024. Você pode encontrar mais informações no site da MetaQuotes. A versão atual do script é 1.01. O autor do script é persinaru@gmail.com. Licenciado como IP 2024 - código aberto gratuito. O principal objetivo do script é fechar posições em um conjunto de pares de moedas quando certos limites de lucro ou perda são atingidos. Tenha em mente que o uso do script é por sua conta e risco; o criador não se responsabiliza por quaisquer danos ou perdas. Como Funciona? O Close Basket Pairs permite que você defina quais pares de moedas estão incluídos na sua cesta e os tipos de ordens correspondentes. O script faz um looping por todas as posições abertas e verifica se pertencem aos pares definidos na cesta. Se uma posição atingir os critérios (lucro acima do limite ou perda acima do limite), ela será fechada automaticamente. Funções Adicionais Além disso, o script conta com funções para inicialização, desinicialização e gestão de eventos de tick. A função PrintStrategyInfo() é utilizada para exibir informações sobre a estratégia em uso.

2024.04.10
Estratégia Simples de Seguimento de Tendência para Compras e Vendas no MetaTrader 4
MetaTrader4
Estratégia Simples de Seguimento de Tendência para Compras e Vendas no MetaTrader 4

Você sabia que é possível automatizar suas operações de compra e venda no MetaTrader 4? Neste post, vou te apresentar uma estratégia simples de seguimento de tendência que pode facilitar a sua vida como trader. Vamos lá! O que é a estratégia? Esse script do MT4 implementa uma estratégia contínua de seguimento de tendência, permitindo que você compre e venda com base em condições pré-definidas. Aqui está um resumo das funcionalidades do script: Inicialização: O script inicia e imprime uma mensagem informando que foi inicializado com sucesso. Desinicialização: Quando o script é desativado, ele imprime uma mensagem confirmando essa ação. Função OnTick: Esta função é acionada sempre que há uma nova variação de preço no mercado. a. Redefinir Variáveis de Acompanhamento de Posições: O script redefine as variáveis que controlam as posições de compra e venda abertas. b. Verificar Ordens Abertas: Ele verifica todas as ordens abertas para identificar se há posições de compra ou venda em aberto. c. Abrir Posição de Compra: Se não houver posição de compra aberta e a flag "OpenBuyPosition" estiver ativada, o script tenta abrir uma nova posição com base no preço de venda atual do mercado, definindo um stop loss e take profit. d. Abrir Posição de Venda: Da mesma forma, se não houver posição de venda aberta e a flag "OpenSellPosition" estiver ativada, ele tenta abrir uma posição de venda com base no preço de compra atual do mercado, também definindo stop loss e take profit. e. Verificar Ordens Fechadas: O script verifica ordens fechadas e, caso uma ordem de compra ou venda seja encerrada com lucro, ele redefine a flag correspondente. Parâmetros de Entrada: O script oferece parâmetros de entrada para o tamanho do lote, stop loss, take profit e flags que controlam a abertura de posições de compra ou venda. Aviso Importante: O script inclui um aviso para que os usuários o utilizem por sua própria conta e risco, isentando o criador de qualquer responsabilidade por danos ou perdas potenciais. Considerações Finais No geral, essa ferramenta visa automatizar o processo de execução de ordens de compra e venda com base em uma estratégia de seguimento de tendência, permitindo que você customize parâmetros como tamanho do lote e direção das operações. Entretanto, é fundamental que você tenha cautela e faça testes rigorosos antes de usar em um ambiente de negociação real.

2024.04.10
Como Implementar um Trailing Stop Eficiente no MetaTrader 5
MetaTrader5
Como Implementar um Trailing Stop Eficiente no MetaTrader 5

Este bloco de código funciona tanto se você usar um Stop Loss quanto se não usar. Requisitos Você precisa incluir "Trade.mqh" para acessar a classe CTrade, que permite trabalhar com posições e ordens. #include <Trade\Trade.mqh> // <<------------------------------------------ Inclua este "Trade.mqh" para acessar a classe CTrade Você deve definir um parâmetro de entrada para ajustar a distância do trailing como desejar. Isso não é obrigatório, mas é conveniente. input double Traling_Step = 3.0; É necessário definir uma instância da classe CTrade; o nome pode ser o que você quiser. É melhor defini-la após o manipulador de eventos OnInit. Em seguida, crie uma estrutura if para verificar se há alguma posição em execução no momento. Esta estrutura chama a função Check_TrailingStop(); a cada tick. Isso é importante porque o EA deve fazer o trailing de forma rápida e suave. Lembre-se de colocar essa estrutura no início do manipulador de eventos OnTick para que funcione corretamente. //+------------------------------------------------------------------+ //| Função de inicialização do Expert | //+------------------------------------------------------------------+ int OnInit() { //--- cria o timer EventSetTimer(60); //--- return(INIT_SUCCEEDED); } CTrade trade; // <<------------------------------------------ Declare a classe "CTrade"; você pode substituir "trade" por qualquer nome que desejar void OnTick() { if (PositionsTotal() > 0) { // chama a função de trailing stop a cada tick se houver posições em execução. Check_TralingStop(); } } Agora, você precisa declarar uma função personalizada chamada Check_TrailingStop(); (você pode usar qualquer nome que desejar) para realizar o restante da tarefa. Essa função personalizada irá percorrer todas as posições abertas e ajustá-las na distância que você definiu. void Check_TralingStop() { int totalPositions = PositionsTotal(); for (int count = 0; count < totalPositions; count++) { ulong TicketNo = PositionGetTicket(count); // Obter o número do ticket da posição usando o 'índice' da posição. if (PositionSelectByTicket(TicketNo)) { // Seleciona uma posição usando o número do ticket (já pegamos o número do ticket) if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) { // Verifica o tipo da posição. double openPrice = PositionGetDouble(POSITION_PRICE_OPEN); double stopLoss = PositionGetDouble(POSITION_SL); // <<-------------------Obter o Stop Loss atual da posição double takeProfit = PositionGetDouble(POSITION_TP); double bidPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID); ulong ticket = PositionGetTicket(count); double trailingLevel = NormalizeDouble(bidPrice - (Traling_Step * Point()), _Digits); if (stopLoss < openPrice) { // Sem stop loss é verdadeiro. if (bidPrice > openPrice && trailingLevel > openPrice) { // Executa apenas uma vez por posição. Define o primeiro SL. trade.PositionModify(ticket, trailingLevel, takeProfit); // Modifica o trailing Stop usando "CTrade.trade" } } if (bidPrice > openPrice && trailingLevel > stopLoss) { // verifica se o nível de trailing está acima do nível anterior. trade.PositionModify(ticket, trailingLevel, takeProfit); // Modifica o trailing Stop usando "CTrade.trade" } } if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL) { double openPrice = PositionGetDouble(POSITION_PRICE_OPEN); double stopLoss = PositionGetDouble(POSITION_SL); double takeProfit = PositionGetDouble(POSITION_TP); double bidPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID); double askPrice = SymbolInfoDouble(_Symbol, SYMBOL_ASK); ulong ticket = PositionGetTicket(count); double trailingLevel = NormalizeDouble(askPrice + (Traling_Step * Point()), _Digits); if (stopLoss < openPrice) { // Sem stop loss é verdadeiro. if (askPrice < openPrice && trailingLevel < openPrice) { // Executa apenas uma vez por posição. Define o primeiro SL. trade.PositionModify(ticket, trailingLevel, takeProfit); // Modifica o trailing Stop usando "CTrade.trade" } } if (askPrice < openPrice && trailingLevel < stopLoss) { // verifica se o nível de trailing está acima do nível anterior. trade.PositionModify(ticket, trailingLevel, takeProfit); // Modifica o trailing Stop usando "CTrade.trade" } } } } }

2024.04.05
Como Detectar uma Nova Barra ou Candle no MetaTrader 5: Código Simples
MetaTrader5
Como Detectar uma Nova Barra ou Candle no MetaTrader 5: Código Simples

Olá, traders! Hoje vamos falar sobre um código simples que detecta uma nova barra ou candle no MetaTrader 5 assim que ele é recebido. O princípio por trás desse código é bem simples. Primeiro, ele armazena o tempo da barra/candle anterior. Em seguida, adicionamos 60 segundos (equivalente a 1 minuto, mas você pode ajustar o tempo conforme sua necessidade) ao tempo da barra anterior, resultando no valor de fechamento da barra/candle atual. Agora, quando: Tempo Atual = valor de fechamento da barra/candle atual, significa que uma nova barra foi recebida ou a barra atual foi fechada. Neste código, utilizamos uma variável booleana chamada NewBarRecived que serve como um sinalizador para evitar chamadas múltiplas deste bloco de código. Assim, ele é executado apenas uma vez por barra/candle. As funções Comment(); e playsound("ok.wav"); são usadas para checar a precisão do código; você pode removê-las se preferir. O sinalizador é redefinido para falso quando o tempo atual ultrapassa o tempo de fechamento da barra atual, permitindo assim checar a chegada da próxima barra (veja os comentários no código). //+------------------------------------------------------------------+ //|                                                Novo Bar Detect.mq5 | //|                                                   por H A T Lakmal | //|                                                    https://t.me/Lakmal846 | //+------------------------------------------------------------------+ bool NewBarRecived = false; // Sinalizador para controle. //+------------------------------------------------------------------+ //| Função de inicialização do Expert                                    | //+------------------------------------------------------------------+ int OnInit()   { //--- criar timer    EventSetTimer(60); //---    return(INIT_SUCCEEDED);   } //+------------------------------------------------------------------+ //| Função de desinicialização do Expert                                    | //+------------------------------------------------------------------+ void OnDeinit(const int reason)   { //--- destruir timer    EventKillTimer();   } //+------------------------------------------------------------------+ //| Função de tick do Expert                                              | //+------------------------------------------------------------------+ void OnTick()   {    datetime TimePreviousBar = iTime(_Symbol,PERIOD_M1,1);    datetime TimeCurrentClose = TimePreviousBar + 60; // Tempo de fechamento da barra atual.    datetime Time_Current = TimeCurrent();    if(Time_Current == TimeCurrentClose && NewBarRecived == false)      {       PlaySound("ok.wav");   // Para verificar a execução.       NewBarRecived = true; // Atualiza o sinalizador para evitar chamadas múltiplas.       // Seu código aqui ----- (Faça algo)      }    else       if(Time_Current > TimeCurrentClose)         {          NewBarRecived = false; // Reinicia o sinalizador para a próxima barra.          // Seu código aqui ----- (Faça algo)         }    Comment("\n" +  "\n" +  "Tempo da Barra Atual -: " + TimeToString(TimePreviousBar,TIME_DATE|TIME_MINUTES|TIME_SECONDS) +            "\n" + "Tempo de Fechamento Atual -: " +TimeToString(TimeCurrentClose,TIME_DATE|TIME_MINUTES|TIME_SECONDS) +            "\n" + "Tempo Atual -: " + TimeToString(Time_Current,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + "\n" +"\n" + "Uma Nova Barra Recebida -: " + NewBarRecived); // Para checar os cálculos   } //+------------------------------------------------------------------+ //| Função do timer                                                    | //+------------------------------------------------------------------+ void OnTimer()   { //---   } //+------------------------------------------------------------------+ //| Função de trade                                                    | //+------------------------------------------------------------------+ void OnTrade()   { //---   } //+------------------------------------------------------------------+ //| Função ChartEvent                                               | //+------------------------------------------------------------------+ void OnChartEvent(const int id,                   const long &lparam,                   const double &dparam,                   const string &sparam)   { //---   } //+------------------------------------------------------------------+  

2024.04.05
Como Fechar Operações no Lucro ou Prejuízo com o MetaTrader 4
MetaTrader4
Como Fechar Operações no Lucro ou Prejuízo com o MetaTrader 4

Se você é trader e utiliza o MetaTrader 4, já deve ter se perguntado como gerenciar suas operações de forma eficaz, não é mesmo? Hoje, vou falar sobre uma ferramenta incrível chamada Close_on_PROFIT_or_LOSS_inAccont_Currency, que pode ser a chave para otimizar seus resultados nas operações de Forex. //+------------------------------------------------------------------------------------------------------------------------------+ //| Otimização do Close_on_PROFIT_or_LOSS_inAccont_Currency_V2: O que há de novo: 1. Tratamento de Erros: O código agora possui um mecanismo para lidar com situações em que as ordens não podem ser fechadas ou excluídas. 2. Otimização do Código: O código foi otimizado para evitar repetições e melhorar a legibilidade. 3. Eficiência: Remoção de loops ou cálculos desnecessários, tornando a execução mais rápida. 4. Limpeza dos Objetos do Gráfico: Todos os objetos do gráfico são limpos ao desativar o EA. //+------------------------------------------------------------------------------------------------------------------------------+ Antes de mais nada, é importante saber que se o valor do EA estiver definido como 0, ele não fará nada. Para que o fechamento das operações funcione, o parâmetro Positive_Closure_in_Account_Currency deve ser maior que o saldo atual (Equity). Caso contrário, as operações serão executadas imediatamente. Exemplo: Se o Equity é de R$ 55.000 e o Positive_Closure_in_Account_Currency está definido para R$ 55.500, você estará buscando um lucro de R$ 500. Importante: Se Positive_Closure_in_Account_Currency > R$ 55.000, as operações serão executadas imediatamente. Da mesma forma, o Negative_Closure_in_Account_Currency deve ser inferior ao saldo atual para evitar a execução imediata das operações. Exemplo: Com um Equity de R$ 55.000 e o Negative_Closure_in_Account_Currency definido para R$ 54.500, você estará disposto a perder apenas R$ 500. Atenção: Se Negative_Closure_in_Account_Currency < R$ 55.000, as operações serão executadas imediatamente. Vale lembrar que picos de spread podem ser evitados ao reduzir o número do spread. Contudo, o mercado tem suas próprias regras e você pode acabar enfrentando ganhos ou perdas maiores. Se o spread estiver definido abaixo da média para os pares negociados, essas posições não serão executadas. AVISO: Utilize este software por sua conta e risco. O mercado Forex é altamente volátil! #property copyright "Copyright 2024, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.01" #property description "persinaru@gmail.com" #property description "IP 2024 - código aberto gratuito" #property description "Este EA fecha todas as operações com lucros e perdas calculados na moeda da conta." #property description "AVISO: Use este software por sua conta e risco." #property description "O criador deste script não pode ser responsabilizado por qualquer dano ou perda." #property strict #property show_inputs extern string Closures = "EA fecha todas as operações e ordens pendentes quando um lucro ou prejuízo é alcançado. Lucros e prejuízos são calculados na moeda da conta."; extern int Positive_Closure_in_Account_Currency = 0; extern int Negative_Closure_in_Account_Currency = 0; extern int Spread = 10;

2024.03.25
Aprenda a Usar Redes Neurais para Trading Algorítmico com MQL5
MetaTrader5
Aprenda a Usar Redes Neurais para Trading Algorítmico com MQL5

O livro "Redes Neurais para Trading Algorítmico com MQL5" é o seu guia definitivo para aprender como utilizar machine learning e redes neurais no universo das operações financeiras. Este material é voltado para traders algorítmicos que desejam desenvolver estratégias de trading utilizando técnicas avançadas de inteligência artificial. Com 7 capítulos, o livro aborda tudo o que você precisa saber para começar a trabalhar com redes neurais e integrá-las aos seus robôs de trading em MQL5. As explicações são claras e fáceis de acompanhar, permitindo que você compreenda os fundamentos do machine learning e conheça os diferentes tipos de redes neurais, incluindo modelos convolucionais e recorrentes, além de soluções arquitetônicas mais complexas e mecanismos de atenção. Para te ajudar a integrar essas soluções nos seus robôs, o livro oferece uma série de exemplos práticos. Também são explorados métodos variados para melhorar a convergência dos modelos, como Batch Normalization e Dropout. Além disso, o autor fornece orientações práticas sobre como treinar redes neurais e incorporá-las nas suas estratégias de trading. Você aprenderá a criar Expert Advisors para testar a performance dos modelos treinados em novos dados, ajudando você a avaliar o seu potencial nos mercados financeiros reais. "Redes Neurais para Trading Algorítmico com MQL5" não é apenas um livro: é um guia prático que pode te ajudar a integrar técnicas avançadas de tomada de decisão nos seus algoritmos de trading, potencialmente melhorando seus resultados financeiros. Comece a aprender hoje mesmo sobre as capacidades avançadas do machine learning e eleve suas operações a um novo patamar.

2024.02.29
EA de Negociação Manual Buy Sell Close: A Ferramenta Ideal para Iniciantes no MetaTrader 4
MetaTrader4
EA de Negociação Manual Buy Sell Close: A Ferramenta Ideal para Iniciantes no MetaTrader 4

Se você está começando no mundo do trading, o EA de Negociação Manual Buy Sell Close é uma excelente opção para dar os primeiros passos. Este robô pode ser utilizado tanto no modo de backtesting visual quanto em operações ao vivo. Com ele, você pode praticar seu próprio sistema de negociação durante o backtesting. O Buy Sell Close permite a operação manual do EA, onde você pode pausar ou modificar a velocidade da revisão do backtest, facilitando seus exercícios de trading manual. Introdução: 1. Botão [Lots]: Após a caixa de entrada, você pode modificar o número de lotes. 2. Botão [BUY]: Pressionando este botão, você adiciona uma ordem de compra com o número de lotes especificado. 3. Botão [SELL]: Este botão permite que você coloque uma ordem de venda com a mesma quantidade de lotes. 4. Botão [SL Modify TP]: Utilizado para modificar o Stop Loss e o Take Profit. Ao pressioná-lo, você ajusta essas configurações em relação ao preço atual. 5. Botão [Close All Buy]: Este botão fecha todas as ordens de compra abertas. 6. Botão [Close All Sell]: Fecha todas as ordens de venda abertas. 7. Botão [Close All Orders]: Fecha todas as ordens abertas. 8. Exibição à direita: Mostra informações sobre as ordens abertas e os lucros. Descrição dos Parâmetros: 1. MM: Utiliza automaticamente a proporção de risco para calcular o tamanho padrão do lote. 2. Risco: Para um saldo de 10.000, o risco padrão é de 0,2 lotes. 3. Lotes: Lotes fixos se o MM estiver definido como FALSO, utilizando este número fixo de lotes. 4. SL: Stop Loss: padrão é de 250 micro pontos. 5. TP: Take Profit: padrão é de 500 micro pontos. Outros parâmetros estão relacionados à interface do usuário. Com esta ferramenta, você pode praticar seu sistema de negociação de forma eficaz. Agradecemos a todos pela atenção!

2024.02.29
Como Calcular o Drawdown no MT4 - Expert para MetaTrader 4
MetaTrader4
Como Calcular o Drawdown no MT4 - Expert para MetaTrader 4

Se você é trader e usa o MetaTrader 4, é fundamental entender como calcular o drawdown. Isso te ajuda a ter uma visão mais clara sobre o risco que você está assumindo nas suas operações. Hoje, vou te explicar como fazer isso usando um Expert Advisor que leva em conta o número mágico e o símbolo das operações. O que é Drawdown? Antes de mais nada, vamos esclarecer o que é drawdown. Em termos simples, o drawdown representa a queda máxima do seu capital em um determinado período. Saber calcular isso é essencial para gerenciar seu risco e entender melhor a saúde da sua conta. Como Calcular o Drawdown no MT4 O cálculo do drawdown no MT4 pode ser feito através de um Expert Advisor que considera o número mágico e o símbolo das operações. Isso significa que, se você não quiser levar em conta o drawdown geral da conta, basta remover o filtro de número mágico e o filtro de símbolo do código. Aqui estão os passos: Passo 1: Abra o MetaEditor no MT4. Passo 2: Crie um novo Expert Advisor e insira o código necessário para calcular o drawdown. Passo 3: Certifique-se de que o código inclui a lógica para filtrar pelo número mágico e símbolo, se necessário. Passo 4: Compile e teste seu Expert Advisor na conta demo. Com esses passos, você conseguirá calcular o drawdown de forma eficaz. Lembre-se, é sempre bom monitorar o drawdown para não ser pego de surpresa em períodos de alta volatilidade. Qualquer dúvida, estou aqui para ajudar!

2024.02.14
Primeiro Anterior 2 3 4 5 6 7 8 9 10 11 12 Próximo Último