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

 
MakarFX #:

Макар спасибо сейчас прикручу к советнику посмотрю

 
MakarFX #:

Макар спасибо Всё работает так как я хотел. Спасибо!!!

 
MakarFX #:

Хотелось бы чтобы ненужные линии удалялись сами допустим через сутки. 

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

 
EVGENII SHELIPOV #:

Хотелось бы чтобы ненужные линии удалялись сами допустим через сутки. 

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

int OnInit()
  {
   if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
     {
      ObjectCreate(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),OBJ_VLINE,0,Time[0]+(StartTime*3600),0);
      ObjectSetInteger(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),OBJPROP_COLOR, clrBlue);
      ObjectCreate(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),OBJ_VLINE,0,Time[0]+(StopTime*3600),0);
      ObjectSetInteger(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),OBJPROP_COLOR, clrBlue);
     }
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnTick()
  {
   if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
     {
      if(ObjectFind(0,"Начало торговли"+TimeToString(Time[1],TIME_DATE))==0)
        {
         ObjectMove(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),0,Time[0]+(StartTime*3600),0)
         ObjectMove(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),0,Time[0]+(StopTime*3600),0)
        }
      if(CountTrade(0)==0 && CountTrade(1)==0 && TradeSignal()==0)
         SendFirsOrder(0);
      if(CountTrade(1)==0 && CountTrade(0)==0 && TradeSignal()==1)
         SendFirsOrder(1);
     }

   //-----
  }
 
Nerd Trader #:

Из справки:
"Для гарантированного получения неповторяющейся последовательности используйте вызов MathSrand(GetTickCount()), так как значение GetTickCount() увеличивается с момента запуска операционной системы и не повторяется в течение 49 дней"

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

 

Из моего опыта - не пишите кириллецей

Открытие ECN MT4

/+----------------------------------------------------------------------------+
//|    Функция открытия ордера  (c) BeerGod 2015                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" - текущий символ)                   |
//|    op - операция                                                           |
//|    ll - лот                                                                |
//|    sl - уровень стоп                                                       |
//|    tp - уровень тейк                                                       |
//|    mn - MagicNumber                                                        |
//+----------------------------------------------------------------------------+
//  OpenPosition(string symbol,int operation,double volume,int slippage,double stoploss,double takeprofit,string comment,int magic,color);
int OpenPosition(string sy, int op, double ll, int Slippage, int sl, int tp, string comment, int mn,color Color)
  {
   if(op == 0)  // открытие BUY
     {
      // проверяем доступность свободных средств
      if((AccountFreeMarginCheck(sy,OP_BUY,ll)<=0) || (GetLastError()==134))
        {
         Print(sy," ",ll," It is impossible to open the order Buy, not enough money.");
         return(0);
        }
      RefreshRates();

      // открываем ордер
      int ticketbuy = OrderSend(sy,OP_BUY,ll,MarketInfo(sy,MODE_ASK),Slippage,0,0,comment,mn,0,Color);
      if(ticketbuy<0)
         Print(sy," OpenPosition. OrderSend Buy fail #",GetLastError());
      else
         Print(sy," OpenPosition. OrderSend Buy successfully");

      //      Sleep (Pause);

      // модифицируем ордер (выставляем тейпрофит и стоплосс)
      if(sl !=0 || tp !=0)
        {
         //--- вычисленные значения цен SL и TP должны быть нормализованы
         double BSLoss = NormalizeDouble(MarketInfo(sy,MODE_ASK)-sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
         double BTProfit = NormalizeDouble(MarketInfo(sy,MODE_ASK)+tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
         //--- если входящие значения ноль то заменяем цену модификации на ноль
         if(sl == 0)
            BSLoss = 0;
         if(tp == 0)
            BTProfit = 0;

         bool resbuy = OrderModify(ticketbuy,OrderOpenPrice(),BSLoss,BTProfit,0,clrNONE);
         if(!resbuy)
            Print(sy," OpenPosition. OrderModify Buy fail #",GetLastError());
         else
            Print(sy," OpenPosition. OrderModify Buy successfully");
        }
     }

   if(op == 1)   // открытие Sell
     {
      // проверяем доступность свободных средств
      if((AccountFreeMarginCheck(sy,OP_SELL,ll)<=0) || (GetLastError()==134))
        {
         Print(sy," ",ll," It is impossible to open the order Sell, not enough money.");
         return(0);
        }
      RefreshRates();

      // открываем ордер
      int ticketsell = OrderSend(sy,OP_SELL,ll,MarketInfo(sy,MODE_BID),Slippage,0,0,comment,mn,0,Color);
      if(ticketsell<0)
         Print(sy," OpenPosition. OrderSend Sell fail #",GetLastError());
      else
         Print(sy," OpenPosition. OrderSend Sell successfully");

      //      Sleep (Pause);

      // модифицируем ордер (выставляем тейпрофит и стоплосс)
      if(sl !=0 || tp !=0)
        {
         //--- вычисленные значения цен SL и TP должны быть нормализованы
         double SSLoss = NormalizeDouble(MarketInfo(sy,MODE_BID)+sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
         double STProfit = NormalizeDouble(MarketInfo(sy,MODE_BID)-tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
         //--- если входящие значения ноль то заменяем цену модификации на ноль
         if(sl == 0)
            SSLoss = 0;
         if(tp == 0)
            STProfit = 0;

         bool ressell = OrderModify(ticketsell,OrderOpenPrice(),SSLoss,STProfit,0,clrNONE);
         if(!ressell)
            Print(sy," OpenPosition. OrderModify Sell fail #",GetLastError());
         else
            Print(sy," OpenPosition. OrderModify Sell successfully");
        }
     }
   return (0);
  }
//--- End ---
 

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

Подскажите пожалуйста где есть базовая информация о динамическом двумерном массиве в MQL4. Прежде всего интересует как его создать? Как им пользоваться? Какие функции к нему применимы?
Спасибо.

 
ANDREY #:

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

Подскажите пожалуйста где есть базовая информация о динамическом двумерном массиве в MQL4. Прежде всего интересует как его создать? Как им пользоваться? Какие функции к нему применимы?
Спасибо.

Документация массивы

И динамика только по первой размерности. Остальные размерности статические. 
Объект динамического массива - Типы данных - Основы языка - Справочник MQL4
Объект динамического массива - Типы данных - Основы языка - Справочник MQL4
  • docs.mql4.com
Объект динамического массива - Типы данных - Основы языка - Справочник MQL4
 
Valeriy Yastremskiy #:

Документация массивы

И динамика только по первой размерности. Остальные размерности статические. 

CArray, и иже с ним - можно сделать динамические массивы любой размерности, изменяемые в любой размерности.

Документация по MQL5: Стандартная библиотека / Коллекции данных
Документация по MQL5: Стандартная библиотека / Коллекции данных
  • www.mql5.com
Коллекции данных - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin #:

CArray, и иже с ним - можно сделать динамические массивы любой размерности, изменяемые в любой размерности.

Спасибо за помощь. Но вы даете ссылки на информацию о динамических массивах применительно к  MQL5. А я пока осваиваю  MQL4.  Или в отношении динамических массивов код из  MQL5 подходит и для языка   MQL4?
Спасибо.

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