Errori, bug, domande - pagina 2392

 

Dove si può vedere l'implementazione del livello di trading tramite oggetti grafici

Deve essere il più vicino possibile a quello che fa il terminale stesso.

 
fxsaber:

Dove si può vedere l'implementazione del livello di trading tramite oggetti grafici

Serve il più vicino possibile a quello che fa il terminale stesso.

Linea orizzontale con stile DASHDOT e descrizione in OBJPROP_TEXT.

 
Andrey Khatimlianskii:

Linea orizzontale con stile DASHDOT e descrizione in OBJPROP_TEXT.

Grazie, non sapevo della proprietà del testo.


Non funziona. Cosa sto facendo di sbagliato?

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");
}

Non riesco a vedere il testo.

 
fxsaber:

Grazie, non sapevo della proprietà del testo.


Non funziona. Cosa sto facendo di sbagliato?

Non riesco a vedere il testo.

Nelle impostazioni del grafico, attiva la visualizzazione delle didascalie di testo per gli oggetti grafici.
 
Artyom Trishkin:
Nelle impostazioni del grafico, attiva la visualizzazione delle didascalie di testo per gli oggetti grafici.

Grazie!

 
fxsaber:

Grazie!

Potete farlo anche programmaticamente.
 
I commenti non relativi a questo argomento sono stati spostati in "Domande dai principianti di MQL4 MT4 MetaTrader 4".
 
Ilya Malev:

MQL5 ME 2006

Stesso codice in MQL4 come dovrebbe essere,"la funzione 'f' deve avere un corpo"

Grazie per il messaggio.

Correggetelo, l'errore corretto verrà visualizzato.

 
Ilyas:

Quando sistemerete i messaggi personali sul sito?

1. I messaggi di aggiornamento del prodotto continuano a spuntare (sul sito web e nel terminale). Lo stesso prodotto. Se lo leggi e vengono fuori di nuovo, leggilo di nuovo;

2. I miei messaggi sono evidenziati (nel terminale). So cosa ho scritto e so a chi l'ho scritto. I miei messaggi non devono essere evidenziati come nuovi!

 

Ciao a tutti.

Cercando di combinare diverse etichette di testo in una lunga stringa. Per qualche motivo, quando non ci sono ticchettii (giorno di riposo), e in modalità abituale, la funzioneObjectGetInteger(0,name,OBJPROP_XSIZE) restituisce periodicamente (non sempre) 0 mentre l'oggetto "nome" esiste esattamente. Nel tester, gli errori si verificano meno frequentemente, ma si verificano ugualmente.

Il codice di errore è 0 ma il valore non viene acquisito. Domanda per sviluppatori ed esperti. Perché? Cosa sto facendo di sbagliato o è un bug?

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

Il codice di un Expert Advisor di prova è qui sotto

//+------------------------------------------------------------------+
//|                                                     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. A proposito, nessuno degli sviluppatori ha risposto alla mia domanda precedente

File:
DBS_Bug3.mq5  13 kb