エラー、バグ、質問 - ページ 2392

 

グラフィカルなオブジェクトによる取引レベルの 実装を確認できる場所

端末そのものが行うことにできるだけ近づける必要があります。

 
fxsaber:

グラフィカルなオブジェクトによる取引レベルの 実装を確認できる場所

端末そのものが行うことに、できるだけ近いものが必要。

DASHDOT スタイルの水平線と OBJPROP_TEXT の記述。

 
Andrey Khatimlianskii:

DASHDOT スタイルの水平線と OBJPROP_TEXT の記述。

ありがとうございます、textプロパティのことは知りませんでした。


うまくいかないんです。私は何を間違えているのだろう?

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

文字が見えない。

 
fxsaber:

ありがとうございます、textプロパティのことは知りませんでした。


うまくいかないんです。私は何を間違えているのだろう?

文字が見えない。

チャートの設定で、グラフィカルオブジェクトのテキストキャプションの表示をオンにします。
 
Artyom Trishkin:
チャートの設定で、グラフィックオブジェクトのテキストキャプションの表示をオンにします。

ありがとうございました。

 
fxsaber:

ありがとうございました。

プログラムでも可能です。
 
このトピックに関連しないコメントは、「MQL4 MT4 MetaTrader 4初心者からの質問」に移動しました。
 
Ilya Malev:

MQL5 ME 2006

MQL4でも本来は同じコード、"関数「f」はボディを持たなければならない"

メッセージをありがとうございました。

修正した場合、正しいエラーが表示されます。

 
Ilyas:

ホームページの個人メッセージ はいつ修正されるのですか?

1.製品のアップデートメッセージが出続ける(ウェブサイトと端末で)。同じ製品です。読んでもまた出てくる、読んでもまた出てくる。

2.自分のメッセージは(端末で)ハイライト表示されます。自分が何を書いたか、誰に向けて書いたか、わかっている。自分のメッセージは、新着としてハイライトする必要はないのです。

 

皆さん、こんにちは。

複数のテキストラベルを1つの長い文字列にまとめようとしています。ティックがなく(休日)、通常モードで関数ObjectGetInteger(0,name,OBJPROP_XSIZE)が定期的に(常にではない)0を返すとき、なぜか「名前」オブジェクトが正確に存在します。テスターでは、エラーの発生頻度は低いですが、エラーも発生します。

エラーコードは0だが、値が取得できない。 開発者、専門家に質問です。なぜ?私のやり方が悪いのか、それともバグなのか?

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

テスト用Expert Advisorのコードは以下の通りです。

//+------------------------------------------------------------------+
//|                                                     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);
  }
//+------------------------------------------------------------------+


追伸:ところで、前回の質問には、どの開発者も答えてくれていません。

ファイル:
DBS_Bug3.mq5  13 kb