Boa tarde!!
Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
Fernando Carreiro, 2023.07.06 16:16
Por favor EDITE o seu comentário e utilize o botão do CÓDIGO (Alt -S) ao inserir o seu código.
Bom dia.
Estou construindo um EA para testar uma estratégia e não estou conseguindo finalizar meu projeto
Alguem sabe como resolver os erros a seguir:
'StrToTime' - undeclared identifier robo 2.mq5 29 16
'TradeTime' - some operator expected robo 2.mq5 29 26
'TimeHour' - undeclared identifier robo 2.mq5 61 11
'currentTime' - some operator expected robo 2.mq5 61 20
expression not boolean robo 2.mq5 61 11
'==' - semicolon expected robo 2.mq5 61 33
'==' - operand expected robo 2.mq5 61 33
'TimeHour' - undeclared identifier robo 2.mq5 61 36
'tradeTime' - some operator expected robo 2.mq5 61 45
'TimeMinute' - undeclared identifier robo 2.mq5 61 59
'currentTime' - some operator expected robo 2.mq5 61 70
'TimeMinute' - undeclared identifier robo 2.mq5 61 86
'tradeTime' - some operator expected robo 2.mq5 61 97
Não tente gerar código automaticamente que dá nisso, se voce conhece programação é fácil resolver esses problemas. Se tiver uma dúvida mais especifica a gente fica feliz em ajudar.
Bom dia.
Estou construindo um EA para testar uma estratégia e não estou conseguindo finalizar meu projeto
Alguem sabe como resolver os erros a seguir:
Sim, eu sei.
Não tente gerar código automaticamente que dá nisso, se voce conhece programação é fácil resolver esses problemas. Se tiver uma dúvida mais especifica a gente fica feliz em ajudar.
Conheço pouco de programação e falta pouco para terminar esta estratégia.
O que eu preciso é criar o comando que le a hora que quero iniciar o sinal, exemplo a entrada é as 15:30 do metatrader,
então eu coloco na opção de horário que a ordem seja as 15:30 e ele le e faz a entrada
Tentei criar via internet e sempre da o mesmo erro somente nos parametros acima.
Vou tentar estudar mais um pouco para ver qual a maneira de colocar a leitura do horário
Conheço pouco de programação e falta pouco para terminar esta estratégia.
O que eu preciso é criar o comando que le a hora que quero iniciar o sinal, exemplo a entrada é as 15:30 do metatrader,
então eu coloco na opção de horário que a ordem seja as 15:30 e ele le e faz a entrada
Tentei criar via internet e sempre da o mesmo erro somente nos parametros acima.
Vou tentar estudar mais um pouco para ver qual a maneira de colocar a leitura do horário
Comece com o que pode ser feito edit o codigo que nem o colega disse pra melhorar a visualização que é incrivel que um moderador não deletou ainda. Fora isso, tu pode mostrar como tentou fazer essas funções.
Oi Ricardo, eu tinha um projeto e comecei usando o Chatgpt para construir o que eu estava pensando, ao colocar no metaeditor para testar, apareceu alguns erros,
a maioria foi sendo corrigida e no final ficou este erro de interpretar o horário.
Pois é, o @Fernando Carreiro vinha colocando ordem na bagunça, mas resolveu dar um tempo deste fórum... Último comentário dele até o momento:
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Fernando Carreiro , 2023.07.07 00:26
Não, não para férias. Eu só quero me afastar deste fórum em particular por um tempo!Oi Ricardo, eu tinha um projeto e comecei usando o Chatgpt para construir o que eu estava pensando, ao colocar no metaeditor para testar, apareceu alguns erros,
a maioria foi sendo corrigida e no final ficou este erro de interpretar o horário.
Eu recomendaria conhecer programação e logica para conseguir resolver esses erros que parecem simples.
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Bom dia.
Estou construindo um EA para testar uma estratégia e não estou conseguindo finalizar meu projeto
Alguem sabe como resolver os erros a seguir:
'StrToTime' - undeclared identifier robo 2.mq5 29 16
'TradeTime' - some operator expected robo 2.mq5 29 26
'TimeHour' - undeclared identifier robo 2.mq5 61 11
'currentTime' - some operator expected robo 2.mq5 61 20
expression not boolean robo 2.mq5 61 11
'==' - semicolon expected robo 2.mq5 61 33
'==' - operand expected robo 2.mq5 61 33
'TimeHour' - undeclared identifier robo 2.mq5 61 36
'tradeTime' - some operator expected robo 2.mq5 61 45
'TimeMinute' - undeclared identifier robo 2.mq5 61 59
'currentTime' - some operator expected robo 2.mq5 61 70
'TimeMinute' - undeclared identifier robo 2.mq5 61 86
'tradeTime' - some operator expected robo 2.mq5 61 97
//+------------------------------------------------------------------+
//| Meu Bot Trader |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright "Seu Nome"
#property version "1.00"
#property strict
// Variáveis de entrada
input double LotSize = 0.01; // Lote de entrada
input int StopLoss = 300; // Stop Loss em pontos
input int TakeProfit = 600; // Take Profit em pontos
input string TradeTime = "15:30"; // Hora de negociação
input int MagicNumber = 123456; // Número mágico para o par de moedas
// Variável global para armazenar o tempo de negociação convertido
datetime tradeTime;
//+------------------------------------------------------------------+
//| Função de inicialização do Expert Advisor |
//+------------------------------------------------------------------+
void OnInit()
{
// Configurar eventos de nova barra
EventSetTimer(60);
// Converter a string TradeTime em um valor datetime
tradeTime = StrToTime(TradeTime);
}
//+------------------------------------------------------------------+
//| Função de manipulação do evento de nova barra |
//+------------------------------------------------------------------+
void OnTimer()
{
// Verifica se é a hora de negociação
if (IsTradeTime(TimeCurrent()))
{
// Verifica se é uma barra positiva
if (IsBarPositive())
{
// Realiza uma compra
Buy();
}
// Verifica se é uma barra negativa
else if (IsBarNegative())
{
// Realiza uma venda
Sell();
}
}
}
//+------------------------------------------------------------------+
//| Função de verificação se é a hora de negociação |
//+------------------------------------------------------------------+
bool IsTradeTime(const datetime currentTime)
{
// Verifica se é a hora de negociação desejada
return TimeHour(currentTime) == TimeHour(tradeTime) && TimeMinute(currentTime) == TimeMinute(tradeTime);
}
//+------------------------------------------------------------------+
//| Função de verificação se a barra é positiva |
//+------------------------------------------------------------------+
bool IsBarPositive()
{
// Obtém o preço de abertura da barra
double openPrice = iOpen(_Symbol, PERIOD_CURRENT, 0);
// Obtém o preço de fechamento da barra
double closePrice = iClose(_Symbol, PERIOD_CURRENT, 0);
// Verifica se a barra é positiva
return closePrice > openPrice;
}
//+------------------------------------------------------------------+
//| Função de verificação se a barra é negativa |
//+------------------------------------------------------------------+
bool IsBarNegative()
{
// Obtém o preço de abertura da barra
double openPrice = iOpen(_Symbol, PERIOD_CURRENT, 0);
// Obtém o preço de fechamento da barra
double closePrice = iClose(_Symbol, PERIOD_CURRENT, 0);
// Verifica se a barra é negativa
return closePrice < openPrice;
}
//+------------------------------------------------------------------+
//| Função para realizar uma compra |
//+------------------------------------------------------------------+
void Buy()
{
// Calcula o preço de entrada
double entryPrice = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
// Calcula o preço do stop loss
double stopLossPrice = entryPrice - StopLoss * _Point;
// Calcula o preço do take profit
double takeProfitPrice = entryPrice + TakeProfit * _Point;
// Preparar estrutura MqlTradeRequest
MqlTradeRequest request;
ZeroMemory(request);
request.action = TRADE_ACTION_DEAL;
request.symbol = _Symbol;
request.volume = LotSize;
request.price = entryPrice;
request.sl = stopLossPrice;
request.tp = takeProfitPrice;
request.type = ORDER_TYPE_BUY;
request.magic = MagicNumber;
request.comment = "Buy order";
// Enviar ordem de compra
MqlTradeResult result;
if (OrderSend(request, result))
{
// Ordem enviada com sucesso
Print("Ordem de compra enviada - Ticket: ", result.order);
}
else
{
// Erro ao enviar a ordem de compra
Print("Erro ao enviar a ordem de compra: ", GetLastError());
}
}
//+------------------------------------------------------------------+
//| Função para realizar uma venda |
//+------------------------------------------------------------------+
void Sell()
{
// Calcula o preço de entrada
double entryPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID);
// Calcula o preço do stop loss
double stopLossPrice = entryPrice + StopLoss * _Point;
// Calcula o preço do take profit
double takeProfitPrice = entryPrice - TakeProfit * _Point;
// Preparar estrutura MqlTradeRequest
MqlTradeRequest request;
ZeroMemory(request);
request.action = TRADE_ACTION_DEAL;
request.symbol = _Symbol;
request.volume = LotSize;
request.price = entryPrice;
request.sl = stopLossPrice;
request.tp = takeProfitPrice;
request.type = ORDER_TYPE_SELL;
request.magic = MagicNumber;
request.comment = "Sell order";
// Enviar ordem de venda
MqlTradeResult result;
if (OrderSend(request, result))
{
// Ordem enviada com sucesso
Print("Ordem de venda enviada - Ticket: ", result.order);
}
else
{
// Erro ao enviar a ordem de venda
Print("Erro ao enviar a ordem de venda: ", GetLastError());
}
}