Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 709

 
Vladimir Karputov:
А кто такой в Вашем коде Low?
Low - Массив содержит цены Low от 0 до index
 
Top2n:
Low - Массив содержит цены Low от 0 до do

А где это видно? Массив поставьте внутрь Вашей функции. Переменную l инициализируйте "-1". И вообще, пользуйтесь, пожалуйста Стилизатором - Ваш код трудно читать. Также Вы возвращаете в любом случае что-то, даже если была ошибка. Это не есть хлрошо.

 Добавлено: а зачем Вы ТАК сравниваете:

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);
  }
 
а так полный аналог функции из четверки
//+------------------------------------------------------------------+
//| Получим 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". И вообще, пользуйтесь, пожалуйста Стилизатором - Ваш код трудно читать. Также Вы возвращаете в любом случае что-то, даже если была ошибка. Это не есть хлрошо.

Спасибо!!!

 
Не могу понять как добавить стандартный класс трейлинг стопа к эксперту , покажите пример если не затруднит. 
 
Kirill Andreev:
Не могу понять как добавить стандартный класс трейлинг стопа к эксперту , покажите пример если не затруднит. 
Пример: \MQL5\Experts\Examples\MACD\MACD Sample.mq5
 
Vladimir Karputov:
Пример: \MQL5\Experts\Examples\MACD\MACD Sample.mq5
 не получается, печально
 
Kirill Andreev:
 не получается, печально
Методы ShortModified и LongModified. 
 
Vladimir Karputov:
Методы ShortModified и LongModified. 
class CSampleExpert
  {
protected:
   double            m_adjusted_point;             // point value adjusted for 3 or 5 points
   CTrade            m_trade;                      // trading object
   CSymbolInfo       m_symbol;                     // symbol info object
   CPositionInfo     m_position;                   // trade position object
   CAccountInfo      m_account;                    // account info wrapper
   //--- indicators
   int               m_handle_macd;                // MACD indicator handle
   int               m_handle_ema;                 // moving average indicator handle
   //--- indicator buffers
   double            m_buff_MACD_main[];           // MACD indicator main buffer
   double            m_buff_MACD_signal[];         // MACD indicator signal buffer
   double            m_buff_EMA[];                 // EMA indicator buffer
   //--- indicator data for processing
   double            m_macd_current;
   double            m_macd_previous;
   double            m_signal_current;
   double            m_signal_previous;
   double            m_ema_current;
   double            m_ema_previous;
   //---
   double            m_macd_open_level;
   double            m_macd_close_level;
   double            m_traling_stop;
   double            m_take_profit;

public:
                     CSampleExpert(void);
                    ~CSampleExpert(void);
   bool              Init(void);
   void              Deinit(void);
   bool              Processing(void);

protected:
   bool              InitCheckParameters(const int digits_adjust);
   bool              InitIndicators(void);
   bool              LongClosed(void);
   bool              ShortClosed(void);
   bool              LongModified(void);
   bool              ShortModified(void);
   bool              LongOpened(void);
   bool              ShortOpened(void);
  };

Они внесены в класс. Мне нужно их добавить как отдельеая функция .... ? 

Не догоняю как мне их оформить. Пробовал найти примеры добавление существующих классов трейлинга, не нашел не смог добавить.