MQL5 совершенно не похож на MQL4 ? - страница 3

 

maryan.dirtyn:

поза то одна.. а ордеров несколько... или как? 

дык неттинг, рыночный ордер один, отложенных может быть несколько, по одному символу..


тож схематично, без проверок на ошибки

//в глобальных переменных:
int handle_RSI;//хэндл индикатора
double RSI[];//массив под значения индикатора

//+----в
int OnInit()
  {
   ArraySetAsSeries(RSI,true);//шоб было как в mql4
   handle_RSI=iRSI(_Symbol,PERIOD_M5,14,PRICE_CLOSE);//получаем хэндл индикатора с нужными параметрами
   return(0);
  }
//+----
void OnTick()
 {
int count;//сколько значений понадобится
CopyBuffer(handle_RSI,0,0,count,RSI);//копируем значения в массив

if(RSI[0]>92) ...//таки юзаем)
 

По поводу RSI - А что мы знаем о хэндлах?...

С индикаторами, к примеру RSI работаем так

//****************************************************************************//
//              Global arrays, used in working the trade system               //
//****************************************************************************//
double ArrRSI[]; //Array for indicator RSI
//****************************************************************************//
//             Global variables, used in working the trade system             //
//****************************************************************************//
int Handle_RSI; //Handle for indicator RSI
////////////////////////////////////////////////////////////////////////////////
//                       Expert initialization function                       //
////////////////////////////////////////////////////////////////////////////////
int OnInit()
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//
Handle_RSI = iRSI(Symbol(),Period(),14,PRICE_CLOSE); //We get handle on indicator RSI
//----------------------------------------------------------------------------//
return(0);
//----------------------------------------------------------------------------//
}
////////////////////////////////////////////////////////////////////////////////
//                      Expert deinitialization function                      //
////////////////////////////////////////////////////////////////////////////////
void OnDeinit(const int reason)
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//

//----------------------------------------------------------------------------//
}
////////////////////////////////////////////////////////////////////////////////
//                           Expert Ticks function                            //
////////////////////////////////////////////////////////////////////////////////
void OnTick()
{
//----------------------------------------------------------------------------//
//Work variables
double RealRSI; //Current importance RSI
//----------------------------------------------------------------------------//

  if(CopyBuffer(Handle_RSI,0,0,1,ArrRSI)!=-1)
  //Data are successfully received
  {
  //We get current importance RSI
  RealRSI = NormalizeDouble(ArrRSI[0],2);
  
    if(RealRSI>92)
    {
    //Processing
    //...........
    }

  }
  else
  //Error, data are not received
  {
  Print("RSI error: data are not received");
  }   
//----------------------------------------------------------------------------//
}
////////////////////////////////////////////////////////////////////////////////

 
Swan:

дык неттинг, рыночный ордер один, отложенных может быть несколько, по одному символу..


тож схематично, без проверок на ошибки

На счет серии не уверен, у меня без не все нормально работает и совпадает...
 
Interesting:
На счет серии не уверен, у меня без не все нормально работает и совпадает...
если одно значение копируем, тогда можно и без серии
 

спасибо))) применил... что ж все так сложно елки палки.. раньше писали iRSI  и все.. а теперь вон сколько кода))).. кстати, а что такое понятие хендл)))

поставил демо MetaTrader 5...заметел неувязку.. сколько ордеров не откривай.. все равно позиция одна... теперь понятно, что нет смисла проверять как то ордера.. все сложилось в одну большую кучу Г...

ето в корне меняет подход к контролю.. иду спать, завтра на свежую голову придумаю что нибудь. .. еще б с Ask и Bid помогли.. чего вместо етого написать)))) 

 
maryan.dirtyn:
и еще один глупейший вопрос)))) Ask ... ето как?.. как мне достать Ask в коде).... тоесть вместо Ask пишем........... что?)))))
или SymbolInfoDouble, или иногда удобней SymbolInfoTick
 
Swan:
или SymbolInfoDouble, или иногда удобней SymbolInfoTick

простите за настойчивость.. все же... вместо Ask можно писать SymbolInfoTick ...?


нашел!!! ура ) [censored])))

Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);

спасибо за подсказку с SymbolInfoDouble !!!

 
maryan.dirtyn:
простите за настойчивость.. все же... вместо Ask можно писать SymbolInfoTick ?
ммм.. почти да :)
MqlTick Tick;
SymbolInfoTick(Symbol(),Tick)
double Bid=Tick.bid;
double Ask=Tick.ask;
 
Swan:
ммм.. почти да :)
ви мне простите вспильчивость.. но ето капец!)) зачем усложнять все так.. когда можна проще и понятней писать... написал Ask  и все.. а сейчяс.. гора непонятного и ненужного кода.. еххх
 
maryan.dirtyn:

спасибо... еще мож кто поделиться такой сложнейшей фунцией ;) и для обичних ордеров... 

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

p.s.  а почему вас не будет на чемпионате? позвольте поинтересоваться 


По поводу участия - Так это мое личное дело (вроде), хочу участвую, хочу нет.

Не нравятся мне условия и правила проведения, никогда не нравились...

По поводу открытых позиций (отложники были ранее):

MQL4

for(int j=OrdersTotal()-1;j>=0;j--){
 if(OrderSelect(j,0,0)){ 
   что то делаем
  } }

MQL5 (примерно-как-то так)

  for(int j=PositionsTotal()-1;j>=0;j--)
  {
  //We get name of the symbol on the grounds of index of the positions in list
  SymbolTitle = PositionGetSymbol(j);
  
    if(PositionSelect(SymbolTitle))
    {
    //Что-то делаем
    //.....................
    }
    else
    //Select error of the position
    {
    Print("Select error of the position for symbol ",SymbolTitle);
    }

  }
Причина обращения: