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

 
¡Hola!
¿Puede decirme qué tema de kodobase tiene un ejemplo de un algoritmo que dibuje los números de manera que los números de índice de barra se muestren en la parte inferior y/o superior de la ventana? Como en la foto.
La cuestión es que OBJ_TEXT se asigna al precio y a la hora y OBJ_LABEL a las coordenadas de la ventana en píxeles. Pero, ¿cómo combinarlos?
 
Leo59:
¡Hola!
¿Puede decirme qué tema de Kodobase tiene un ejemplo de algoritmo que dibuje los números de manera que la parte inferior y/o superior de la ventana muestre los números del índice de la barra? Como en la foto.
La cuestión es que OBJ_TEXT se asigna al precio y a la hora y OBJ_LABEL a las coordenadas de la ventana en píxeles. Pero, ¿cómo combinarlos?

Tienes que ir al precio, y el precio es el Higt o Low de la vela, entonces los objetos estarán en su lugar

 
Vitaly Muzichenko:

Tienes que ir al precio, y el precio es el Higt o Low de la vela, entonces los objetos estarán en su lugar

"en la parte inferior y/o superior de la ventana se muestran los números del índice de la barra" y "especificar la vela máxima o mínima" no es el "foco".

 
Leo59:

"la parte inferior y/o superior de la ventana muestra los números del índice de la barra" y "especifica el máximo o el mínimo de la vela" no es un "foco".

¿Esto?

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
  • www.mql5.com
В этом разделе представлены примеры для работы со свойствами графика. Для каждого свойства приведены одна или две законченные функции, которые позволяют задавать/получать значение этого свойства. Эти функции можно использовать в своих MQL5 программах как есть. На рисунке показана графическая панель для наглядной демонстрации того, как изменение...
 
Vitaly Muzichenko:

¿Esto?

Llevo años viendo esta sección. Pero eso es todo para lo que tengo cerebro:
#property  indicator_chart_window

extern int History = 35;                                              // Сколько баров мы имеем ввиду
extern int Multiple = 5;                                              // Кратность отображаемой разметки

color    Color=0;
color    Color_multiple=Moccasin;                                     // Цвет индексов кратных "Multiple"
color    Color_between=MintCream;                                     // Цвет индексов промежуточных 
string   name="";
string   Text="";
int      Font_size=0;
int      Font_size_multiple=14;                                       // Размер шрифта индексов кратных "Multiple"
int      Font_size_between=8;                                         // Размер шрифта индексов промежуточных

bool     Back=true;                                                   //--- отобразим на переднем (false) или заднем (true) плане. Если (true), то подсветки дат не выводится
string   Font="Arial";                                                // Шрифт
double   Angle=270.0;                                                 // Угол наклона в градусах

int      Style=STYLE_DOT;                                             // Для всех - стиль пунктир
int      Width=1;                                                     // Толщина линии

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//+------------------------------------------------------------------+
//| Custom indicator initialization function                    F  1 | int init()
//+------------------------------------------------------------------+
int init()
   {
//    IndicatorShortName(IN + " (" + ")");                              // Короткое имя индикатора
    return(INIT_SUCCEEDED);                                           // Успешная инициализация приложения
   }

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//+------------------------------------------------------------------+
//| expert deinitialization function                             F 2 | int deinit()
//+------------------------------------------------------------------+
int deinit() // Время исполнения специальной функции deinit() ограничено периодом 2,5 секунды.
   {
    ObjectsDeleteAll(0, "label", 0);                                  // Идентификатор графика, префикс имени объекта, индекс окна
    return(0);                                                        // Выход из deinit()
   }

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//+------------------------------------------------------------------+
//| Custom indicator iteration function                         F  3 | int start()
//+------------------------------------------------------------------+
int start()
   {
    int i=0;
    int limit=Bars-IndicatorCounted()-1; 
    if(limit>1) limit=MathMin(Bars, History+(History==0)*Bars)-1;
    
    for(i=0; i<History; i++)
        {
         name = "label "+i;
         Text = DoubleToStr(i,0);
          
         if(MathMod(i, Multiple) == 0)                                     // MathMod() Возвращает вещественный остаток от деления двух чисел (i/Multiple).
             {
              Color = Color_multiple;
              Font_size = Font_size_multiple;

              if(ObjectFind(0, name)==-1)                                  // Если объект "name" не найден
                  {
                   ObjectCreate(0,name,OBJ_VLINE,0,Time[i],0);             // Создаем объект..
                   ObjectSetInteger(0,name,OBJPROP_STYLE,Style);           //--- установим стиль отображения линии
                   ObjectSetInteger(0,name,OBJPROP_WIDTH,Width);           //--- установим толщину линии
                   ObjectSetInteger(0,name,OBJPROP_COLOR,Color);           //--- установим цвет
                   ObjectSetString(0,name,OBJPROP_TEXT,Text);              //--- установим текст
                   ObjectSetString(0,name,OBJPROP_FONT,Font);              //--- установим шрифт текста
                   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,Font_size);    //--- установим размер шрифта
                   ObjectSetDouble(0,name,OBJPROP_ANGLE,Angle);            //--- установим угол наклона текста
                   // Для отображения текстового описания объекта необходимо включить галочку опции "Показывать описания объектов" в окне Графики->Свойства финансового инструмента (F8) > Общие.         
                   ObjectSetInteger(0,name,OBJPROP_BACK, Back);            //--- отобразим на переднем (false) или заднем (true) плане
                  }
               else                                                        // Если объект "name" найден
                  {
                   ObjectMove(0,name, 0, Time[i], 0);                     // Сообщение новых координат. 
                  }
             }
//         else
//             {
//              Color = Color_between;
//              Font_size = Font_size_between;
//
//              if(ObjectFind(0, name)==-1)                                  // Если объект "name" не найден
//                  {
//                   ObjectCreate(0,name,OBJ_VLINE,0,Time[i],0);             // Создаем объект..
//                   ObjectSetInteger(0,name,OBJPROP_STYLE,Style);           //--- установим стиль отображения линии
//                   ObjectSetInteger(0,name,OBJPROP_WIDTH,Width);           //--- установим толщину линии
//                   ObjectSetInteger(0,name,OBJPROP_COLOR,Color);           //--- установим цвет
//                   //ObjectSetString(0,name,OBJPROP_TEXT,Text);              //--- установим текст
//                   //ObjectSetString(0,name,OBJPROP_FONT,Font);              //--- установим шрифт текста
//                   //ObjectSetInteger(0,name,OBJPROP_FONTSIZE,Font_size);    //--- установим размер шрифта
//                   ObjectSetDouble(0,name,OBJPROP_ANGLE,Angle);            //--- установим угол наклона текста
//                   // Для отображения текстового описания объекта необходимо включить галочку опции "Показывать описания объектов" в окне Графики->Свойства финансового инструмента (F8) > Общие.         
//                   ObjectSetInteger(0,name,OBJPROP_BACK, Back);            //--- отобразим на переднем (false) или заднем (true) плане
//                  }
//               else                                                        // Если объект "name" найден
//                  {
//                   ObjectMove(0,name, 0, Time[i], 0);                     // Сообщение новых координат. 
//                  }
//             }
        }
    return(0);
   }

 
Leo59:
¡Hola!
¿Puedes decirme en qué tema de Kodobase hay un ejemplo de un algoritmo que dibuje los números de manera que en la parte inferior y/o superior de la ventana aparezcan los números de índice de las barras? Como en la foto.
La cuestión es que OBJ_TEXT se asigna al precio y a la hora y OBJ_LABEL a las coordenadas de la ventana en píxeles. Pero, ¿cómo combinarlos?

Conestas funciones ChartTimePriceToXY y ChartXYToTimePrice se pueden colocar en cualquier lugar

 
Leo59:
¡Hola!
¿Puede decirme qué tema de kodobase tiene un ejemplo de un algoritmo que dibuje los números de manera que los números de índice de barra se muestren en la parte inferior y/o superior de la ventana? Como en la foto.
La cuestión es que OBJ_TEXT se asigna al precio y a la hora y OBJ_LABEL a las coordenadas de la ventana en píxeles. Pero, ¿cómo combinarlos?

¿Por qué necesito números en un gráfico? La documentación tiene una solución lista para ver el número de barra

Документация по MQL5: Операции с массивами / ArraySetAsSeries
Документация по MQL5: Операции с массивами / ArraySetAsSeries
  • www.mql5.com
//| Custom indicator initialization function                         | //| Custom indicator iteration function                              |
 
Leo59:
He visto esta sección durante muchos años. Pero mi cerebro es suficiente sólo para esto:

Una recomendación discreta:

Si estás tratando de dominar mql5, trata de deshacerte de extern, int init(), int deinit() y int start().

reemplazarlos por entradas completas, int OnInit(), void OnDeinit(const int reason) y void OnTick()

 

¡Saludos!


Me pueden decir cómo hacer una matriz de instu

Estoy tratando de hacerlo así:

entrada doble Df_1 = 0,8;

entrada doble Df_2 = 0,1;

entrada doble Df_3 = 0,3;


const double Df[3] = {Df_1 ,Df_2 ,Df_3 };


pero genera un error :

'Df_1' - expresión constante requerida

Df_2' - expresión constante requerida

'Df_3' - expresión constante requerida

Refiriéndose a la cadena de inicialización de la matriz
 
Anttonnio:

¡Saludos!


Me pueden decir cómo hacer una matriz de instu

Estoy tratando de hacerlo así:

entrada doble Df_1 = 0,8;

entrada doble Df_2 = 0,1;

entrada doble Df_3 = 0,3;


const double Df[3] = {Df_1 ,Df_2 ,Df_3 };


pero genera un error :

'Df_1' - expresión constante requerida

'Df_2' - expresión constante requerida

'Df_3' - expresión constante requerida

Refiriéndose a la cadena de inicialización de la matriz

El array debe ser inicializado con constantes.

Si quieres llenarlo con parámetros de entrada, primero decláralo y luego detállalo.