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

 
Artyom Trishkin:

Сюда вызвать не выйдет - он не пользуется смартфонами и прочими новыми гаджетами - там телефон из Смольного...

Хоть один единомышленник нашёлся. Я тоже игнорирую все эти примочки и соцсети. Только вот телефона из Кремля нету...

 

Замучали реквоты. 

//+------------------------------------------------------------------+
void OpenSell()
  {

   m_symbol.Name("EURUSD");
   RefreshRates();
   if(m_trade.Sell(InpLots,"EURUSD",m_symbol.Bid(),0.0,0.0))
     {
      if(m_trade.ResultDeal()==0)
        {
         Print("#1 Sell -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription());
         PrintResultTrade(m_trade,m_symbol);
        }
      else
        {
         Print("#2 Sell -> true. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription());
         PrintResultTrade(m_trade,m_symbol);
        }

     }

//---
  }
//+------------------------------------------------------------------+

Что не так в этом коде? Я даже не получаю результат проверки исполнения ордера.

Только вот такую табличку с реквотой и всё.


 
ilvic:

Замучали реквоты. 

Что не так в этом коде? Я даже не получаю результат проверки исполнения ордера.

Только вот такую табличку с реквотой и всё.


Вставьте результат PrintResultTrade в виде кода. Не картинкой, а именно в виде кода.

 

Это пишет эксперт. Прошу заметить он не пишет результат проверки

2018.11.02 15:20:36.769 Above (EURUSD,M1)       CTrade::OrderSend: instant sell 1.00 EURUSD at 1.14299 [requote (1.14307/1.14317)]

А это пишет журнал

2018.11.02 11:18:49.826 Network '13107230': scanning network for access points
2018.11.02 11:19:17.821 Network '13107230': scanning network finished
2018.11.02 15:20:35.846 Trades  '13107230': instant sell 1.00 EURUSD at 1.14299 (deviation: 100)
2018.11.02 15:20:36.769 Trades  '13107230': requote 1.14307 / 1.14317 (instant sell 1.00 EURUSD at 1.14299 (deviation: 100))

Сервер метаквотес демо

 
ilvic:

Это пишет эксперт. Прошу заметить он не пишет результат проверки

А это пишет журнал

Сервер метаквотес демо

Вставьте результат PrintResultTrade в виде кода. Не картинкой, а именно в виде кода.


Или у Вас вообще дело до PrintResultTrade не доходит и выбрасывает раньше?

 

Это ? Если нет тогда скажите о чем вы

//+------------------------------------------------------------------+
//| Print CTrade result                                              |
//+------------------------------------------------------------------+
void PrintResultTrade(CTrade &trade,CSymbolInfo &symbol)
  {
   Print("File: ",__FILE__,", symbol: ",m_symbol.Name());
   Print("Code of request result: "+IntegerToString(trade.ResultRetcode()));
   Print("code of request result as a string: "+trade.ResultRetcodeDescription());
   Print("Deal ticket: "+IntegerToString(trade.ResultDeal()));
   Print("Order ticket: "+IntegerToString(trade.ResultOrder()));
   Print("Volume of deal or order: "+DoubleToString(trade.ResultVolume(),2));
   Print("Price, confirmed by broker: "+DoubleToString(trade.ResultPrice(),symbol.Digits()));
   Print("Current bid price: "+DoubleToString(symbol.Bid(),symbol.Digits())+" (the requote): "+DoubleToString(trade.ResultBid(),symbol.Digits()));
   Print("Current ask price: "+DoubleToString(symbol.Ask(),symbol.Digits())+" (the requote): "+DoubleToString(trade.ResultAsk(),symbol.Digits()));
   Print("Broker comment: "+trade.ResultComment());
  }
//+------------------------------------------------------------------+
 
ilvic:

Это пишет эксперт. Прошу заметить он не пишет результат проверки

А это пишет журнал

Сервер метаквотес демо

Зачем было урезать код? Пример функции открытия в коде Parabolic SAR EA

//+------------------------------------------------------------------+
//| Open Sell position                                               |
//+------------------------------------------------------------------+
void OpenSell(double sl,double tp)
  {
   sl=m_symbol.NormalizePrice(sl);
   tp=m_symbol.NormalizePrice(tp);

   double short_lot=InpLots;
//--- check volume before OrderSend to avoid "not enough money" error (CTrade)
   double free_margin_check= m_account.FreeMarginCheck(m_symbol.Name(),ORDER_TYPE_SELL,short_lot,m_symbol.Bid());
   double margin_check     = m_account.MarginCheck(m_symbol.Name(),ORDER_TYPE_SELL,short_lot,m_symbol.Bid());
   if(free_margin_check>margin_check)
     {
      if(m_trade.Sell(short_lot,m_symbol.Name(),m_symbol.Bid(),sl,tp))
        {
         if(m_trade.ResultDeal()==0)
           {
            Print("#1 Sell -> false. Result Retcode: ",m_trade.ResultRetcode(),
                  ", description of result: ",m_trade.ResultRetcodeDescription());
            PrintResultTrade(m_trade,m_symbol);
           }
         else
           {
            Print("#2 Sell -> true. Result Retcode: ",m_trade.ResultRetcode(),
                  ", description of result: ",m_trade.ResultRetcodeDescription());
            PrintResultTrade(m_trade,m_symbol);
           }
        }
      else
        {
         Print("#3 Sell -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription());
         PrintResultTrade(m_trade,m_symbol);
        }
     }
   else
     {
      Print(__FUNCTION__,", ERROR: method CAccountInfo::FreeMarginCheck returned the value ",DoubleToString(free_margin_check,2));
      return;
     }
//---
  }
 
ilvic:

Это ? Если нет тогда скажите о чем вы

Вы из кода выбросили шаг проверки #3.

 
Vladimir Karputov:

Вставьте результат PrintResultTrade в виде кода. Не картинкой, а именно в виде кода.


Или у Вас вообще дело до PrintResultTrade не доходит и выбрасывает раньше?

Вот именно что если ордер исполняется то принт выходит такого вида

2018.11.02 10:09:12.648 Above (EURUSD,M1)       #2 Buy -> true. Result Retcode: 10009, description of result: done at 1.14387

А если реквота - то советник молчит как рыба.

И я остаюсь с невыполненным ордером

 
ilvic:

Вот именно что если ордер исполняется то принт выходит такого вида

А если реквота - то советник молчит как рыба.

И я остаюсь с невыполненным ордером

В сообщении   я привёл пример функции. Не обрезанной. Пример работы есть в советнике Parabolic SAR EA