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

MQL4 Uzmanlar

İş Gereklilikleri

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

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


Yanıtlandı

1
Geliştirici 1
Derecelendirme
(296)
Projeler
475
40%
Arabuluculuk
105
40% / 24%
Süresi dolmuş
80
17%
Meşgul
Yayınlandı: 2 kod
2
Geliştirici 2
Derecelendirme
(54)
Projeler
102
23%
Arabuluculuk
12
25% / 17%
Süresi dolmuş
13
13%
Serbest
3
Geliştirici 3
Derecelendirme
(50)
Projeler
94
29%
Arabuluculuk
4
25% / 0%
Süresi dolmuş
4
4%
Serbest
Yayınlandı: 3 kod
Benzer siparişler
Требуется создать советник на основе разворотных паттернов, используя дополнительные индикаторы такие как скользящее среднее, отклонение от скользящей средней, угол наклона скользящей средней. Возможно будет добавлено что то еще по ходу работы
Суть ТС:Приход в 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 структуры на

Proje bilgisi

Bütçe
30 - 50 USD
KDV (24%): 7.2 - 12 USD
Toplam: 37 - 62 USD
Geliştirici için
27 - 45 USD
Son teslim tarihi
from 1 to 7 gün

Müşteri

Verilmiş siparişler6
Arabuluculuk sayısı0