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

 

почему в моем сигнале не отображается баланс и история торговли?

 
thiago5 #:

Здравствуйте.

Я новичок в платформе МТ4. Я ввел правильное имя пользователя и пароль, даже доступный баланс появился, но кнопка NEW ORDER неактивна, хотя у меня есть баланс для торговли; то же самое происходит на смартфонах.


Может ли кто-нибудь помочь мне и подсказать, как решить эту проблему?



Заранее спасибо.

Проверьте минимальный депозит вашего брокера и убедитесь, что вы смотрите на правильный актив, потому что может быть так, что вы смотрите на "полный" актив и внесли суммы для "микро".
 
25476896 #:

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

Вы вошли в систему? Насколько я знаю, они отображаются только у подписчиков или владельцев сигнала.
 

Может ли быть такое , когда обратные связи свидетельствуют о том, что успех по открытию позиции

2023.04.21 13:06:24.961 MAllTradeV_0(черновик) (EURUSD,M1) Метод PositionOpen() выполнен успешно. Код возврата=10008 (placed)0 595 1682055000 lot 0.05000000

2023.04.21 13:06:25.952 MAllTradeV_0(черновик) (EURUSD,M1) Метод OrderOpen() выполнен успешно. Код возврата=10008 (placed)0 595 1682055000 lot 0.01000000

2023.04.21 13:18:03.075 MAllTradeV_0(черновик) (EURUSD,M1) Метод PositionOpen() выполнен успешно. Код возврата=10008 (placed)0 595 1682055000 lot 0.04000000


А на деле нет одного.


в истории не закрывалась.


использую стандартный класс для торговли

  if(!m_trade.PositionOpen(position_buff[i].symbol,order_type,lot,position_buff[i].price,0,0,position_buff[i].comment))
         //--- сообщим о неудаче
         Print("Метод PositionOpen() потерпел неудачу. Код возврата=",m_trade.ResultRetcode(),
               ". Описание кода: ",m_trade.ResultRetcodeDescription(),")"+position_buff[i].comment+" lot "+DoubleToString(lot));
      else
        {
         position_buff[i].timeOp= TimeCurrent();     // Фиксировать время
         Print("Метод PositionOpen() выполнен успешно. Код возврата=",m_trade.ResultRetcode(),
               " (",m_trade.ResultRetcodeDescription(),")"+position_buff[i].comment+" lot "+DoubleToString(lot));//
       //  Sleep(1000);
        }


Подскажите как поймать Код возврата=10009 ???????

Кто знает как отследить конкретно ордер, исполнился он или нет? Я так понял код возврата по запросу 10008 это не конечный ответ. 

 

10008 - это "ордер выставлен", 10009 - "ордер исполнен"

Грубо, отправляя рыночный ордер через OrderSend, получаем 10009, отправляя отложенный - 10008

От стандартных классов отказался давно, там куча подводных граблей разложена.

 
JRandomTrader #:

10008 - это "ордер выставлен", 10009 - "ордер исполнен"

Грубо, отправляя рыночный ордер через OrderSend, получаем 10009, отправляя отложенный - 10008

От стандартных классов отказался давно, там куча подводных граблей разложена.

Пожалуйста, покажите чем пользуетесь вы!

 
Mikhail Toptunov #:

Пожалуйста, покажите чем пользуетесь вы!

Выставляю через OrderSend или OrderSend Async, сохраняю в отсортированном по цене массиве выставленные ордера (или только один ордер - если рыночный) и отслеживаю их судьбу через OnTrade или OnTradeTransaction

Плюс, периодически и при старте, проверки на предмет пропущенных событий - сверка массива со списком действующих ордеров.

 
Mikhail Toptunov #:

Может ли быть такое , когда обратные связи свидетельствуют о том, что успех по открытию позиции

2023.04.21 13:06:24.961 MAllTradeV_0(черновик) (EURUSD,M1) Метод PositionOpen() выполнен успешно. Код возврата=10008 (placed)0 595 1682055000 lot 0.05000000

2023.04.21 13:06:25.952 MAllTradeV_0(черновик) (EURUSD,M1) Метод OrderOpen() выполнен успешно. Код возврата=10008 (placed)0 595 1682055000 lot 0.01000000

2023.04.21 13:18:03.075 MAllTradeV_0(черновик) (EURUSD,M1) Метод PositionOpen() выполнен успешно. Код возврата=10008 (placed)0 595 1682055000 lot 0.04000000


А на деле нет одного.


в истории не закрывалась.


использую стандартный класс для торговли


Подскажите как поймать Код возврата=10009 ???????

Кто знает как отследить конкретно ордер, исполнился он или нет? Я так понял код возврата по запросу 10008 это не конечный ответ. 

А почему вы отложенный ордер ищете среди позиций?

 
Alexey Viktorov #:

А почему вы отложенный ордер ищете среди позиций?

Спасибо, похоже разобрался. Мне надо было открыть позицию по текущей цене, а ставил отложники, по этому они не выставлялись, потому что цену указывал текущую.

Использовал

   ENUM_ORDER_TYPE order_type= position_buff[i].type==0 ? ORDER_TYPE_BUY : ORDER_TYPE_SELL;


а надо 

 ENUM_POSITION_TYPE order_type= position_buff[i].type==0 ? POSITION_TYPE_BUY : POSITION_TYPE_SELL;
 

Не пойму , почему в PositionOpen ENUM_ORDER_TYPE , а не ENUM_POSITION_TYPE ?

//+------------------------------------------------------------------+
//| Open position                                                    |
//+------------------------------------------------------------------+
bool CTrade::PositionOpen(const string symbol,const ENUM_ORDER_TYPE order_type,const double volume,
                          const double price,const double sl,const double tp,const string comment)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__))
      return(false);
//--- clean
   ClearStructures();
//--- check
   if(order_type!=ORDER_TYPE_BUY && order_type!=ORDER_TYPE_SELL)
     {
      m_result.retcode=TRADE_RETCODE_INVALID;
      m_result.comment="Invalid order type";
      return(false);
     }
//--- setting request
   m_request.action   =TRADE_ACTION_DEAL;
   m_request.symbol   =symbol;
   m_request.magic    =m_magic;
   m_request.volume   =volume;
   m_request.type     =order_type;
   m_request.price    =price;
   m_request.sl       =sl;
   m_request.tp       =tp;
   m_request.deviation=m_deviation;
//--- check order type
   if(!OrderTypeCheck(symbol))
      return(false);
//--- check filling
   if(!FillingCheck(symbol))
      return(false);
   m_request.comment=comment;
//--- action and return the result
   return(OrderSend(m_request,m_result));
  }
Причина обращения: