Jonathan Pereira / Профиль
- Информация
4 года
опыт работы
|
5
продуктов
|
5
демо-версий
|
57
работ
|
0
сигналов
|
0
подписчиков
|
Como Desenvolvedor de Sistemas dedicado e apaixonado, adoro me aventurar no mundo da programação, tanto profissionalmente quanto em meu tempo livre. Dominando Java, Python e MQL5, minha experiência se estende a outras áreas, como SQL, bancos de dados relacionais e não relacionais, PySpark, Hadoop, machine learning, deep learning (utilizando Keras, TensorFlow, Pandas e NumPy), DevOps, engenharia de dados e arquitetura.
Foi em 2016 que, por um feliz acaso, me deparei com o mercado financeiro e me encantei instantaneamente. Ao descobrir a plataforma MetaTrader e sua capacidade de integrar estratégias codificadas ao mercado financeiro, soube que tinha encontrado um novo amor.
Explore meus tutoriais no GitHub e acompanhe minha jornada de crescimento e compartilhamento de conhecimento: https://github.com/jowpereira/mql5-tutoriais
Se desejar iniciar um novo projeto e aproveitar minha expertise, acesse: https://www.mql5.com/pt/job/new?prefered=14134597.
Tenho certeza de que, juntos, podemos desenvolver soluções interessantes e inspiradoras!
Conheça meu GPT - https://chat.openai.com/g/g-1DCzqDcMF-arnaldo
Foi em 2016 que, por um feliz acaso, me deparei com o mercado financeiro e me encantei instantaneamente. Ao descobrir a plataforma MetaTrader e sua capacidade de integrar estratégias codificadas ao mercado financeiro, soube que tinha encontrado um novo amor.
Explore meus tutoriais no GitHub e acompanhe minha jornada de crescimento e compartilhamento de conhecimento: https://github.com/jowpereira/mql5-tutoriais
Se desejar iniciar um novo projeto e aproveitar minha expertise, acesse: https://www.mql5.com/pt/job/new?prefered=14134597.
Tenho certeza de que, juntos, podemos desenvolver soluções interessantes e inspiradoras!
Conheça meu GPT - https://chat.openai.com/g/g-1DCzqDcMF-arnaldo
Jonathan Pereira
Опубликовал код Gerenciador de TakeProfit e StopLoss
Adiciona o StopGain(TakeProfit) e StopLoss definidos pelo usuário é possível também adicionar o uso de um trailingStop
2
1050
Jonathan Pereira
Опубликовал код Detector de novas Barras
A Ideia dessa classe é de detectar novas barras para um determinado Ativo em um timeFrame previamente setado, caso nenhuma informação seja fornecida no momento de criação do objeto ele assume Symbol() e Period() atual.
Um exemplo simples
2
384
Rinalva Ferreira
2023.07.13
//+------------------------------------------------------------------+
//| MeuExpert.mq5 |
//| Copyright 2021, Seu Nome |
//| https://www.seusite.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, Seu Nome"
#property link "https://www.seusite.com"
#property version "1.00"
#property strict input int TrailingStop = 50; // Trailing stop em pontos
input int TrailingStep = 10; // Incremento do trailing stop em pontos
input double LotMultiplier = 2; // Multiplicador do lote ao abrir uma nova posição double StopLoss = 0; // Variável para armazenar o stop loss atual
double TakeProfit = 0; // Variável para armazenar o take profit atual
double TrailingStart = 0; // Variável para armazenar o preço de início do trailing stop
double TrailingMinimum = 0; // Variável para armazenar o mínimo permitido para o trailing stop //+------------------------------------------------------------------+
//| Função de inicialização do Expert Advisor |
//+------------------------------------------------------------------+
int OnInit()
{ // Definir o stop loss e take profit inicial StopLoss = TrailingStop * _Point; TakeProfit = StopLoss * 2; // Definir o preço de início do trailing stop e o mínimo permitido TrailingStart = Bid - TrailingStop * _Point; TrailingMinimum = TrailingStart - TrailingStep * _Point; return(INIT_SUCCEEDED);
} //+------------------------------------------------------------------+
//| Função para abertura de novas posições |
//+------------------------------------------------------------------+
void OpenNewPosition(ENUM_ORDER_TYPE orderType, double lotSize)
{ // Verificar se a posição já está aberta if(PositionSelect() > 0) return; // Verificar a tendência do mercado if(orderType ==_TYPE_BUY && iMA(NULL, 0, 14, 0, MODE_SMA, PRICE_CLOSE, 0) iMA(NULL, 0, 28, 0, MODE_SMA, PRICE_CLOSE, 0)) return; else if(orderType == ORDER_TYPE_SELL && iMA(NULL, 0, 14, 0, MODE_SMA, PRICE_CLOSE, 0) > iMA(NULL, 0, 28, 0, MODE_SMA, PRICE_CLOSE, 0)) return; // Calcular o lote para a nova posição double lot = lotSize * LotMultiplier; // Abrir a nova posição if(orderType == ORDER_TYPE_BUY) OrderSend(Symbol(), ORDER_TYPE_BUY, lot, Ask, 10, Bid - StopLoss * _Point, Bid + TakeProfit * _Point, "Buy Order", MagicNumber); else if(orderType == ORDER_TYPE_SELL) OrderSend(Symbol(), ORDER_TYPE_SELL, lot, Bid, 10, Ask + StopLoss * _Point, Ask - TakeProfit * _Point, "Sell Order", MagicNumber);
} //+------------------------------------------------------------------+
//| Função para atualizar o trailing stop |
//+------------------------------------------------------------------+
void UpdateTrailingStop()
{ // Verificar a tendência do mercado ENUM_ORDER_TYPE orderType = PositionGetInteger(POSITION_TYPE); if(orderType == POSITION_TYPE_BUY && Bid - TrailingStart > TrailingStep * _Point) { // Atualizar o stop loss e o preço de início do trailing stop StopLoss = Bid - TrailingStop * _Point; TrailingStart = Bid - TrailingStep * _Point; // Verificar o mínimo permitido para o trailing stop if(TrailingStart TrailingMinimum) TrailingMinimum = TrailingStart; // Modificar a posição existente OrderModify(PositionGetTicket(), OrderOpenPrice(), StopLoss, OrderTakeProfit(), 0, Green); } else if(orderType == POSITION_TYPE_SELL && TrailingStart - Ask > TrailingStep * _Point) { // Atualizar o stop loss e o preço de início do trailing stop StopLoss = Ask + TrailingStop * _Point; TrailingStart = Ask + TrailingStep * _Point; // Verificar o mínimo permitido para o trailing stop if(TrailingStart > TrailingMinimum) TrailingMinimum = TrailingStart; // Modificar a posição existente OrderModify(PositionGetTicket(), OrderOpenPrice(), StopLoss, OrderTakeProfit(), 0, Red); }
} //+------------------------------------------------------------------+
//| Função de encerramento do Expert Advisor |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{ // Encerrar todas as posições abertas for(int i = OrdersTotal() - 1; i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS) && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 10, Yellow); }
} //+------------------------------------------------------------------+
//| Função principal do Expert Advisor |
//+------------------------------------------------------------------+
void OnTick() alguem pode mim ajuda e fazer a correcao deste codigo , nao consegui . boa tarde .
//| MeuExpert.mq5 |
//| Copyright 2021, Seu Nome |
//| https://www.seusite.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, Seu Nome"
#property link "https://www.seusite.com"
#property version "1.00"
#property strict input int TrailingStop = 50; // Trailing stop em pontos
input int TrailingStep = 10; // Incremento do trailing stop em pontos
input double LotMultiplier = 2; // Multiplicador do lote ao abrir uma nova posição double StopLoss = 0; // Variável para armazenar o stop loss atual
double TakeProfit = 0; // Variável para armazenar o take profit atual
double TrailingStart = 0; // Variável para armazenar o preço de início do trailing stop
double TrailingMinimum = 0; // Variável para armazenar o mínimo permitido para o trailing stop //+------------------------------------------------------------------+
//| Função de inicialização do Expert Advisor |
//+------------------------------------------------------------------+
int OnInit()
{ // Definir o stop loss e take profit inicial StopLoss = TrailingStop * _Point; TakeProfit = StopLoss * 2; // Definir o preço de início do trailing stop e o mínimo permitido TrailingStart = Bid - TrailingStop * _Point; TrailingMinimum = TrailingStart - TrailingStep * _Point; return(INIT_SUCCEEDED);
} //+------------------------------------------------------------------+
//| Função para abertura de novas posições |
//+------------------------------------------------------------------+
void OpenNewPosition(ENUM_ORDER_TYPE orderType, double lotSize)
{ // Verificar se a posição já está aberta if(PositionSelect() > 0) return; // Verificar a tendência do mercado if(orderType ==_TYPE_BUY && iMA(NULL, 0, 14, 0, MODE_SMA, PRICE_CLOSE, 0) iMA(NULL, 0, 28, 0, MODE_SMA, PRICE_CLOSE, 0)) return; else if(orderType == ORDER_TYPE_SELL && iMA(NULL, 0, 14, 0, MODE_SMA, PRICE_CLOSE, 0) > iMA(NULL, 0, 28, 0, MODE_SMA, PRICE_CLOSE, 0)) return; // Calcular o lote para a nova posição double lot = lotSize * LotMultiplier; // Abrir a nova posição if(orderType == ORDER_TYPE_BUY) OrderSend(Symbol(), ORDER_TYPE_BUY, lot, Ask, 10, Bid - StopLoss * _Point, Bid + TakeProfit * _Point, "Buy Order", MagicNumber); else if(orderType == ORDER_TYPE_SELL) OrderSend(Symbol(), ORDER_TYPE_SELL, lot, Bid, 10, Ask + StopLoss * _Point, Ask - TakeProfit * _Point, "Sell Order", MagicNumber);
} //+------------------------------------------------------------------+
//| Função para atualizar o trailing stop |
//+------------------------------------------------------------------+
void UpdateTrailingStop()
{ // Verificar a tendência do mercado ENUM_ORDER_TYPE orderType = PositionGetInteger(POSITION_TYPE); if(orderType == POSITION_TYPE_BUY && Bid - TrailingStart > TrailingStep * _Point) { // Atualizar o stop loss e o preço de início do trailing stop StopLoss = Bid - TrailingStop * _Point; TrailingStart = Bid - TrailingStep * _Point; // Verificar o mínimo permitido para o trailing stop if(TrailingStart TrailingMinimum) TrailingMinimum = TrailingStart; // Modificar a posição existente OrderModify(PositionGetTicket(), OrderOpenPrice(), StopLoss, OrderTakeProfit(), 0, Green); } else if(orderType == POSITION_TYPE_SELL && TrailingStart - Ask > TrailingStep * _Point) { // Atualizar o stop loss e o preço de início do trailing stop StopLoss = Ask + TrailingStop * _Point; TrailingStart = Ask + TrailingStep * _Point; // Verificar o mínimo permitido para o trailing stop if(TrailingStart > TrailingMinimum) TrailingMinimum = TrailingStart; // Modificar a posição existente OrderModify(PositionGetTicket(), OrderOpenPrice(), StopLoss, OrderTakeProfit(), 0, Red); }
} //+------------------------------------------------------------------+
//| Função de encerramento do Expert Advisor |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{ // Encerrar todas as posições abertas for(int i = OrdersTotal() - 1; i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS) && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 10, Yellow); }
} //+------------------------------------------------------------------+
//| Função principal do Expert Advisor |
//+------------------------------------------------------------------+
void OnTick() alguem pode mim ajuda e fazer a correcao deste codigo , nao consegui . boa tarde .
: