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

 
Artyom Trishkin:

ChartIndicatorAdd()

Gracias. Sólo aquí el EA muestra el indicador que no está directamente en el gráfico. Tengo una pregunta sobre cómo mostrar los cálculos del propio EA.

 
Andrey Sokolov:

Gracias. Sólo aquí, el EA muestra el indicador no directamente en el gráfico. Tengo una duda sobre cómo mostrar los cálculos del propio EA.

OBJ_LABEL

ObjectSetString - introducir datos

ObjectGetString - obtener datos


Como ejemplo, tengo




 
Andrey Sokolov:

Gracias. Sólo aquí, el EA muestra el indicador no directamente en el gráfico. Tengo una pregunta sobre cómo mostrar los cálculos del propio EA.

Toma un lienzo (CCanvas) y dibuja. Traducción de la hora y el precio a coordenadas del gráfico, utilizando ChartTimePriceToXY.

 
MakarFX:

¿En qué plazo?

М1

 

Saludos, no puedo entender por qué la selección SELECT_BY_TICKET no funciona en este diseño, a diferencia de SELECT_BY_POS.

void Ticket_Limits (int magic ){


int _GetLastError = 0, k = OrdersTotal();
        Ticket_Total = 0;
        
// изменяем размеры массивов под текущее кол-во позиций
        // (если _OrdersTotal = 0, меняем размер массивов на 1)
        int temp_value = MathMax( k, 1 );
        ArrayResize( _Tacket,                   temp_value );
        ArrayResize( _Type,                        temp_value );
        ArrayResize( _OpenPrice,                temp_value );   
        // обнуляем массивы
        ArrayInitialize( _Tacket,               0 );
        ArrayInitialize( _Type,                 0 );
        ArrayInitialize( _OpenPrice,    0 );
        
        for ( int z = k-1;z>=0; z -- )
        {

           Print("z =",z);
                if (!OrderSelect( z, SELECT_BY_POS ))
                {
                        _GetLastError = GetLastError();
                        Print( "OrderSelect( ", z, ", SELECT_BY_TICKET  ) - Error #", _GetLastError );
                        continue;
                }
                if ( OrderMagicNumber() == magic && OrderSymbol() == Symbol() )
                {
                        // заполняем массивы
                        _Tacket               [Ticket_Total] = OrderTicket();
                        _Type                         [Ticket_Total] = OrderType();
                        _OpenPrice                      [Ticket_Total] = NormalizeDouble( OrderOpenPrice(), _Digits );
                        Ticket_Total++;
                        Print("_Tacket === ",_Tacket[z]," _Type === ",_Type[z]," _OpenPrice === ",_OpenPrice[z]);
                }
          
        }               
        // изменяем размеры массивов под кол-во позиций, принадлежащих эксперту
        // (если Ticket_Total = 0, меняем размер массивов на 1)
        temp_value = MathMax( Ticket_Total, 1 );
        ArrayResize( _Tacket,                   temp_value );
        ArrayResize( _Type,                        temp_value );
        ArrayResize( _OpenPrice,                temp_value );
} 
 
Hola chicos, me disculpo si voy en la dirección equivocada: ¿Me puede ayudar a cómo hacer un indicador puesto en el teléfono en MT4, como mooving al marco de tiempo m15, no era visible en este par en el marco de tiempo de m5, o cualquier otro TF.
 
MakarFX, Mihail Matkovskij
gracias. Pero mi pregunta no es sobre eso. Se trata de cómo sacar datos de arrays, como de buffers de indicadores, si es posible.
 
Andrey Sokolov:
ChartTimePriceToXY y ya está. Dibuja puntos o líneas u otras primitivas, o muestra flechas (fuente Windings) basándose en las coordenadas que obtiene. CCanvastiene todos los métodospara ello. Simplemente crea un lienzo que cubra toda la pantalla y podrás dibujar como quieras. Pero al mismo tiempo hay que redibujar constantemente Kanvas en OnChartEvent(id: CHARTEVENT_CHART_CHANGE). En definitiva, lo primero que tienes que hacer es aprender a trabajar con CCanvas. Pero si eres nuevo en la programación, y te da pereza aprenderlo todo, entonces Freelance es tu ayuda.
 
Galim_V:

No entiendo por qué en este diseño la selección SELECT_BY_TICKET no funciona, a diferencia de SELECT_BY_POS.

PorqueSELECT_BY_TICKET selecciona el pedido por su ticket. Y los selecciona en orden (SELECT_BY_POS).Para seleccionar los pedidos por ticket, comunique los tickets a la función OrderSelect, no los índices.

 
Mihail Matkovskij:

Con CCanvas puedes dibujar lo que quieras. Copie la hora(con CopyTime) y los datos del array (para que la celda del array de tiempo coincida claramente con la celda de su array de datos). Conviértelo a píxeles con ChartTimePriceToXY y ya está. Dibuja puntos o líneas u otras primitivas, o muestra flechas (fuente Windings) basándose en las coordenadas que obtiene. CCanvastiene todos los métodospara ello. Sólo tienes que crear un lienzo que cubra toda la pantalla y podrás dibujar como quieras. Pero al mismo tiempo, el lienzo tiene que ser redibujado constantemente en OnChartEvent(id: CHARTEVENT_CHART_CHANGE). En definitiva, primero hay que aprender a trabajar con CCanvas. Pero si eres nuevo en la programación, y te da pereza aprenderlo todo, entonces Freelance es tu ayuda.

gracias

Razón de la queja: