MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1164

 
Iosebi Tavadze:
スレ違いかもしれませんが、神様にお許しください。地下に設置された4~5個のインジケーターの組み合わせでシグナルを出すようなインジケーターを書きたい のです。または既成のadvice.Possibleアドバイスお願いします!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

誰かに書いてもらいたい場合はこちらへ

自分でやりたい人は、できないことを教えて、コードを投稿してください。

 
simeon068 :
mql5フォルダにエキスパートアドバイザを追加して、アドバイザセクションに表示させるにはどうしたらいいですか?

端末の「ファイル」メニューから「データディレクトリを開く」を選択すると、エクスプローラが開きます。その中にあるMQL5 \ Expertsフォルダに移動し、その中または任意のサブフォルダにアドバイザーを配置します。次に、端末のナビゲータで右ボタンのメニューから「更新」を選択します。

 

どなたかアドバイスしてください!!警告の内容や修正方法を教えてください。

スナップショット3

すぐそこ

// если активны входящие параметры, использующие значение текущей цены по инструменту,
// тогда пытаемся получить текущие значения
   if(hide_PRICE_HIGH>0 || hide_PRICE_LOW>0 || hide_SPREAD>0)
     {
      SymbolInfoTick(name, lastme);
      if(lastme.bid==0)
        {
         Alert("("+name+") Получить значение BID не удалось. Некоторые функции фильтрации могут не работать.");
        }
     }
// Скрыть символы, у которых спред:
   if(hide_SPREAD>0 && lastme.bid>0)
     {
      switch(hide_SPREAD)
        {
         // если текущий спред больше 0.05% от цены - пропускаем символ
         case spread_b05:
            if(((SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT))/lastme.bid)*100 > 0.05)
              {
               isskip=true;
              }
            break;
         // если текущий спред больше 0.1% от цены - пропускаем символ
         case spread_b1:
            if(((SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT))/lastme.bid)*100 > 0.1)
              {
               isskip=true;
              }
            break;
         // если текущий спред больше 0.15% от цены - пропускаем символ
         case spread_b15:
            if(((SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT))/lastme.bid)*100 > 0.15)
              {
               isskip=true;
              }
            break;
         // если текущий спред меньше 0.15% от цены - пропускаем символ
         case spread_l15:
            if(((SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT))/lastme.bid)*100 < 0.15)
              {
               isskip=true;
              }
            break;
         // если текущий спред меньше 0.1% от цены - пропускаем символ
         case spread_l1:
            if(((SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT))/lastme.bid)*100 < 0.1)
              {
               isskip=true;
              }
            break;
         // если текущий спред != 0.01 - пропускаем символ
         case spread_c1:
            if(SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT) > 0.01)
              {
               isskip=true;
              }
            break;
         // если текущий спред > 0.03 - пропускаем символ
         case spread_c3:
            if(SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT) > 0.03)
              {
               isskip=true;
              }
            break;
         // если текущий спред > 0.07 - пропускаем символ
         case spread_c7:
            if(SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT) > 0.07)
              {
               isskip=true;
              }
            break;
         // если текущий спред > 0.1 - пропускаем символ
         case spread_c10:
            if(SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT) > 0.1)
              {
               isskip=true;
              }
            break;
        }
     }
 
Alexsandr San:

どなたかアドバイスしてください!!警告の内容や修正方法を教えてください。

此処に於て


私はそれを修正したと思う - 私はそれが正しいかどうかわからないことを除いて?それを表に出してください。

スナップショット修正

 
Alexsandr San:

どなたかアドバイスしてください!!警告の内容や修正方法を教えてください。

此処に於て


初期化されていないlastme変数を使用している可能性があります。初期化せずに宣言しているんですね。SymbolInfoTick()で埋められることは保証されていません。

すぐに初期化して変数を宣言する:MqlTick lastme={0};

 
Artyom Trishkin:

初期化されていないlastme変数を使用することが可能です。初期化せずに宣言しているんですね。SymbolInfoTick()で埋められることは保証されない。

すぐに初期化して変数を宣言する:MqlTick lastme={0};

ありがとうございました!警告が消えました。健康で、すべて最高!!!

--------------------------

中に戻すと......ご指摘の通りです。


良いユーティリティです。私はここからダウンロードしましたhttps://www.mql5.com/ru/articles/5614

ファイル:
finder.mq5  296 kb
finder.mq4  296 kb
 

ライブラリからデータを要求する方法を教えてください。

データ入力インタフェースを持つフクロウを作ろうと思っています

このように見える

フィールドコードを入力する

//+------------------------------------------------------------------+
//| Создаёт поле ввода 1                                             |
//+------------------------------------------------------------------+
bool CProgram::CreateSpinEdit1(const int x_gap,const int y_gap,string text)
  {
//--- Сохраним указатель на окно
   m_spin_edit1.WindowPointer(m_window);
//--- Координаты
   int x=m_window.X()+x_gap;
   int y=m_window.Y()+y_gap;
//--- Значение
   double v=(m_spin_edit1.GetValue()==WRONG_VALUE) ? 0 : m_spin_edit1.GetValue();
//--- Установим свойства перед созданием
   m_spin_edit1.XSize(204);
   m_spin_edit1.YSize(24);
   m_spin_edit1.EditXSize(80);
   m_spin_edit1.MaxValue(10000);
   m_spin_edit1.MinValue(0);
   m_spin_edit1.StepValue(10*Point);
   m_spin_edit1.SetDigits(Digits);
   m_spin_edit1.SetValue(v);
   m_spin_edit1.ResetMode(true);
   m_spin_edit1.AreaColor(clrWhite);
//--- Создадим элемент управления
   if(!m_spin_edit1.CreateSpinEdit(m_chart_id,m_subwin,text,x,y))
      return(false);
//--- Добавим объект в общий массив групп объектов
   CWndContainer::AddToElementsArray(0,m_spin_edit1);
   return(true);
  }

どのように問い合わせればいいのですか?

m_spin_edit1.GetValue()
 
MakarFX:

どのようにリクエストするのですか?

は、おそらくこのようなものでしょう。

имя_объекта. m_spin_edit1.GetValue()

 
Igor Makanu:

そうですね。

オブジェクト名の意味は?

しなければならないのです。

   double OrderBuy = m_spin_edit1.GetValue();

が、この場合、エラー

m_spin_edit1' - 未宣言の識別子 TestLibrary.mq4 56 20

 
MakarFX:

オブジェクト名の意味は?

説明できるかどうかは疑問ですが、もしあなたがそれを求めているのなら

ものであるというクラス型の変数があるとします。

は、CProgramクラスです。

コードのどこかに書かれているはずです

CProgram MyProgram;

と呼ばれるようにする必要があります。

 double OrderBuy = MyProgram.m_spin_edit1.GetValue();