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

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