Preciso de uma ajuda de outro Programador para meu projeto pessoal Assunto(Money Manager)

Tarea técnica

Caro desenvolvedor, eu estou elaborando um gerenciamento de risco e estou travado em alguns pontos nesse gerenciamento, gostaria de um suporte de um colega programador para me ajudar a desenvolver com a formula que gostaria a logica é a seguinte                                                                                                                                                                                                            double MM_Size()  // martingale / anti-martingale
{
    double SL;
// Assumindo que a lógica para determinar StopSell e StopBuy já foi definida em algum lugar
if (ORDER_TYPE_BUY) {
    SL = ATR2[Shiftatrbuystop] * StopBuy;  // Stop Loss = Average True Range * fixed value
} else {
    SL = ATR4[ShfitStopatrSell] * StopSell;  // Stop Loss = Average True Range * fixed value
}

    double tickvalue = SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_VALUE);
    double ticksize = SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_SIZE);
    double lots = MM_Percent * 1.0 / 100 * AccountInfoDouble(ACCOUNT_BALANCE) / (SL / ticksize * tickvalue);
    double MaxLot = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MAX);
    double MinLot = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MIN);
    ulong ticket = 0;
   
    if ( ORDER_TYPE_BUY) {
        ticket = LastBuyOrderTicket();
    } else {
        ticket = LastSellOrderTicket();
    }

    if (ticket > 0) {
        double lastDealVolume = HistoryDealGetDouble(ticket, DEAL_VOLUME);
        double lastDealProfit = HistoryDealGetDouble(ticket, DEAL_PROFIT);
        
        if (lastDealProfit > 0 && !MM_Martingale_RestartProfit) {
            lots = lastDealVolume * MM_Martingale_ProfitFactor;
        } else if (lastDealProfit < 0 && !MM_Martingale_RestartLoss) {
            lots = lastDealVolume * MM_Martingale_LossFactor;
        } else if (lastDealProfit == 0) {
            lots = lastDealVolume;
        }
    } else 
   
     if(ConsecutivePL(false, MM_Martingale_RestartLosses))
      lots = MM_Percent * 1.0 / 100 * AccountInfoDouble(ACCOUNT_BALANCE) / (SL / ticksize * tickvalue);
   if(ConsecutivePL(true, MM_Martingale_RestartProfits))
      lots = MM_Percent * 1.0 / 100 * AccountInfoDouble(ACCOUNT_BALANCE) / (SL / ticksize * tickvalue);
   if(lots > MaxLot) lots = MaxLot;
   if(lots < MinLot) lots = MinLot;
   return(lots);
}                                                                                                                                                                                                                                                                                                               //Quero que ela aplique os stops de maneira correta pois me parece que nao esta sendo calculado corretamente por ter 2 tipos de stops, quero que o martingale seja aplicado somente no tipo de ordem ou seja Buy aplica martingale somente Buy, Sell somente Sell... Reiniciar o loop somente se o profit Atual bateu todas as sequencias de loss de determinado Tipo de ordem 


Han respondido

1
Desarrollador 1
Evaluación
Proyectos
0
0%
Arbitraje
1
0% / 100%
Caducado
0
Libre
2
Desarrollador 2
Evaluación
(48)
Proyectos
49
8%
Arbitraje
0
Caducado
0
Libre
3
Desarrollador 3
Evaluación
(11)
Proyectos
17
59%
Arbitraje
2
0% / 100%
Caducado
2
12%
Libre
4
Desarrollador 4
Evaluación
Proyectos
0
0%
Arbitraje
0
Caducado
0
Libre
Solicitudes similares
Project Description: I am looking for a Senior MQL5 Developer to build a high-precision Expert Advisor (EA) for the US30 (Dow Jones) index, based on Smart Money Concepts (SMC) and ICT methodologies. The EA must handle multi-timeframe analysis and execute trades with mechanical precision. 1. Multi-Timeframe Analysis & Structural Logic • D1 (Confluence): Automatic plotting of Daily Fair Value Gaps (FVG) and Order
1️ ⃣ Informações Gerais Plataforma: MetaTrader 5 Tipo: Expert Advisor (EA) Operação: Hedge + Grid Dinâmico Indicador base: Average True Range (ATR período 20) 2️ ⃣ LÓGICA OPERACIONAL 🔹 2.1 Abertura Inicial O robô trabalha sempre com ordem de compra e venda ao mesmo tempo (HEDGE) e o fechamento é sempre usando GRID que tem multiplicador de lote e o tamanho (espaçamento) dinâmico com base em um fator de
Robo de elite 40 - 100 USD
seu Robô de Elite: Precisão: Filtros RSI e Price Action. Rentabilidade: Lote dinâmico baseado no capital (Compound Interest). Automação 24h: Filtro de horário para evitar spreads altos. Satisfação: Dashboard interativo com "Botão de Pânico"
Já tenho um código MQL5 com uma base do funcionamento. Basicamente o EA traça um canal na virada do dia (penso que utilizar horário seria melhor em razão da diferença entre corretoras), com base em um número x de candles, calcula e posiciona ordens stop com base em % do capital. Caso uma ordem aberta venha a stopar, o EA deve realizar uma virada de mão com base no mesmo canal, contudo recalculando o lote para que
//+------------------------------------------------------------------+ //| EA Cruzamento de Médias MT5 | //+------------------------------------------------------------------+ #property strict #include <Trade/Trade.mqh> CTrade trade; //---- Inputs input int FastMAPeriod = 20; input int SlowMAPeriod = 50; input double LotSize = 0.01; input int StopLoss = 300; input int TakeProfit = 600; //----

Información sobre el proyecto

Presupuesto
33+ USD