Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1270

 
ANDREY:

Всем доброго времени суток!

Начал изучать mql5. Начал с изучения того как открываются ордера. Понял что код для открытия ордера пишется в отдельном включаемом файле. Посмотрел как пишется этот код и на его окончательный вариант для торговли. Поразился тому, как легко и просто открывается ордер в  mql4, по сравнению с  mql5.

ВОПРОС. Правильно ли я понимаю ,что включаемый файл с кодом для открытия ордера уже где то есть и мне писать этот код не обязательно? Если такой файл где то есть то мне нужно только подключить его к моему советнику и установить нужные мне значения параметров ордера.? Если такой файл где то есть, то где и как его найти и как он называется.

Спасибо.

Если я Вас правильно понял  то это    #include <Trade\Trade.mqh>

Файлы:
ng4txc.PNG  116 kb
15vegf1.PNG  114 kb
 
SanAlex:

Если я Вас правильно понял  то это    #include <Trade\Trade.mqh>

Большое спасибо за ценную информацию.

А правильно я понимаю, что искать эти файлы нигде не нужно нужно только написать в нужном месте кода   #include <Trade\Trade.mqh>  И этот файл сам присоединится к моему советнику и советник будет к нему обращаться когда нужно ?

 
ANDREY:

Большое спасибо за ценную информацию.

А правильно я понимаю, что искать эти файлы нигде не нужно нужно только написать в нужном месте кода   #include <Trade\Trade.mqh>  И этот файл сам присоединится к моему советнику и советник будет к нему обращаться когда нужно ?

Да! его не надо искать, он уже есть.

Вы можете рассмотреть файл кода(Moving Averages.mq5 или MACD Sample.mq5), из терминала.  

 
SanAlex:

Да! его не надо искать, он уже есть.

Спасибо большое за ценную информацию.
Если я правильно понял файл который Вы мне скинули называет КЛАСС Данный файл предназначен для открытия ордера. Как мне кажется таких КЛАССОВ очень много и у каждого КЛАССА есть свое целевое предназначение, например для закрытия ордера, для модификации ордера, для вывода какой то информации и т.д. 

ВОПРОС А где находится список всех классов с их подробным описанием?
Еще раз спасибо за помощь.

 
ANDREY:

Спасибо большое за ценную информацию.
Если я правильно понял файл который Вы мне скинули называет КЛАСС Данный файл предназначен для открытия ордера. Как мне кажется таких КЛАССОВ очень много и у каждого КЛАССА есть свое целевое предназначение, например для закрытия ордера, для модификации ордера, для вывода какой то информации и т.д. 

ВОПРОС А где находится список всех классов с их подробным описанием?
Еще раз спасибо за помощь.

 
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 
Artyom Trishkin:
 

Спасибо большое за ценную информацию. Теперь начну ее переваривать, то есть усваивать ..... по мере моих умственных способностей.

 
ANDREY:

Всем доброго времени суток!

Начал изучать mql5. Начал с изучения того как открываются ордера. Понял что код для открытия ордера пишется в отдельном включаемом файле. Посмотрел как пишется этот код и на его окончательный вариант для торговли. Поразился тому, как легко и просто открывается ордер в  mql4, по сравнению с  mql5.

ВОПРОС. Правильно ли я понимаю ,что включаемый файл с кодом для открытия ордера уже где то есть и мне писать этот код не обязательно? Если такой файл где то есть то мне нужно только подключить его к моему советнику и установить нужные мне значения параметров ордера.? Если такой файл где то есть, то где и как его найти и как он называется.

Спасибо.

У меня другой поход написания, для себя эксперта. Люди трудились и уже создали заготовки экспертов, мне остаётся только подправить под себя. 

-( зачем изобретать велосипед, если он уже создан ) 

----------------------------------------------------------------------

в этом месте подбираем Индикаторы 

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//--- prepare trade class to control positions if hedging mode is active
   ExtHedging=((ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUNT_MARGIN_MODE_RETAIL_HEDGING);
   ExtTrade.SetExpertMagicNumber(MA_MAGIC);
   ExtTrade.SetMarginMode();
   ExtTrade.SetTypeFillingBySymbol(Symbol());
//--- Moving Average indicator
   ExtHandle=iMA(_Symbol,_Period,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE);
   if(ExtHandle==INVALID_HANDLE)
     {
      printf("Error creating MA indicator");
      return(INIT_FAILED);
     }
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+

а в этом месте подбираем - так что бы, индикаторы открывали по сигналу правильно 

//+------------------------------------------------------------------+
//| Check for open position conditions                               |
//+------------------------------------------------------------------+
void CheckForOpen(void)
  {
   MqlRates rt[2];
//--- go trading only for first ticks of new bar
   if(CopyRates(_Symbol,_Period,0,2,rt)!=2)
     {
      Print("CopyRates of ",_Symbol," failed, no history");
      return;
     }
   if(rt[1].tick_volume>1)
      return;
//--- get current Moving Average 

   double   ma[1];
   if(CopyBuffer(ExtHandle,0,0,1,ma)!=1)
     {
      Print("CopyBuffer from iMA failed, no data");
      return;

     }
//--- check signals
   ENUM_ORDER_TYPE signal=WRONG_VALUE;

   if(rt[0].open>ma[0] && rt[0].close<ma[0])
      signal=ORDER_TYPE_SELL;    // sell conditions
   else
     {
      if(rt[0].open<ma[0] && rt[0].close>ma[0])
         signal=ORDER_TYPE_BUY;  // buy conditions
     }
//--- additional checking
   if(signal!=WRONG_VALUE)
     {
      if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) && Bars(_Symbol,_Period)>100)
         ExtTrade.PositionOpen(_Symbol,signal,TradeSizeOptimized(),
                               SymbolInfoDouble(_Symbol,signal==ORDER_TYPE_SELL ? SYMBOL_BID:SYMBOL_ASK),
                               0,0);
     }
//---
  }
//+------------------------------------------------------------------+



 

 
Artyom Trishkin:
 

Для того что бы я быстрее продвинулся в понимании  MQL5  , буду Вам очень признателен, если перекодируете этот простой код из MQL4 в код  MQL5

Спасибо за помощь.

int s1,SL,a;
double Lou=Bid,Hay,DL=0.0030;
void OnTick()
{
if (Bid < Lou)
{
Lou=Bid;
}
if (Bid > Hay)
Hay=Bid;
if (Bid - Lou > DL&& Lou!=0)
{
Lou=Bid;
Hay=Bid;
s1=1;
}
////=======================
if (Hay-Bid>0.0000)
if (s1==1)
{
for(int c=0; c<=500;c+=20)
{
a++;
{
SL=300+c;
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,Ask+SL*Point,Ask-SL/3*Point,"300",100);
Lou=Bid;
Hay=Bid;
}
}
a=0;
s1=0;
}
}
 

numPosOr = 4;

numStepCount = 1;

iK = (numPosOr - numStepCount) / numPosOr;

Почему при таком расчете у меня iK получается = 0?

 
Sysmart:

numPosOr = 4;

numStepCount = 1;

iK = (numPosOr - numStepCount) / numPosOr;

Почему при таком расчете у меня iK получается = 0?

Приведите весь код

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