Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 809

 
Olá!
Pode dizer-me que tópico da kodobase tem um exemplo de um algoritmo que desenha números para que os números do índice de barras sejam exibidos na parte inferior e/ou superior da janela? Tal como na fotografia.
A questão é que OBJ_TEXT é mapeado para preço e tempo e OBJ_LABEL para as coordenadas da janela em pixels. Mas como combiná-los?
 
Leo59:
Olá!
Pode dizer-me que tema do Kodobase tem um exemplo de um algoritmo que desenha os números de modo a que a parte inferior e/ou superior da janela exiba números de índice de barras? Tal como na fotografia.
A questão é que OBJ_TEXT é mapeado para preço e tempo e OBJ_LABEL para as coordenadas da janela em pixels. Mas como combiná-los?

É necessário ir ao preço, e o preço é o Higt ou o Low do candelabro, então os objectos estarão no lugar

 
Vitaly Muzichenko:

É necessário ir ao preço, e o preço é o Higt ou o Low do candelabro, então os objectos estarão no lugar

"na parte inferior e/ou superior da janela exibe números de índice de barras" e "especificar velas Higt ou Low" não é o "foco".

 
Leo59:

"a parte inferior e/ou superior da janela mostra números de índice de barras" e "especificar o Higt ou Low da vela" não é um "foco".

Isto?

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

Isto?

Há anos que vejo esta secção. Mas é só para isso que tenho cérebro:
#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:
Olá!
Pode dizer-me que tópico do Kodobase tem um exemplo de um algoritmo que desenha os números para que a parte inferior e/ou superior da janela exiba os números índice das barras? Tal como na fotografia.
A questão é que OBJ_TEXT é mapeado para preço e tempo e OBJ_LABEL para as coordenadas da janela em pixels. Mas como combiná-los?

Comestas funções, ChartTimePriceToXY e ChartXYToTimePrice podem ser colocados em qualquer lugar

 
Leo59:
Olá!
Pode dizer-me que tópico da kodobase tem um exemplo de um algoritmo que desenha números para que os números do índice de barras sejam exibidos na parte inferior e/ou superior da janela? Tal como na fotografia.
A questão é que OBJ_TEXT é mapeado para preço e tempo e OBJ_LABEL para as coordenadas da janela em pixels. Mas como combiná-los?

Porque é que preciso de números num gráfico? Existe uma solução pronta na documentação sobre como visualizar o número de barras

Документация по MQL5: Операции с массивами / ArraySetAsSeries
Документация по MQL5: Операции с массивами / ArraySetAsSeries
  • www.mql5.com
//| Custom indicator initialization function                         | //| Custom indicator iteration function                              |
 
Leo59:
Tenho visto esta secção há muitos anos. Mas o meu cérebro é suficiente apenas para isto:

Uma recomendação discreta:

If-you're trying to master mql5, try to get rid of extern, int init(), int deinit() and int start().

substitua-os por uma entrada completa, int OnInit(), void OnDeinit(const int razão) e void OnTick()

 

Saudações!


Pode dizer-me como fazer um conjunto de instu

Estou a tentar fazê-lo desta forma:

input duplo Df_1 = 0,8;

input duplo Df_2 = 0,1;

input duplo Df_3 = 0,3;


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


mas gera um erro :

'Df_1' - expressão constante necessária

'Df_2' - expressão constante necessária

'Df_3' - expressão constante necessária

Referindo-se à cadeia de inicialização da matriz
 
Anttonnio:

Saudações!


Pode dizer-me como fazer um conjunto de instu

Estou a tentar fazê-lo desta forma:

input duplo Df_1 = 0,8;

input duplo Df_2 = 0,1;

input duplo Df_3 = 0,3;


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


mas gera um erro :

'Df_1' - expressão constante necessária

'Df_2' - expressão constante necessária

'Df_3' - expressão constante necessária

Referindo-se à cadeia de inicialização da matriz

A matriz deve ser inicializada com constantes.

Se quiser preenchê-lo com parâmetros de entrada, primeiro declare-o e depois especifique-o.