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

MQL4 Эксперты

Техническое задание

к примеру 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

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


Откликнулись

1
Разработчик 1
Оценка
(296)
Проекты
475
40%
Арбитраж
105
40% / 24%
Просрочено
80
17%
Занят
Опубликовал: 2 примера
2
Разработчик 2
Оценка
(54)
Проекты
102
23%
Арбитраж
12
25% / 17%
Просрочено
13
13%
Свободен
3
Разработчик 3
Оценка
(50)
Проекты
94
29%
Арбитраж
4
25% / 0%
Просрочено
4
4%
Свободен
Опубликовал: 3 примера
Похожие заказы
Требуется создать советник на основе разворотных паттернов, используя дополнительные индикаторы такие как скользящее среднее, отклонение от скользящей средней, угол наклона скользящей средней. Возможно будет добавлено что то еще по ходу работы
Суть ТС:Приход в 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 структуры на

Информация о проекте

Бюджет
30 - 50 USD
VAT (24%): 7.2 - 12 USD
Итого: 37 - 62 USD
Исполнителю
27 - 45 USD
Сроки выполнения
от 1 до 7 дн.

Заказчик

Размещено заказов6
Количество арбитражей0