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

 
Vladimir Karputov:

ArrayMinimum は、値が最小である要素の INDEX を返す。次に,配列Lowから インデックスlowで 値そのものを取得する必要があります.

ロー[low]

何も...

//+------------------------------------------------------------------+
//| Получим Low для заданного номера бара                            |
//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int do)
  {
   int low=0; double l=0;
   ArraySetAsSeries(Low,true);
   int copied=CopyLow(symbol,timeframe,0,do,Low);
   if(copied>0 && index<copied){ low=ArrayMinimum(Low);//ArrayMinimum(
   l = Low[low];
   }
   return(l);
  }
 
Top2n:

何も...

//+------------------------------------------------------------------+
//| Получим Low для заданного номера бара                            |
//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
  {
   int low=0; double l=0;
   ArraySetAsSeries(Low,true);
   int copied=CopyLow(symbol,timeframe,0,index,Low);
   if(copied>0 && index<copied){ low=ArrayMinimum(Low);//ArrayMinimum(
   l = Low[low];
   }
   return(l);
  }


そして、あなたのコードの中で誰がローなのか?
 
Vladimir Karputov:
あなたのコードでは何がLow なのですか?
Low - 0からインデックスまでの 安値を含む配列。
 
Top2n:
Low - 0からdoまでの安値を含む配列。

どこで見るの?関数の中に配列を入れる。変数lを"-1 "で初期化する。一般的に、Stylizerを 使用してください - あなたのコードは読みにくいです。また、エラーがあったとしても、とにかく何かを返します。それは困りますね。

追加:そして、なぜそのように比較するのか。

if(copied>0 && index<copied)

そんなやり方では、絶対に結果は出ません。

//+------------------------------------------------------------------+
//| Получим Lowest для заданного промежутка                          |
//+------------------------------------------------------------------+
double iLowest(string symbol,ENUM_TIMEFRAMES timeframe,int bands)
  {
   double Low[];
   double result=-1;
   ArraySetAsSeries(Low,true);
   int copied=CopyLow(symbol,timeframe,0,bands,Low);
   if(copied==bands)
     {
      result=Low[ArrayMinimum(Low)];
     }
   return(result);
  }
 

ウラジミール もっと普遍的なものだと思います。

//+------------------------------------------------------------------+
//| Получим Lowest для заданного промежутка                          |
//+------------------------------------------------------------------+
double iLowest(
               string           symbol,          // символ
               int              timeframe,       // период
               int              count,           // число элементов
               int              start            // индекс
               )
  {
   double Low[];
   double result=-1;
   ArraySetAsSeries(Low,true);
   int copied=CopyLow(symbol,timeframe,start,count,Low);
   if(copied==start)
     {
      result=Low[ArrayMinimum(Low)];
     }
   return(result);
  }
 
からの機能の完全アナログですが、4つの
//+------------------------------------------------------------------+
//| Получим Lowest для заданного промежутка                          |
//+------------------------------------------------------------------+
double iLowest(
               string           symbol,          // символ
               int              timeframe,       // период
               int              type,            // идентификатор таймсерии
               int              count,           // число элементов
               int              start            // индекс
               )
  {
   double Low[];
   int copied=0.0;
   double result=-1;
   ArraySetAsSeries(Low,true);
   if(type==PRICE_CLOSE)copied=CopyClose(symbol,timeframe,start,count,Low);
   if(type==PRICE_OPEN)copied=CopyOpen(symbol,timeframe,start,count,Low);
   if(type==PRICE_HIGH)copied=CopyHigh(symbol,timeframe,start,count,Low);
   if(type==PRICE_LOW)copied=CopyLow(symbol,timeframe,start,count,Low);
   if(copied==start)
     {
      result=Low[ArrayMinimum(Low)];
     }
   return(result);
  }
//+------------------------------------------------------------------+
...
 
Vladimir Karputov:

どこで見るの?関数の中に配列を入れる。変数lを"-1 "で初期化する。一般的に、Stylizerを 使用してください - あなたのコードは読みにくいです。また、エラーがあったとしても、とにかく何かを返します。これはまずい。

ありがとうございます!!!

 
EAに標準的な トレーリングストップクラスを追加する方法がわかりません。
 
Kirill Andreev:
EAに標準的な トレーリングストップクラスを追加する方法がわかりません。
例\゙Experts゙Examples્ Sample.mq5
 
Vladimir Karputov:
例\゙Experts゙Examples્ Sample.mq5
うまくいかないものですね。
理由: