Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1124

 
Vladimir Karputov:

ENUM_TRADE_REQUEST_ACTIONS

Identificador

Descripción

TRADE_ACTION_DEAL

Colocar una orden de negociación para una ejecución inmediata con los parámetros especificados (orden de mercado)

ACCIÓN_COMERCIAL_PENDIENTE

Colocar una orden comercial para la ejecución en condiciones especificadas (orden pendiente)

Ejemplo de la operación comercial TRADE_ACTION_PENDING para colocar una orden pendiente:

#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

Identificador

Descripción

TRADE_ACTION_DEAL

Colocar una orden de negociación para una ejecución inmediata con los parámetros especificados (orden de mercado)

ACCIÓN_COMERCIAL_PENDIENTE

Colocar una orden comercial para la ejecución en condiciones especificadas (orden pendiente)

Gracias.

 
Vladimir Karputov:

Ejemplo de la operación comercial TRADE_ACTION_PENDING para colocar una orden pendiente:

Vladimir, ¿no puedes escribirlo en ruso?
 
Artyom Trishkin:
Vladimir, ¿no puedes escribirlo en ruso?

No se puede. Porque he citado íntegramente la referencia. Por lo demás, es una apuesta arriesgada: todo el mundo tiene un "billete" y algunos tienen "boletos". Por eso las funciones, la ayuda y las citas de la ayuda están en inglés.

 
Vladimir Karputov:

No se puede. Porque he citado íntegramente la referencia. Por lo demás, es una apuesta arriesgada: todo el mundo tiene un "billete" y algunos tienen "boletos". Por eso las funciones, la referencia y las citas de la referencia están en inglés.

Y tienen "entradas" sólo porque se ponen a traducir con google :)
En la ayuda oficial rusa, hay "billetes".
En forest-da-drow sólo de las traducciones libres.
 

Hola a todos. Creo que la pregunta es principalmente para los profesionales (como resulta). Ha pasado una semana con una pregunta sobre el código.

Por ejemplo - sabemos que la vela M5 contiene 5 velas M1 (por ejemplo, 00:00, 00:01, 00:02, 00:03 y 00:04). Además, consideraremos sólo esta conjunción, es decir, ejecutamos el indicador en M1 y queremos ver las lecturas del indicador en M5.

Es decir, para mostrar correctamente los datos de la TF central en la inferior, debería recorrer las 5 barras de la TF inferior a medida que aparecen. Es decir, la primera barra aparece a las 00:00, luego a las 00:01, etc. hasta las 00:04 y después aparece la siguiente. Esto significa que el ciclo debe ser de 0 a 4 - esto es el máximo, mientras que los huecos en la historia no se consideran. El problema es que me sale el ciclo de 0 a 5, ¡y no tengo suficiente lógica para llegar a 4! Créanme, llevo una semana luchando con esto y realmente les pido ayuda. A continuación se muestra un código muy truncado donde el bucle llega a 5 en lugar de 4. ¡¡¡¡¡Quiero que sea 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);
  }
//+------------------------------------------------------------------+
 

¿Cómo puedo añadir una ventana de edición de la vista de lista?

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

Tengo la biblioteca de arriba. Quiero añadir un cuadro de edición con una etiqueta dentro de esta lista. ¿Puede decirme cómo puedo hacerlo? Lo he intentado, pero no funciona.

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:
Y tienen "entradas" sólo porque se ponen a traducir con google :)
En la referencia oficial rusa "tickety-boo".
En el bosque-da-drova sólo de las traducciones libres.
Vale, lo confieso: me ha pillado. Respondió rápidamente y no cambió el idioma de ayuda 😎
 
La cuestión es la siguiente. ¿Puedo abrir 2 (o más) gráficos con sólo pulsar un botón para que se coloquen en vertical, ocupando por igual todo el monitor?
 
Vladimir Karputov:
Vale, lo confieso: me ha pillado. Respondió rápidamente y no cambió el idioma de ayuda 😎

Entendido ;)

Razón de la queja: