Параллельность оредров превратить в последовательность с ожиданием в очереди

MQL4 Asesores Expertos

Tarea técnica

к примеру 10 стратегий выстреливают одновременно в одну и ту же милисекунду при открытие бара

надо их сделать последовательными один за другим, с проверкой, что предыдущий ордер был открыт и модифицирован SL TP

оредра могут быть отложенные и маркет

пока один ордер исполняется другие ждут в очереди


так как используется ММ настоящий баланс


double Total_Current_Risk()

{



  double res = 0;

  for (int i = 0; i < OrdersTotal(); i++)

  {

    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderStopLoss() != 0)

    {

      double m_point = MarketInfo(OrderSymbol(), MODE_POINT);

      double m_lotstep = MarketInfo(OrderSymbol(), MODE_LOTSTEP);

      double m_TickValue = MarketInfo(OrderSymbol(), MODE_TICKVALUE);


      double m_sl = 0;


      if (OrderType() == OP_BUY || OrderType() == OP_BUYLIMIT || OrderType() == OP_BUYSTOP)

      {

        m_sl = (OrderOpenPrice() - OrderStopLoss()) / m_point;

      }

      else

      {

        m_sl = (OrderStopLoss() - OrderOpenPrice()) / m_point;

      }


      res += NormalizeDouble((OrderLots() * (m_sl * m_TickValue)) + OrderCommission() + OrderSwap(), 2);

    }

  }

 Print("Account Balance: ", AccountBalance(), " -- Total Current Risk (with swap and commission): ", res, "  -- Net Balance: ", AccountBalance() - res);

  return res;

}

modify MM  ( accountbalance() - total_current_risk() )




random  range Sleep не предлогать,


################## sleep random delay #########################

ulong micro=GetMicrosecondCount();

ulong rnd = MathAbs(micro+MagicNumber);

MathSrand( rnd );

int slp = (MathRand()%120);

Verbose ("sqMMRiskFixedBalancePct, sleep="+IntegerToString(slp)+" seconds; rnd=" + IntegerToString(rnd)+"; GetMicrosecondCount()="+IntegerToString(micro) + ";GetTickCount()="+IntegerToString(GetTickCount())+"; magic="+IntegerToString(MagicNumber));

Sleep (1000*slp);


скан по номерам чартов и выставка sleep (current chart num) тоже не надо.


//+--------------------This is the new Function----------------------------+
int Get_Delay()
{
long prev_chart = ChartFirst(); // here we get ID of 1st chart

int count = 0;

while (prev_chart != -1) // we check if charts has finished
{
if (prev_chart == ChartID()) break; // we check if the current chart is = ID of selected chart, break the loop

prev_chart = ChartNext(prev_chart); // update selected Chart ID
count++; // increase count
}

return (count * 3000); // return Time in Milliseconds

}



#Sleep(Get_Delay()) _ticket = 


работает плагин OrderReliable mqh

минимальное изменения кода и структуры шаблонов, при сравнении будет использован vimdiff

указать где какой код был вставлен, так как будет использован для изменения будующих шаблонов


Han respondido

1
Desarrollador 1
Evaluación
(296)
Proyectos
475
40%
Arbitraje
105
40% / 24%
Caducado
80
17%
Ocupado
Ha publicado: 2 ejemplos
2
Desarrollador 2
Evaluación
(54)
Proyectos
102
23%
Arbitraje
12
25% / 17%
Caducado
13
13%
Libre
3
Desarrollador 3
Evaluación
(50)
Proyectos
94
29%
Arbitraje
4
25% / 0%
Caducado
4
4%
Libre
Ha publicado: 3 ejemplos
Solicitudes similares
Суть ТС:Приход в POI старшего тф, вход в позицию на младшем тф Анализ графика начинается всегда со старшего тф. Должен быть понятный контекст для работы. Активы: EURUSD, XAUUSD POI старшего таймфрейма: Liquidity (1M, 1W, 1D, 4H, 1H) Imbalance (1M, 1W, 1D, 4H, 1H) Order Block (1M, 1W, 1D, 4H, 1H) HTF Fractals (1M, 1W, 1D, 4H, 1H) Всегда дожидаться цену в POI старшего таймфрейма. Вход в позицию: Слом LTF структуры на

Información sobre el proyecto

Presupuesto
30 - 50 USD
IVA (24%): 7.2 - 12 USD
Total: 37 - 62 USD
Para el ejecutor
27 - 45 USD
Plazo límite de ejecución
de 1 a 7 día(s)

Cliente

Encargos realizados6
Número de arbitrajes0