Correção de EA basedo em MAXD Intradey

MQL5 Asesores Expertos Fórex

Trabajo finalizado

Plazo de ejecución 17 horas
Comentario del Ejecutor
Cliente muito compreensivo :), espero ter mais negócios com ele!
Comentario del Cliente
Desenvolvedor rápido atencioso muito educado. com certeza recomendo a toda comunidade.

Tarea técnica

Olá, eu preciso de um desenvolvedor experiente em MQL5 para corrigir um código de Expert Advisor que está com erros de compilação. O código é para uma estratégia baseada no indicador MACD e tem parâmetros de risco definidos pelo usuário. O código está anexado a este pedido. Por favor, me diga quanto tempo e quanto custa para fazer esse trabalho.

#define MagicNumber 12345
//---
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\AccountInfo.mqh>


// Parâmetros de entrada
input int MagicNumber = 12345;  // Número mágico para identificar as operações do robô
input double RiskPercentage = 1.0;  // Percentual de risco por operação (1.0 = 1%)
input int StopLoss = 20;  // Valor do stop-loss em pips
input int TakeProfit = 30;  // Valor do take-profit em pips


// Função de inicialização do robô
int OnInit()
{
    // Definir o risco por operação com base no saldo da conta
    double AccountBalance = AccountBalance();
    double RiskAmount = AccountBalance * RiskPercentage / 100.0;
    double OneLotValue = MarketInfo(Symbol(), MODE_TICKVALUE);

    // Definir o tamanho do lote com base no risco por operação e no valor de um lote
    double LotSize = RiskAmount / (OneLotValue * StopLoss);

    // Definir as configurações do risco
    SetRiskParameters(Symbol(), StopLoss, TakeProfit, LotSize);

    return (INIT_SUCCEEDED);
}

// Função para abrir uma posição de compra
void BuySignal()
{
    // Verificar se não há nenhuma posição aberta
    if (PositionsTotal() == 0)
    {
        // Gerar sinal de compra do MACD
        if (iMACD(Symbol(), 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1) > iMACD(Symbol(), 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 1))
        {
            // Calcular o tamanho do lote com base no risco por operação
            double LotSize = GetRiskLotSize(Symbol());

            // Abrir uma posição de compra
            int ticket = OrderSend(Symbol(), OP_BUY, LotSize, Ask, 3, Bid - StopLoss * Point, Bid + TakeProfit * Point, "Buy", MagicNumber, 0, Blue);
        }
    }
}

// Função para abrir uma posição de venda
void SellSignal()
{
    // Verificar se não há nenhuma posição aberta
    if (PositionsTotal() == 0)
    {
        // Gerar sinal de venda do MACD
        if (iMACD(Symbol(), 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1) < iMACD(Symbol(), 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 1))
        {
            // Calcular o tamanho do lote com base no risco por operação
            double LotSize = GetRiskLotSize(Symbol());

            // Abrir uma posição de venda
            int ticket = OrderSend(Symbol(), OP_SELL, LotSize, Bid, 3, Ask + StopLoss * Point, Ask - TakeProfit * Point, "Sell", MagicNumber, 0, Red);
        }
    }
}

// Função para gerenciar o risco da posição
void SetRiskParameters(string symbol, int stopLoss, int takeProfit, double lotSize)
{
    // Definir as configurações de stop-loss e take-profit
    int slippage = MarketInfo(symbol, MODE_SPREAD) + StopLevel * Point;
    double stopLossPrice = stopLoss * Point;
    double takeProfitPrice = takeProfit * Point;

    // Definir as configurações de risco para a posição atual
    for (int i = 0; i < OrdersTotal(); i++)
    {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if (OrderSymbol() == symbol && OrderMagicNumber() == MagicNumber)
            {
                if (OrderType() == OP_BUY)
                {
                    OrderModify(OrderTicket(), OrderOpenPrice(), stopLossPrice, takeProfitPrice, 0, Blue);
                }
                else if (OrderType() == OP_SELL)
                {
                    OrderModify(OrderTicket(), OrderOpenPrice(), stopLossPrice, takeProfitPrice, 0, Red);
                }
            }
        }
    }
}

// Função para calcular o tamanho do lote com base no risco por operação
double GetRiskLotSize(string symbol)
{
    double AccountBalance = AccountBalance();
    double RiskAmount = AccountBalance * RiskPercentage / 100.0;
    double OneLotValue = MarketInfo(symbol, MODE_TICKVALUE);
    double LotSize = RiskAmount / (OneLotValue * StopLoss);
    return LotSize;
}

// Função de execução contínua do robô
void OnTick()
{
    // Verificar os sinais de entrada
    BuySignal();
    SellSignal();
}

// Função de encerramento do robô
void OnDeinit(const int reason)
{
    // Encerrar todas as posições abertas
    for (int i = PositionsTotal() - 1; i >= 0; i--)
    {
        if (PositionSelectByTicket(PositionGetTicket(i)))
        {
            if (PositionMagicNumber() == MagicNumber)
            {
                OrderClose(PositionGetTicket(i), PositionGetDouble(POSITION_VOLUME), PositionGetDouble(POSITION_CLOSE), 3, Violet);
            }
        }
    }
}


Obrigado.

Han respondido

1
Desarrollador 1
Evaluación
(39)
Proyectos
40
10%
Arbitraje
0
Caducado
0
Libre
2
Desarrollador 2
Evaluación
(564)
Proyectos
933
47%
Arbitraje
303
59% / 25%
Caducado
125
13%
Trabaja
3
Desarrollador 3
Evaluación
(113)
Proyectos
175
33%
Arbitraje
13
31% / 31%
Caducado
0
Trabaja
4
Desarrollador 4
Evaluación
(47)
Proyectos
79
11%
Arbitraje
4
25% / 75%
Caducado
2
3%
Libre
5
Desarrollador 5
Evaluación
(11)
Proyectos
17
59%
Arbitraje
2
0% / 100%
Caducado
2
12%
Libre
6
Desarrollador 6
Evaluación
(6)
Proyectos
7
14%
Arbitraje
1
100% / 0%
Caducado
0
Libre
7
Desarrollador 7
Evaluación
(261)
Proyectos
428
38%
Arbitraje
87
44% / 18%
Caducado
71
17%
Ocupado
Solicitudes similares
Terms of Reference for Indicator Development 1. Objective To develop a signal indicator for binary options in MQL4 or MQL5 that identifies entry and exit points on the chart based on market trends and patterns shown in the videos on the Trendify Binary Options YouTube channel . This channel provides practical examples of the expected behavior and functionality of the indicator. 2. Main References The primary
Objetivo do Robô: O robô “2024” tem como objetivo identificar pontos de entrada no mercado com base no cruzamento do indicador Williams %R (14 períodos) com a média móvel exponencial (EMA) de 4 períodos com deslocamento de 4. Quando esse cruzamento ocorre, o robô traça os níveis de Fibonacci no candle que causou o cruzamento e coloca ordens de compra ou venda nos níveis de 61% ou 100%, conforme a configuração
Média móvel Média móvel sugeridas 8 21 50 e 200 quero que qualquer média móvel que eu possa adicionar tenha essa função As médias apareça em uma só tela como exemplo igual o tradingview as médias sejam todas em uma tela e que apareça de qual tempo gráfico é Média móvel negativa Para encontrar as máximas quero fazer médias negativas no caso fica na parte do topo. Quero adicionar cores Vibrantes nas médias negativas
Planilha quantica para daytrade mini índice e dólar, e forex para rodar no mt5. Colher informações de comprados e vendidos por BANCOS, ESTRANGEIROS E CPFs, COLHER INFORMAÇÕES SOBRE AS 10 MAIORES AÇÕES BOVESPA NO MOMENTO, PROJEÇÕES DO MINI INDICE E DÓLAR, PORCENTAGEM DE VENDIDOS E COMPRADOS NO MOMENTO, SINAL DE ALERTA EM TELA PARA COMPRA OU VENDA EM DETERMINADO PREÇO ESTIPULADO PELAS INFORMAÇÕES DA PLANILHA. A tela de
preciso de um E.A que me mostre gráficos personalizados com timeframes de 1 dia até 366 dias e que me mostre histórico e aceite indicadores na janela gráfica e também no histograma em qualquer corretora seja de Forex ou futuros
Robo auto para mt5 30 - 250 USD
Criar Robo para montar Canal no grafico de domingo no forex e enviar ordem após rompimento. deverá montar uma estrutura no grafico do canal, envio de ordem no pompimento do canal e colocar take e stoploss. Criar um menu para parametrizar lote. tempo grafico
Indicador de Confluência de indicadores de posição de opõções (futuros / CME) + volume, confluindo com sazonalidade mensal de cada ativo, com dados do relatório COT, com a força dos ativos no mensal e no diário ... tudo isso confluindo com as principais regiões de smart money concept , dando sinais de entrada. Além disso, caso possível aliar IA, com panorâma do dia de forma automática, já analisando as notícias
PRECISO QUE COLOCA MAIS ALGUM INDICADOR DE TENDENCIA JUNTO COM ESSE SUPER TREND PARA DAR CONFRUENCIA COM SINAL POSSIVEL COM UMA SETA DE ENTRADA. POSSIVEL 2 INDICADOR DE TENDENCIA PRA CONFIRMA ENTRADA COM SUPER TREND
STRATEGY DEFINITION: This setup is based on the volatility of the "X" minute chart, combining the alignment of averages from different timeframes! It considers the alignment of the averages for the continuity of direction, providing excellent movements. TRADE DYNAMICS TYPE OF AVERAGES: EXPONENTIAL. TIMEFRAME: 1 MINUTE TRADE DYNAMICS: WHEN THE "A" EXP MOVING AVERAGE OF "X" MINUTES + "B" EXP OF "X" MINUTES + "C" EXP

Información sobre el proyecto

Presupuesto
30+ USD
Para el ejecutor
27 USD