Fehler, Irrtümer, Fragen - Seite 2392

 

Wo können Sie die Implementierung der Handelsebene über grafische Objekte sehen?

Sie müssen so nah wie möglich an dem sein, was das Terminal selbst tut.

 
fxsaber:

Wo können Sie die Implementierung der Handelsebene über grafische Objekte sehen?

Sie müssen so nah wie möglich an dem sein, was das Terminal selbst tut.

Horizontale Linie mit DASHDOT-Stil und Beschreibung in OBJPROP_TEXT.

 
Andrey Khatimlianskii:

Horizontale Linie mit DASHDOT-Stil und Beschreibung in OBJPROP_TEXT.

Danke, ich wusste nichts von der Texteigenschaft.


Das funktioniert nicht. Was mache ich falsch?

void OnStart()
{
  const string Name = __FUNCTION__;
  
  ObjectCreate(0, Name, OBJ_HLINE, 0, 0, SymbolInfoDouble(_Symbol, SYMBOL_BID));
  ObjectSetString(0, Name, OBJPROP_TEXT, "12345");
  ObjectSetString(0, Name, OBJPROP_LEVELTEXT, "12345");
}

Ich kann den Text nicht sehen.

 
fxsaber:

Danke, ich wusste nichts von der Texteigenschaft.


Das funktioniert nicht. Was mache ich falsch?

Ich kann den Text nicht sehen.

Schalten Sie in den Diagrammeinstellungen die Anzeige von Textbeschriftungen für grafische Objekte ein.
 
Artyom Trishkin:
Schalten Sie in den Diagrammeinstellungen die Anzeige von Textbeschriftungen für grafische Objekte ein.

Ich danke Ihnen!

 
fxsaber:

Ich danke Ihnen!

Sie können dies auch programmatisch tun.
 
Kommentare, die sich nicht auf dieses Thema beziehen, wurden nach "Fragen von MQL4 MT4 MetaTrader 4 Anfängern" verschoben.
 
Ilya Malev:

MQL5 ME 2006

Gleicher Code in MQL4 wie er sein sollte,"Funktion 'f' muss einen Körper haben".

Vielen Dank für die Nachricht.

Wenn Sie ihn korrigiert haben, wird der richtige Fehler angezeigt.

 
Ilyas:

Wann werden Sie die persönlichen Nachrichten auf der Website korrigieren?

1. Die Meldungen zur Produktaktualisierung werden immer wieder angezeigt (auf der Website und im Terminal). Das gleiche Produkt. Wenn Sie sie lesen und sie wieder auftauchen, lesen Sie sie noch einmal;

2. Meine eigenen Nachrichten sind hervorgehoben (im Terminal). Ich weiß, was ich geschrieben habe, und ich weiß, an wen ich es geschrieben habe. Meine eigenen Nachrichten müssen nicht als neu hervorgehoben werden!

 

Hallo zusammen.

Es wird versucht, mehrere Textbeschriftungen zu einer langen Zeichenfolge zusammenzufassen. Aus irgendeinem Grund gibt die FunktionObjectGetInteger(0,name,OBJPROP_XSIZE) in Abwesenheit von Ticks (Ruhetag) und im normalen Modus regelmäßig (nicht immer) 0 zurück, obwohl das Objekt "name" genau existiert. Beim Tester treten Fehler zwar seltener auf, aber auch sie kommen vor.

Der Fehlercode ist 0, aber der Wert wird nicht erfasst. Frage an Entwickler und Experten. Warum? Was mache ich falsch oder ist das ein Fehler?

2019.02.28 13:58:16.922 DBS_Bug3 (RTS-3.19,M4)  DBS_Bug3: GetLastX: Не удалось получить размер объекта dbs_inf_11! Код ошибки: 0. Операция выполнена успешно.

Der Code eines Test-Expert Advisors lautet wie folgt

//+------------------------------------------------------------------+
//|                                                     DBS_Bug3.mq5 |
//|                                            Copyright © 2019, DBS |
//+------------------------------------------------------------------+
#include "Include\Errors.mqh"
//+------------------------------------------------------------------+
//| Входные параметры эксперта                                       |
//+------------------------------------------------------------------+
sinput int     Renew_Interval=5;             //Интервал обновления, сек.
sinput string  iFontName="Tahoma";           //Название шрифта
sinput int     iFontSize=9;                  //Размер шрифта
sinput color   iColorBase=clrYellow;         //Основной цвет
sinput int     iText_X=300;                  //Смещение от левого края графика, пикс.
sinput int     iText_Y=5;                    //Смещение от верхнего края графика, пикс.
sinput string  iName_pref="dbs_inf_";        //Префикс имени объектов текста
//+------------------------------------------------------------------+
//| Глобальные переменные                                            |
//+------------------------------------------------------------------+
datetime LastCalculateTime=0;                //время последнего расчёта
//+------------------------------------------------------------------+
//| Обработчик события OnInit                                        | 
//+------------------------------------------------------------------+
int OnInit()
  {
   EventSetTimer(Renew_Interval);                                     //установка таймера
   ShowInfo();                                                        //отобразить информацию   
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Обработчик события Deinit                                        | 
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectsDeleteAll(0,iName_pref);                                    //удаляем все свои объекты текста
   ChartRedraw();
  }
//+------------------------------------------------------------------+
//| Обработчик событий таймера                                       |
//+------------------------------------------------------------------+
void OnTimer()
  {
   if(SymbolInfoInteger(_Symbol,SYMBOL_TIME)>LastCalculateTime)       //проверка периода перерасчёта
      ShowInfo();                                                     //вывести информацию
  }
//+------------------------------------------------------------------+
//| Выводит на экран информацию про некоторые параметры эксперта     |
//+------------------------------------------------------------------+
void ShowInfo()
  {
   string t10="Прибыль: "+IntegerToString(MathRand())+" ";
   string t11="Убыток: "+IntegerToString(MathRand())+" ";
   string t12="Баланс: "+IntegerToString(MathRand())+" ";
   TextCreate(10,t10,iText_X,iText_Y);
   TextCreate(11,t11,GetLastX(10),iText_Y);
   TextCreate(12,t12,GetLastX(11),iText_Y);
   LastCalculateTime=TimeCurrent();                                   //запомним время последнего пересчёта
  }
//+------------------------------------------------------------------+
//| Функция получает значение координаты X конца заданного объекта   |
//+------------------------------------------------------------------+
int GetLastX(int a_idx)
  {
   string name=iName_pref+IntegerToString(a_idx);                    //имя объекта
   long x=ObjectGetInteger(0,name,OBJPROP_XDISTANCE);
   long size=ObjectGetInteger(0,name,OBJPROP_XSIZE);
   if(size==0)
      PrintFormat("%s: %s: Не удалось получить размер объекта %s! Код ошибки: %i. %s.",EXPERT_NAME,__FUNCTION__,name,_LastError,ErrorDescription(_LastError));
   return(int(x+size));
  }
//+------------------------------------------------------------------+ 
//| Создает объект "Текстовая метка"                                 | 
//+------------------------------------------------------------------+ 
bool TextCreate(const int    name_idx,                                //индекс имени объекта 
                const string text,                                    //текст
                const int    x=0,                                     //координата по оси X 
                const int    y=0,                                     //координата по оси Y
                const color  a_color=clrNONE)                         //цвет текста                
  {
   string name=iName_pref+IntegerToString(name_idx);                  //формируем имя объёкта
   if(!ObjectCreate(0,name,OBJ_LABEL,0,0,0)) // создадим объект "Текстовая метка" 
     {
      PrintFormat("%s: %s: Не удалось создать объект %s! Код ошибки: %i. %s.",EXPERT_NAME,__FUNCTION__,name,_LastError,ErrorDescription(_LastError));
      return(false);
     }
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);                      //установим координаты привязки объекта
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
   ObjectSetString(0,name,OBJPROP_TEXT,text);                         //установим текст 
   ObjectSetString(0,name,OBJPROP_TOOLTIP,text);
   ObjectSetString(0,name,OBJPROP_FONT,iFontName);                    //установим шрифт текста 
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,iFontSize);               //установим размер шрифта
   color font_color=(a_color==clrNONE)?iColorBase:a_color;            //если цвет не задан - используем установленный в настройках
   ObjectSetInteger(0,name,OBJPROP_COLOR,font_color);                 //установим цвет объекта
   ObjectSetInteger(0,name,OBJPROP_BACK,false);                       //отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);                 //включим (true) или отключим (false) режим перемещения объекта мышью 
   ObjectSetInteger(0,name,OBJPROP_SELECTED,false);                   //включим (true) или отключим (false) режим выделенности объекта
   ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);                      //скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ChartRedraw();                                                     //обновим график   
   return(true);
  }
//+------------------------------------------------------------------+


P.S. Übrigens, keiner der Entwickler hat meine vorherige Frage beantwortet

Dateien:
DBS_Bug3.mq5  13 kb
Grund der Beschwerde: