Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 871

Vladimir Karputov:

Выдавайте правильную цену на установку отложенного ордера.

После того как этот селлимит становится позицией, дальнейшая установка лимитных ордеров проходит без эксцессов.

               ExtStep=10*m_adjusted_point;
               m_trade.SellLimit(checkVolumeValue(loot),m_symbol.Bid()+ExtStep);
В чём неправильная цена?
lil_lil:

После того как этот селлимит становится позицией, дальнейшая установка лимитных ордеров проходит без эксцессов.

В чём неправильная цена?

m_symbol.Bid() - здесь явно содержится или мусор или старая цена. 

Сначала необходимо обновлять цены:

   if(!RefreshRates())
      return;

а потом уже выдавать торговый приказ на размещение отложенного ордера.

Vladimir Karputov:

m_symbol.Bid() - здесь явно содержится или мусор или старая цена. 

Сначала необходимо обновлять цены:

а потом уже выдавать торговый приказ на размещение отложенного ордера.

Есть  

 if(!RefreshRates())
            return;

перед отправкой приказа

lil_lil:

Есть  

перед отправкой приказа

Перед отправкой приказа распечатайте цену которую Вы передаёте. 

Vladimir Karputov:

Перед отправкой приказа распечатайте цену которую Вы передаёте. 

   m_symbol.Bid()4828.0


lil_lil:

   m_symbol.Bid()4828.0


Ладно зайдём с другой стороны: проверьте логи во вкладке "Журнал" - там точно болжно быть видно, что Вы отослали приказ Sell limit по цене 10.

Vladimir Karputov:

Ладно зайдём с другой стороны: проверьте логи во вкладке "Журнал" - там точно болжно быть видно, что Вы отослали приказ Sell limit по цене 10.

   CTrade::OrderSend: modify #3 at 10.00000 (sl: 0.00000 tp: 0.00000) [done]

так, это модифицирует на такую цену, буду искать.
lil_lil:

   CTrade::OrderSend: modify #3 at 10.00000 (sl: 0.00000 tp: 0.00000) [done]


Проверьте в терминале тики на дату в 00-00

Vladimir Karputov:

Проверьте в терминале тики на дату в 00-00

Тики есть, ошибка в функции модификации.

Спасибо.

Подскажите есть ли ошибки в коде?

Потому как при добавлении этого кода резко падает скорость оптимизации

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
if (UseEquityStop)
      {
        // если потеряно TotalEquityRisk (или больше) процентов депозита - закрываем позицию
        double AccountEquity = AccountInfoDouble(ACCOUNT_EQUITY);
        double AccountBalance = AccountInfoDouble(ACCOUNT_BALANCE);
        
        if (AccountEquity <= AccountBalance * (1 - TotalEquityRisk / 100))
          {
            Print("Потеряно ", TotalEquityRisk, "% депозита, принудительное закрытие позиции");
            CloseAllOrders();
          }
      }
//---------------------------------

бла бла код

Может как то можно ускорить скорость оптимизации?