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

 
makskov1987:


メタトレーダーがウィンドウズ・フォン8で使えるようになるのはいつ?

マイクロソフトが モバイル市場への大規模な攻撃のためにノキアのモバイル部門の買収を完了 したとすれば、それはそう長くはないだろう。MetaQuotesは(願わくば:-)脈をつかんでいるのです。
 
こんにちは、2つの式の違いは何ですか?EAの実行時間を制限するには、どちらを使うのが良いのでしょうか?
(Hour() >= StartHour && Hour() <= EndHour) 
(TimeHour(TimeCurrent()) >= StartHour && TimeHour(TimeCurrent()) <= EndHour)
 
こんにちは、複数の端末に同時に注文を出すmql5スクリプトはどこで手に入るか教えてください。ありがとうございます。
 

トレーディングシグナルジェネレーターの執筆を継続中。

初期化コードの最後の部分(太字)にエラーがあります。

InitMyCustomIndicator' -この関数は ボディを持つ必要があります。

InitClose' - 関数はボディを持つ必要があります。

//| включаемые файлы                                                 |
//+------------------------------------------------------------------+
#property tester_indicator "Blau_Ergodic.ex5"
#include <Expert\ExpertSignal.mqh>
//+------------------------------------------------------------------+
//| Класс CSampleSignal.                                             |
//| Назначение: Класс генератора торговых сигналов.                  |
//|             Является производным от класса CExpertSignal.        |
//+------------------------------------------------------------------+
class CSampleSignal : public CExpertSignal
  {
protected:
   CiCustom           m_TSI;              // объект для доступа к значениям TSI
   CiClose            m_close;           // объект для доступа к ценам закрытия баров
  //--- настраиваемые параметры
   int      q;  // q - период, по которому вычисляется моментум
   int      r; // r - период 1-й EMA, применительно к моментуму
   int      s;  // s - период 2-й EMA, применительно к результату первого сглаживания
   int      u;  // u - период 3-й EMA, применительно к результату второго сглаживания
   int      ul; // ul - (сигнальная линия) период EMA, применительно к эргодике
   double             m_stop_loss;       // уровень установки ордера "stop loss" относительно цены открытия
   double             m_take_profit;     // уровень установки ордера "take profit" относительно цены открытия
public:
              CSampleSignal();
   //--- методы установки параметров настройки
   virtual int       ShortCondition(); // проверка условия открытия селла
   virtual int       LongCondition();  // проверка условия открытия бая
   void               Q(int value)                 { q=value;   }
   void               R(int value)                 { r=value;   }
   void               S(int value)                 { s=value;   }
   void               U(int value)                 { u=value;   }
   void               UL(int value)                { ul=value;  }
   void               StopLoss(double value)       { m_stop_loss=value;   }
   void               TakeProfit(double value)     { m_take_profit=value; }
   //--- метод проверки параметров настройки
   virtual bool       ValidationSettings();
   
   virtual bool       InitIndicators(CIndicators* indicators);

protected:
   //--- метод инициализации объектов
   bool               InitMyCustomIndicator(CIndicators* indicators);
   bool               InitClose(CIndicators* indicators);
   //--- методы доступа к данным объектов
   double             Main(int index)                     { return(m_TSI.GetData(0,index)); }
   double             Signal(int index)                   { return(m_TSI.GetData(1,index)); }
   double             Close(int index)                    { return(m_close.GetData(index)); }
  };
//+------------------------------------------------------------------+
//| Конструктор CSampleSignal.                                       |
//| INPUT:  нет.                                                     |
//| OUTPUT: нет.                                                     |
//| REMARK: нет.                                                     |
//+------------------------------------------------------------------+
void CSampleSignal::CSampleSignal()
  {
   q=2; 
   r=7;
   s=5;
   u=3;
   ul=5;   
  }
//+------------------------------------------------------------------+
//| Проверка параметров настройки.                                   |
//| INPUT:  нет.                                                     |
//| OUTPUT: true-если настройки правильные, иначе false.             |
//| REMARK: нет.                                                     |
//+------------------------------------------------------------------+
bool CSampleSignal::ValidationSettings()
  {
  //--- проверка параметров
   if(q<=0||r<=0||s<=0||u<=0||ul<=0)
     {
      printf(__FUNCTION__+": период должен быть больше нуля");
      return(false);
     }
//--- успешное завершение
   return(true);
  }
//+------------------------------------------------------------------+
//| Инициализация индикаторов и таймсерий.                           |
//| INPUT:  indicators - указатель на объект-коллекцию               |
//|                      индикаторов и таймсерий.                    |
//| OUTPUT: true-в случае успешного завершения, иначе false.         |
//| REMARK: нет.                                                     |
//+------------------------------------------------------------------+
bool CSampleSignal::InitIndicators(CIndicators* indicators)
  {
//--- проверка указателя
   if(indicators==NULL)       return(false);
//--- инициализация скользящей средней
   if(!InitMyCustomIndicator(indicators))    return(false);
//--- инициализация таймсерии цен закрытия
   if(!InitClose(indicators)) return(false);
//--- успешное завершение
   return(true);
  }
 
forexman77:

トレーディングシグナルジェネレーターの執筆を継続中。

初期化コードの最後の部分(太字)にエラーがあります。

InitMyCustomIndicator' - この関数はボディを持つ必要があります。

InitClose' - 関数はボディを持つ必要があります。


宣言されているが定義されていないメソッドを使おうとしている。
 
フリーダー
宣言されているが定義されていないメソッドを使おうとしている。

授業は初めてでよくわからない。定義の作り方を例を挙げて教えてください。

 
forexman77:
授業は初めてでよくわからない。定義の作り方を例で示すことはできますか?
protected:
   //--- метод инициализации объектов
   bool               InitMyCustomIndicator(CIndicators* indicators);
   bool               InitClose(CIndicators* indicators);
.
.
.

bool CSampleSignal::InitMyCustomIndicator(CIndicators* indicators)
{
  //здесь надо вписать тело метода
  return(true);
}

bool CSampleSignal::InitClose(CIndicators* indicators)
{
  //и здесь тоже
  return(true);
}
 
Fleder:

では、太字にしたコードの最後の部分だけ変えればいいのですか?

そして、私はこうしています。

bool CSampleSignal::InitMyCustomIndicator(CIndicators* indicators)
  {
//--- проверка указателя
   if(indicators==NULL)       return(false);
//--- инициализация скользящей средней
   if(!InitMyCustomIndicator(indicators))    return(false);
   return(true);
  }
bool CSampleSignal::InitClose(CIndicators* indicators)
{
   if(!InitClose(indicators)) return(false);
//--- успешное завершение
  return(true);
}
 
forexman77:

では、太字で強調したコードの最後の部分のみを変更すればよいのですね。

そして、次のようなことをしています。

クラスコードに以下のようなメソッドがある場合。

   bool               InitMyCustomIndicator(CIndicators* indicators);
   bool               InitClose(CIndicators* indicators);

それなら、何かチェックしなければならない。そうでなければ、存在意義がない。

 

こんにちは。

何本のバーをチェックするか事前に分からない場合、バーの終値で forループを設定するにはどうすればよいですか?

int i=1;i<ArraySize(select);i++
CopyRates(_Symbol,_Period,0,i,mrate)

例えば、i本のバーの終値が互いに低いという条件をチェックする必要があります。

理由: