初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1307

 
こんにちは。

MQL4からMQL5にインジケータを移したのですが、なぜ動かないのか理解できません。

void GetDellName(string name_n = " ")
  {
   string vName;
   for(int i=ObjectsTotal()-1; i>=0; i--)
     {
      vName = ObjectName(i);
      if(StringFind(vName,name_n) !=-1)
         ObjectDelete(vName);
     }
  }

MQL5のMetaEditorが文句を言う。


'ObjectsTotal' - パラメータの数が間違っています。

'ObjectName' - パラメータ数が間違っている

ObjectDelete' - パラメータ数が間違っている

MQL4ではすべてエラーなく動作しています。

ご教授ください

 
Sprut 185:
こんにちは。

MQL4からMQL5にインジケータを移したのですが、なぜ動かないのか理解できません。


MQL5のMetaEditorが文句を言う。


'ObjectsTotal' - パラメータの数が間違っています。

'ObjectName' - パラメータ数が間違っている

ObjectDelete' - パラメータ数が間違っている

MQL4ではすべてエラーなく動作しています。

よろしくお願いします

1.コードを正しく貼り付けてください。 メッセージを編集する際に、ボタンコード を押し、表示されるポップアップウィンドウにコードを貼り付けてください(初めてメッセージを編集しました)。

2.ヘルプをよく読んでください。例:ObjectsTotal

int  ObjectsTotal(
   long  chart_id,           // идентификатор графика
   int   sub_window=-1,      // индекс окна
   int   type=-1             // тип объекта     
   );
Документация по MQL5: Графические объекты / ObjectsTotal
Документация по MQL5: Графические объекты / ObjectsTotal
  • www.mql5.com
ObjectsTotal - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Sprut 185:

'ObjectsTotal'です。

これはどうでしょう- は、水平線とトレンドラインをすべて削除します。

//+------------------------------------------------------------------+
//|                                                  GetDellName.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   GetDellName();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int GetDellName(void)
  {
   int nHLines=ObjectsTotal(0,-1,OBJ_HLINE),
       nTrendLines=ObjectsTotal(0,-1,OBJ_TREND),i;
   string objName;
   for(i=0; i<nHLines; i++)
     {
      objName=ObjectName(0,i,0,OBJ_HLINE);
      ObjectDelete(0,objName);
     }
   for(i=0; i<nTrendLines; i++)
     {
      objName=ObjectName(0,i,0,OBJ_TREND);
      ObjectDelete(0,objName);
     }
   return(GetDellName());
  }
//+------------------------------------------------------------------+

-----------------------------------------------------\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\------------------------------------------------------

または、次のようにすべてのオブジェクトを削除します。

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int GetDellName(void)
  {
   int ObjectsName=ObjectsTotal(0,-1,-1),i;
   string objName;
   for(i=0; i<ObjectsName; i++)
     {
      objName=ObjectName(0,i,0,-1);
      ObjectDelete(0,objName);
     }
   return(GetDellName());
  }
//+------------------------------------------------------------------+

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

というように、アレクセイ・ビクトロフが言って いるように。

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int GetDellName(void)
  {
   ObjectsDeleteAll(0,-1,-1);
//--- "clear" comment
   Comment("");
   return(false);
  }
//+------------------------------------------------------------------+
 
SanAlex:

これはどうでしょう- は、水平線とトレンドラインをすべて削除します。

なぜサイクルがあるのか?

int  ObjectsDeleteAll(
   long  chart_id,            // идентификатор графика
   int   sub_window=-1,       // индекс окна
   int   type=-1              // тип объекта для удаления
   );
 
Alexey Viktorov:

なぜここにサイクルがあるのでしょうか?

正直言って- 全然わかんない!- 朝、退屈しのぎに。

 
SanAlex:

これはどうでしょう- は、水平線とトレンドラインをすべて削除します。

-----------------------------------------------------\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\------------------------------------------------------

または、次のようにすべてのオブジェクトを削除します。

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

とか、アレクセイ・ヴィクトロフが 言うように

ということもできます。

//+------------------------------------------------------------------+
//|                                                  GetDellName.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

string   m_name[]= {"1 имя объекта","2 имя объекта","3 имя объекта","4 имя объекта","5 имя объекта","6 имя объекта"};
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   GetDellName();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int GetDellName(void)
  {
   for(int i=0; i<ArraySize(m_name); i++)
     {
      ObjectDelete(0,m_name[i]);
     }
   return(false);
  }
//+------------------------------------------------------------------+

とか、こんな感じで

//+------------------------------------------------------------------+
//|                                                     FILTER_1.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
sinput string InpName_1 = "HorizontalTrend Line_1"; // FILTER_1
sinput string InpName   = "HorizontalTrend Line";   // FILTER
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//---
   EventSetMillisecondTimer(1);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   EventKillTimer();
   GetDellName("");
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick(void)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTimer(void)
  {
   MqlRates rates[],rates_1[];
   int start_pos=0,count=1;
   if(CopyRates(Symbol(),Period(),start_pos,count,rates)!=count)
     {
      return;
     }
   if(CopyRates(Symbol(),Period(),start_pos,count,rates_1)!=count)
     {
      return;
     }
//---
   double price_line=0.0;
   if(ObjectFind(0,InpName)>=0)
     {
      long object_type=ObjectGetInteger(0,InpName,OBJPROP_TYPE);
      if(object_type==OBJ_HLINE)
         price_line=ObjectGetDouble(0,InpName,OBJPROP_PRICE);
      else
         if(object_type==OBJ_TREND)
            price_line=ObjectGetValueByTime(0,InpName,rates[0].time,0);
      if(price_line>0.0)
        {
         if(rates[0].open<price_line)
           {
            Alert("1");
            GetDellName(InpName);
           }
        }
     }
//---
   double price_line_1=0.0;
   if(ObjectFind(0,InpName_1)>=0)
     {
      long object_type_1=ObjectGetInteger(0,InpName_1,OBJPROP_TYPE);
      if(object_type_1==OBJ_HLINE)
         price_line_1=ObjectGetDouble(0,InpName_1,OBJPROP_PRICE);
      else
         if(object_type_1==OBJ_TREND)
            price_line_1=ObjectGetValueByTime(0,InpName_1,rates_1[0].time,0);
      if(price_line_1>0.0)
        {
         if(rates_1[0].open>price_line_1)
           {
            Alert("2");
            GetDellName(InpName_1);
           }
        }
     }
//---
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int GetDellName(string objName)
  {
   int nHLines=ObjectsTotal(0,-1,OBJ_HLINE),
       nTrendLines=ObjectsTotal(0,-1,OBJ_TREND),i;
   for(i=0; i<nHLines; i++)
     {
      objName=ObjectName(0,i,0,OBJ_HLINE);
      ObjectDelete(0,objName);
     }
   for(i=0; i<nTrendLines; i++)
     {
      objName=ObjectName(0,i,0,OBJ_TREND);
      ObjectDelete(0,objName);
     }
   return(false);
  }
//+------------------------------------------------------------------+
 

MT5のセットアップにヘルプが必要です。

1.問題 MT5でDEMO口座に切り替えたが、注文を出すボタンがアクティブにならない。一番下にサーバーとの接続が ないことがわかり、2019年と2020年の契約ティッカーがデータベースからリストにロードされているが、実際の契約は ない。

 
gorod258:
MT5をゼロからセットアップする手助けが必要です。

https://www.metatrader5.com/ru/terminal/help/startworking/settings

Настройки платформы - Начало работы - Справка по MetaTrader 5
Настройки платформы - Начало работы - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая платформа обладает множеством настроек, что позволяет организовать работу в ней так, как это удобно именно вам. Выполните команду...
 

プリセットしたのですが、なぜか機能の一部が動作しません.

1.問題 MT5でDEMO口座に切り替えたが、注文を出すボタンがアクティブにならない、サーバーとの接続がないことが下部に表示され、2019年と2020年の契約ティッカーがあなたのデータベースからリストにロードされるが、実際の契約はない。

助けていただけますか?

 
SanAlex:

正直言って- 全然わかんない!- 朝にやるだけでいいんです。

まあ、どうせ無条件で削除されるんだろうけど)

理由: