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

BillionerClub
159
BillionerClub  
Где найти опцию в терминале, чтобы начать создание, вспомогательных индикаторов, не привязанных к открытому графику?
Vladimir Karputov
Модератор
156892
Vladimir Karputov  
BillionerClub:
Где найти опцию в терминале, чтобы начать создание, вспомогательных индикаторов, не привязанных к открытому графику?

Достаточно при создании ХЕНДЛА индикатора указать НУЖНЫЙ таймфрейм и символ. Например индикатор iRSI:

int  iRSI( 
   string              symbol,            // имя символа 
   ENUM_TIMEFRAMES     period,            // период 
   int                 ma_period,         // период усреднения 
   ENUM_APPLIED_PRICE  applied_price      // тип цены или handle 
   );
BillionerClub
159
BillionerClub  
Vladimir Karputov:

Достаточно при создании ХЕНДЛА индикатора указать НУЖНЫЙ таймфрейм и символ. Например индикатор iRSI:

Нет я про это. Вроде Ренат, говорил в каком то посте, о создании вспомогательных, не привязанных графику советников или что то в этом роде. 

Vladimir Karputov
Модератор
156892
Vladimir Karputov  
BillionerClub:

Нет я про это. Вроде Ренат, говорил в каком то посте, о создании вспомогательных, не привязанных графику советников или что то в этом роде. 

Это называется "Сервисы". Нет их ещё.

Igor Makanu
7065
Igor Makanu  

есть у меня под МТ4 работающая ф-ция, которая проверяет перед выставлением ордера доступность сервера (параметр bool refreshrates - обновить котировки и int count - количество проверок с паузой если не доступен сервер, результат возвращает false  - можно торговать, true сервер не доступен . т.е. удобно так пользоваться if(ServerDisable() return;  ):

bool ServerDisable(bool refreshrates=false,int count=10)
  {
   for(int i=0;i<count;i++)
     {
      if(IsConnected())
        {
         if(IsTradeAllowed())
           {
            if(!IsTradeContextBusy())
              {
                 {
                  if(refreshrates)RefreshRates();
                  return(false);
                 }
              }
           }
        }
      Sleep(157);
     }
   Print(__FUNCTION__," Торговый сервер не отвечает");
   return(true);
  }

помогите корректно переписать под МТ5 эту конструкцию, в справке МТ5 параметры запросов TerminalInfoInteger() немного по другому называется (т.е. ищу аналогию в МТ5 штатным ф-циям МТ4 IsConnected(), IsTradeAllowed()... ) и как выполнить RefreshRates() ?

Vitaly Muzichenko
12146
Vitaly Muzichenko  
Igor Makanu:

есть у меня под МТ4 работающая ф-ция, которая проверяет перед выставлением ордера доступность сервера (параметр bool refreshrates - обновить котировки и int count - количество проверок с паузой если не доступен сервер, результат возвращает false  - можно торговать, true сервер не доступен . т.е. удобно так пользоваться if(ServerDisable() return;  ):

помогите корректно переписать под МТ5 эту конструкцию, в справке МТ5 параметры запросов TerminalInfoInteger() немного по другому называется (т.е. ищу аналогию в МТ5 штатным ф-циям МТ4 IsConnected(), IsTradeAllowed()... ) и как выполнить RefreshRates() ?

Я использую только эту, вроде хватает

TerminalInfoInteger(TERMINAL_CONNECTED)

Igor Makanu
7065
Igor Makanu  
Vitaly Muzichenko:

Я использую только эту, вроде хватает

TerminalInfoInteger(TERMINAL_CONNECTED)

я не хочу обсуждать хитропопых брокеров, конструкция которую я выше показал, обеспечивает выставление ордера, как и по приходу тика сделать выход из OnTick() если на этом тике не буде возможности работы с ордерами

мне нужно точные аналоги для МТ5 ф-ций: IsConnected()  (TerminalInfoInteger(TERMINAL_CONNECTED) - подтверждено ),    IsTradeAllowed() ,    IsTradeContextBusy() ,     RefreshRates() 

Vitaly Muzichenko
12146
Vitaly Muzichenko  
Igor Makanu:

я не хочу обсуждать хитропопых брокеров, конструкция которую я выше показал, обеспечивает выставление ордера, как и по приходу тика сделать выход из OnTick() если на этом тике не буде возможности работы с ордерами

мне нужно точные аналоги для МТ5 ф-ций: IsConnected()  (TerminalInfoInteger(TERMINAL_CONNECTED) - подтверждено ),    IsTradeAllowed() ,    IsTradeContextBusy() ,     RefreshRates() 

IsTradeContextBusy()  можно исключить, в пятом поток свободен всегда

RefreshRates()  - это обновление предопределённых переменных Ask/Bid, их в пятом нет, но можно использовать 

#define Bid (::SymbolInfoDouble(_Symbol, ::SYMBOL_BID))
#define Ask (::SymbolInfoDouble(_Symbol, ::SYMBOL_ASK))

тогда цены будут всегда актуальны

Vitaly Muzichenko
12146
Vitaly Muzichenko  
Igor Makanu:

я не хочу обсуждать хитропопых брокеров, конструкция которую я выше показал, обеспечивает выставление ордера, как и по приходу тика сделать выход из OnTick() если на этом тике не буде возможности работы с ордерами

мне нужно точные аналоги для МТ5 ф-ций: IsConnected()  (TerminalInfoInteger(TERMINAL_CONNECTED) - подтверждено ),    IsTradeAllowed() ,    IsTradeContextBusy() ,     RefreshRates() 

Я так понимаю, вы имеете ввиду то, что тики идут, но торговля запрещена?

Если так, то Я тоже хотел-бы иметь такую проверку, но пока никто и ничего рабочего не предложил. 

Igor Makanu
7065
Igor Makanu  
Vitaly Muzichenko:

IsTradeContextBusy()  можно исключить, в пятом поток свободен всегда

https://www.mql5.com/ru/articles/4332

 IsConnected()   TerminalInfoInteger(TERMINAL_CONNECTED)

IsTradeAllowed()  MQLInfoInteger(MQL_TRADE_ALLOWED)

RefreshRates()   SymbolInfoDouble(_Symbol, ::SYMBOL_BID)

IsTradeContextBusy()  нужен аналог или обоснование почему аналог не возможен


мне нужны аналоги и ничего более , я вчера переписал приведенную выше ф-цию исходя из справки, но есть неуверенность в правильном трактовании (разными словами описаны ), теперь хочу на форуме подтвердить правильность:

//_______________________________________________________________________
bool ServerDisable(bool refreshrates=false,int count=10)
  {
   if(MQLInfoInteger(MQL_TESTER)|| MQLInfoInteger(MQL_OPTIMIZATION))return(false);
   for(int i=0;i<count;i++)
     {
      if(TerminalInfoInteger(TERMINAL_CONNECTED))if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
        {
#ifdef __MQL5__
         if(refreshrates) SymbolInfoDouble(_Symbol,SYMBOL_BID);
         return(false);
#else
#ifdef __MQL4__
         if(!IsTradeContextBusy())
           {
            if(refreshrates) RefreshRates();
            return(false);
           }
#endif   // __MQL4__
#endif
        }
      Sleep(157);
     }
   Print(__FUNCTION__," Торговый сервер не отвечает");
   return(true);
  }
//___________________________________________________________________________
LifeHack для трейдера: замешиваем ForEach на дефайнах (#define)
LifeHack для трейдера: замешиваем ForEach на дефайнах (#define)
  • www.mql5.com
— В чем сила, брат?                                   —А сила, брат, в дефайнах                     Вы все ещё пишете на MQL4 и хотите перейти на MQL5, но не знаете с чего начать? Тогда мы идём к вам! Теперь появилась возможность комфортно работать в редакторе MetaEditor MQL5 и при этом использовать MQL4-нотацию (справедливости ради замечу...