Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1465

 
Alexey Belyakov #:

const string name="VLine,VLine2,VLine3", // nombre de la línea

Hice el nombre de línea único. En la entrada también. No ayuda.

Aquí, ejecuta sin parámetros de entrada, cópialo directamente así y quizás te quede más claro.

//+------------------------------------------------------------------+
//| Создает вертикальную линию                                       |
//+------------------------------------------------------------------+
bool VLineCreate(const long            chart_ID = 0,      // ID графика
                 const string          name = "VLine",    // имя линии
                 const int             sub_window = 0,    // номер подокна
                 datetime              time = 0,          // время линии
                 const color           clr = clrRed,      // цвет линии
                 const ENUM_LINE_STYLE style = STYLE_SOLID, // стиль линии
                 const int             width = 1,         // толщина линии
                 const bool            back = false,      // на заднем плане
                 const bool            selection = true,  // выделить для перемещений
                 const bool            hidden = true)     // скрыт в списке объектов

  {
   ObjectCreate(chart_ID, name, OBJ_VLINE, sub_window, time, 0);
//--- установим цвет линии
   ObjectSetInteger(chart_ID, name, OBJPROP_COLOR, clr);
//--- установим стиль отображения линии
   ObjectSetInteger(chart_ID, name, OBJPROP_STYLE, style);
//--- установим толщину линии
   ObjectSetInteger(chart_ID, name, OBJPROP_WIDTH, width);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID, name, OBJPROP_BACK, back);
//--- включим (true) или отключим (false) режим перемещения линии мышью
//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект
//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection
//--- по умолчанию равен true, что позволяет выделять и перемещать этот объект
   ObjectSetInteger(chart_ID, name, OBJPROP_SELECTABLE, selection);
   ObjectSetInteger(chart_ID, name, OBJPROP_SELECTED, selection);

   return(true);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime time1 = D'2023.06.26 10:00:00';
   datetime time2 = D'2023.06.26 11:00:00';
   datetime time3 = D'2023.06.26 12:00:00';
//--- создадим вертикальную линию
   VLineCreate(0, "Name1", 0, time1, clrBlue, STYLE_DASHDOTDOT);
   VLineCreate(0, "Name2", 0, time2, clrGreen, STYLE_SOLID, 5);
   VLineCreate(0, "Name3", 0, time3);
  }
//+------------------------------------------------------------------+
 
Aleksandr Slavskii #:

Aquí, ejecútalo sin parámetros de entrada, cópialo directamente así y quizás te quede más claro.


¡Muchas gracias! ¡Justo lo que necesitaba!

 

Aquí están las funciones de Compra/Venta en la clase de negociación CTrade.

Especifico un precio en ellas, pero la posición sigue abierta por Ask/Bid.

¿Qué tipo de precio puedo especificar aquí?

 
Alexey Belyakov #:


¡Muchas gracias! ¡Justo lo que necesitaba!

nombre único)

string  var1=TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);
     string NameLine="VLine_" +  "_"+var1;
 
deerhunter22 clase de negociación CTrade

Especifico un precio en ellas, pero la posición se sigue abriendo por Ask/Bid.

¿Qué tipo de precio puedo especificar aquí?

Preste atención a otros métodos

   //--- additions methods
   bool              Buy(const double volume,const string symbol=NULL,double price=0.0,const double sl=0.0,const double tp=0.0,const string comment="");
   bool              Sell(const double volume,const string symbol=NULL,double price=0.0,const double sl=0.0,const double tp=0.0,const string comment="");
   bool              BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,
                              const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment="");
   bool              BuyStop(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,
                             const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment="");
   bool              SellLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,
                               const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment="");
   bool              SellStop(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,
                              const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment="");
 
Alexey Viktorov #:

Preste atención a otros métodos

Sí, sé de ellos, por supuesto, pero necesito para otras cosas.... De todos modos, el punto es este. Hace poco empecé a operar en binance y quería probarlo. También hay un broker de cocina con un montón de criptodivisas, pero el spread interfiere. Y así las cotizaciones coinciden bastante bien con las de binance, sobre todo si tienes en cuenta el precio (bid+ask)/2.

Aquí quería maximizar la coincidencia, aunque por supuesto será posible descuidar estas discrepancias.

 
deerhunter22 #:

Sí, sé de ellos, pero eso no es lo que busco. De todos modos, el punto es este. Hace poco empecé a operar en binance y quería probarlo. También hay un broker de cocina con un montón de criptodivisas, pero el spread interfiere. Así que las cotizaciones coinciden bastante bien con las de binance, sobre todo si tenemos en cuenta el precio (bid+ask)/2.

Aquí quería maximizar la coincidencia, aunque por supuesto será posible descuidar estas discrepancias.

Quizás puedas mirar de crear tu propio gráfico. MQL5 lo permite.

 

Buenas tardes. Al escribir un Asesor Experto en Mql5 me he encontrado con un problema. Hay un array con valores de velas de apertura del año. En cada candlestick de este array necesito crear un array de n candles, digamos 30, para comprobar los máximos y mínimos. Algo así como un indicador Zigzag.

Escribí este código, que da un error: "array out of range" o los valores de máximo y mínimo en todo el array, pero no en el periodo requerido de 30 velas.

for(int i=0; i<ArraySize(opens); i++)
  {
    if(i+30<=ArraySize(opens))
      {
       double maximum=0;
       double minimum=9;
       for(int j=0; j<30; j++)
        {
         maximum = ArrayMaximum(opens, i, i+j);
         minimum = ArrayMaximum(opens, i, i+j);
        }
     }
  }

Tal vez necesito crear otro array para comprobar en las funciones ArrayMaximum() y ArrayMinimum(), pero estoy confundido con los bucles anidados y el tamaño del array.

Por favor, dame una pista.

 
Dmitry Ivanushko #:
if(i+30<=TamañoArray(opens))
if(i+30<ArraySize(opens))

Aquí está la salida fuera de la matriz

 
if(i+30<ArraySize(opens))

Este error se debe a una falta de atención. Corregirlo no resuelve el problema.

¿Cómo podría crear un array de 30 precios de apertura de velas para buscar máximos y mínimos en él?

Razón de la queja: