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

 
Vladimir Karputov:

ENUM_TRADE_REQUEST_ACTIONS

Identifier

Description

TRADE_ACTION_DEAL

Place a trade order for an immediate execution with the specified parameters (market order)

TRADE_ACTION_PENDING

Place a trade order for the execution under specified conditions (pending order)

Example of the TRADE_ACTION_PENDING trade operation for placing a pending order:

#property description "Example of placing pending orders"
#property script_show_inputs
#define EXPERT_MAGIC 123456                             // MagicNumber of the expert
input ENUM_ORDER_TYPE orderType=ORDER_TYPE_BUY_LIMIT;   // order type
//+------------------------------------------------------------------+
//| Placing pending orders                                           |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- declare and initialize the trade request and result of trade request
   MqlTradeRequest request={0};
   MqlTradeResult  result={0};
//--- parameters to place a pending order
   request.action   =TRADE_ACTION_PENDING;                             // type of trade operation
   request.symbol   =Symbol();                                         // symbol
   request.volume   =0.1;                                              // volume of 0.1 lot
   request.deviation=2;                                                // allowed deviation from the price
   request.magic    =EXPERT_MAGIC;                                     // MagicNumber of the order
   int offset = 50;                                                    // offset from the current price to place the order, in points
   double price;                                                       // order triggering price
   double point=SymbolInfoDouble(_Symbol,SYMBOL_POINT);                // value of point
   int digits=SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);                // number of decimal places (precision)
   //--- checking the type of operation
   if(orderType==ORDER_TYPE_BUY_LIMIT)
     {
      request.type     =ORDER_TYPE_BUY_LIMIT;                          // order type
      price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point;        // price for opening 
      request.price    =NormalizeDouble(price,digits);                 // normalized opening price 
     }
   else if(orderType==ORDER_TYPE_SELL_LIMIT)
     {
      request.type     =ORDER_TYPE_SELL_LIMIT;                          // order type
      price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point;         // price for opening 
      request.price    =NormalizeDouble(price,digits);                  // normalized opening price 
     }
   else if(orderType==ORDER_TYPE_BUY_STOP)
     {
      request.type =ORDER_TYPE_BUY_STOP;                                // order type
      price        =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point; // price for opening 
      request.price=NormalizeDouble(price,digits);                      // normalized opening price 
     }
   else if(orderType==ORDER_TYPE_SELL_STOP)
     {
      request.type     =ORDER_TYPE_SELL_STOP;                           // order type
      price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point;         // price for opening 
      request.price    =NormalizeDouble(price,digits);                  // normalized opening price 
     }
   else Alert("This example is only for placing pending orders");   // if not pending order is selected
//--- send the request
   if(!OrderSend(request,result))
      PrintFormat("OrderSend error %d",GetLastError());                 // if unable to send the request, output the error code
//--- information about the operation
   PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
  }
//+------------------------------------------------------------------+
 
Vladimir Karputov:

ENUM_TRADE_REQUEST_ACTIONS

Identifier

Description

TRADE_ACTION_DEAL

Place a trade order for an immediate execution with the specified parameters (market order)

TRADE_ACTION_PENDING

Place a trade order for the execution under specified conditions (pending order)

Спасибо!

 
Vladimir Karputov:

Example of the TRADE_ACTION_PENDING trade operation for placing a pending order:

Владимир, а на русском нельзя писать?
 
Artyom Trishkin:
Владимир, а на русском нельзя писать?

Нельзя. Так как я привёл цитату полностью из справки. А то потом кто в лес, кто по дрова: у всех "тикет", у некоторых "билеты". Поэтому функции, справка и цитаты из справки - на английском.

 
Vladimir Karputov:

Нельзя. Так как я привёл цитату полностью из справки. А то потом кто в лес, кто по дрова: у всех "тикет", у некоторых "билеты". Поэтому функции, справка и цитаты из справки - на английском.

А "билеты" у них как раз потому, что начинают переводить с гуглом :)
В русской официальной справке "тикеты".
В лес-да-по-дрова как раз от вольных переводов.
 

Здравтсвуйте всем! Вопрос думаю будет прежде всего для профи (как оказалось). Уже неделю не дает покоя один вопрос по коду.

К примеру - мы знаем что свеча М5 содержит 5 свечей М1( к примеру это 00:00, 00:01, 00:02, 00:03 и 00:04). Далее будем рассматривать только эту связку - т.е. запускаем индикатор на М1 и хотим видеть показания индикатора с М5.

Т.е. чтобы правильно отображать данные ст.ТФ на младшем я должен в цикле перебирать все 5 баров младшего ТФ по мере их появления. Т.е. сперва появляеться бар 00:00, потом 00:01 и т.д. до 00:04 и после этого начинаеться следующий бар ст.ТФ 00:05. т.е. цикл должен быть от 0 до 4 - это максимум, пока дыры в истории не учитываем... Проблема в том что у меня получается цикл от 0 до 5 и никак не хватает логики сделать его до 4!!! Поверьте мне я уже неделю бьюсь над этим и очень прошу Вашей помощи. Ниже привожу очень обрезанный код где цикл идет до 5 а не до 4. Хочу до 4!!!!!

#property copyright ""
#property link      ""
#property version   ""
#property indicator_chart_window

//+----------------------------------------------+
//| Входные параметры индикатора                 |
//+----------------------------------------------+
input ENUM_TIMEFRAMES TF=PERIOD_M5;
int LastCountBar;
datetime tt;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,    // количество истории в барах на текущем тике
                const int prev_calculated,// количество истории в барах на предыдущем тике
                const datetime &time[],
                const double &open[],
                const double& high[],     // ценовой массив максимумов цены для расчёта индикатора
                const double& low[],      // ценовой массив минимумов цены  для расчёта индикатора
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   datetime IndTime[1];
//--- объявления локальных переменных
   int limit,bar;
//--- индексация элементов в массивах как в таймсериях
   ArraySetAsSeries(time,true);
//--- расчёт стартового номера first для цикла пересчёта баров
   if(prev_calculated>rates_total || prev_calculated<=0) // проверка на первый старт расчёта индикатора
     {
      limit=100; // стартовый номер для расчёта всех баров
      LastCountBar=limit;
     }
   else
      limit=LastCountBar+rates_total-prev_calculated; // стартовый номер для расчёта новых баров

//--- основной цикл расчёта индикатора
   for(bar=limit; bar>=0; bar--)
     {
      //--- копируем вновь появившиеся данные в массив IndTime
      if(CopyTime(Symbol(),TF,time[bar],1,IndTime)<=0)
         return(0);
         
      if(time[bar]>=IndTime[0] && time[bar+1]<IndTime[0])
        {
         LastCountBar=bar;
         //--- Далее проводим вычисления индикатора МТФ ...............
         Print(bar," ",IndTime[0]);
         //---
        }
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

Как добавить окно редактирования в виде списка?

https://www.mql5.com/en/docs/standardlibrary/controls/clistview

У меня есть библиотека выше. Я хочу добавить поле редактирования с меткой внутри этого списка. Скажите, как я могу это сделать? Я пытался, но не получилось.

Documentation on MQL5: Standard Library / Panels and Dialogs / CListView
Documentation on MQL5: Standard Library / Panels and Dialogs / CListView
  • www.mql5.com
//|                                             ControlsListView.mq5 | //|                        Copyright 2017, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| defines                                                          |  INDENT_LEFT                         (11)      ...
 
Artyom Trishkin:
А "билеты" у них как раз потому, что начинают переводить с гуглом :)
В русской официальной справке "тикеты".
В лес-да-по-дрова как раз от вольных переводов.
Ладно, признаюсь: поймал меня. Быстро отвечал и не переключил язык справки 😎
 
Вопрос такой. Могу ли я по нажатию кнопки открыть 2(или больше) графика, чтобы они расположились вертикально, равно заняв весь монитор?
 
Vladimir Karputov:
Ладно, признаюсь: поймал меня. Быстро отвечал и не переключил язык справки 😎

Принято ;)

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