utilizacao de uma biblioteca

 

como eu utilizo essa biblioteca em um expert, originalmente ele utiliza os métodos padrões de negociações do  mql5, mais gostaria de utilizar os meus com os sinais  dessa bilioteca 

#include "ACandlePatterns.mqh"
// wizard description start
//+------------------------------------------------------------------+
//| Description of the class                                         |
//| Title=Signals based on Bullish/Bearish Meeting Lines             |
//| confirmed by Stochastic                                          |
//| Type=SignalAdvanced                                              |
//| Name=CML_Stoch                                                   |
//| Class=CML_Stoch                                                  |
//| Page=                                                            |
//| Parameter=StochPeriodK,int,47                                    |
//| Parameter=StochPeriodD,int,9                                     |
//| Parameter=StochPeriodSlow,int,13                                 |
//| Parameter=StochApplied,ENUM_STO_PRICE,STO_LOWHIGH                |
//| Parameter=MAPeriod,int,5                                         |
//+------------------------------------------------------------------+
// wizard description end
//+------------------------------------------------------------------+
//| CML_Stoch Class.                                                 |
//| Purpose: Trading signals class, based on                         |
//| the "Bullish/Bearish Meeting Lines"                              |
//| Japanese Candlestick Patterns                                    |
//| with confirmation by Stochastic indicator                        |
//| Derived from CCandlePattern class.                               |
//+------------------------------------------------------------------+
class CML_Stoch : public CCandlePattern
  {
protected:
   CiCustom          m_mci;            // objeto indicador "MyCustomIndicator"
   //--- parâmetros ajustáveis
   int               m_period_fast;    // "fast EMA period"
   int               m_period_slow;    // "slow EMA period"
   int               m_period_signal;  // "difference averaging period"
   ENUM_APPLIED_PRICE m_applied;       // "price type"
   //--- "pesos" dos modelos de mercado (0-100)
   int               m_pattern_0;      // modelo 0 "o oscilador requer direção"
   int               m_pattern_1;      // modelo 1 "o indicador está ganhando força - compre; o indicador está caindo - venda"

public:
                        CML_Stoch(void);
                    ~CML_Stoch(void);
   //--- methods of setting adjustable parameters
   void              PeriodFast(int value)               { m_period_fast=value;           }
   void              PeriodSlow(int value)               { m_period_slow=value;           }
   void              PeriodSignal(int value)             { m_period_signal=value;         }
   void              Applied(ENUM_APPLIED_PRICE value)   { m_applied=value;               }
   //--- métodos de ajuste de "pesos" de modelos de mercado
   void              Pattern_0(int value)                { m_pattern_0=value;        }
   void              Pattern_1(int value)                { m_pattern_1=value;        }
   //--- initialization of indicators
   virtual bool      ValidationSettings();
   virtual bool      InitIndicators(CIndicators *indicators);
   //--- methods of checking if the market models are formed
   virtual int       LongCondition();
   virtual int       ShortCondition();

protected:
     //--- método de inicialização do indicador
   bool              InitMyCustomIndicator(CIndicators *indicators);
   //--- métodos de obtenção de dados
   //- obtendo o valor do indicador
   double            Main(int ind) { return(m_mci.GetData(0,ind));      }
   //- obtendo o valor da linha de sinal
   double            Signal(int ind) { return(m_mci.GetData(1,ind));    }
   //- diferença entre dois valores indicadores sucessivos
   double            DiffMain(int ind) { return(Main(ind)-Main(ind+1)); }
   int               StateMain(int ind);
   double            State(int ind) { return(Main(ind)-Signal(ind)); }
   //- preparação de dados para a pesquisa
   bool              ExtState(int ind);
   //- pesquisando o modelo de mercado com os parâmetros especificados
   bool              CompareMaps(int map,int count,bool minimax=false,int start=0);
  };
//+------------------------------------------------------------------+
//| CML_Stoch class constructor.                                  |
//| INPUT:  no.                                                      |
//| OUTPUT: no.                                                      |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Construtor                                                      |
//+------------------------------------------------------------------+
CML_Stoch::CML_Stoch(void) : m_period_fast(12),
                                           m_period_slow(24),
                                           m_period_signal(9),
                                           m_applied(PRICE_CLOSE),
                                           m_pattern_0(10),
                                           m_pattern_1(50)
  {
//--- inicialização de dados protegidos
   m_used_series=USE_SERIES_HIGH+USE_SERIES_LOW;
  }
//+------------------------------------------------------------------+
//| Destruidor                                                       |
//+------------------------------------------------------------------+
CML_Stoch::~CML_Stoch(void)
  {
  }

//+------------------------------------------------------------------+
//| Validation settings.                                             |
//| INPUT:  no.                                                      |
//| OUTPUT: true-if settings are correct, false otherwise.           |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
bool CML_Stoch::ValidationSettings()
  {
   if(!CCandlePattern::ValidationSettings()) return(false);
//--- verificações de dados iniciais
   if(m_period_fast>=m_period_slow)
     {
      printf(__FUNCTION__+": slow period must be greater than fast period");
      return(false);
     }//--- ok
   return(true);
  }
//+------------------------------------------------------------------+
//| Create indicators.                                               |
//| INPUT:  indicators -pointer of indicator collection.             |
//| OUTPUT: true-if successful, false otherwise.                     |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
bool CML_Stoch::InitIndicators(CIndicators *indicators)
  {
//--- check
   if(indicators==NULL) return(false);
   if(!CCandlePattern::InitIndicators(indicators)) return(false);
//--- criação e inicialização do indicador personalizado
   if(!InitMyCustomIndicator(indicators))
      return(false);
//--- ok
   return(true);
  }
//+------------------------------------------------------------------+
//| Create Stochastic indicators.                                    |
//| INPUT:  indicators -pointer of indicator collection.             |
//| OUTPUT: true-if successful, false otherwise.                     |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
bool CML_Stoch::InitMyCustomIndicator(CIndicators *indicators)
  {
//--- adicionar um objeto à coleção
   if(!indicators.Add(GetPointer(m_mci)))
     {
      printf(__FUNCTION__+": error adding object");
      return(false);
     }
//--- definir parâmetros do indicador
   MqlParam parameters[4];
//---
   parameters[0].type=TYPE_STRING;
   parameters[0].string_value="Examples\\MACD.ex5";
   parameters[1].type=TYPE_INT;
   parameters[1].integer_value=m_period_fast;
   parameters[2].type=TYPE_INT;
   parameters[2].integer_value=m_period_slow;
   parameters[3].type=TYPE_INT;
   parameters[3].integer_value=m_period_signal;
//--- inicialização do objeto
   if(!m_mci.Create(m_symbol.Name(),0,IND_CUSTOM,4,parameters))
     {
      printf(__FUNCTION__+": error initializing object");
      return(false);
     }
//--- número de buffers
   if(!m_mci.NumBuffers(4)) return(false);
//--- ok
   return(true);
  }
//+------------------------------------------------------------------+
//| "Voting" that price will grow.                                   |
//| INPUT:  no.                                                      |
//| OUTPUT: number of "votes" that price will grow.                  |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
int CML_Stoch::LongCondition(void)
  {
   int result=0;
   int idx   =StartIndex();
//--- verifique a direção da linha principal
   if(  DiffMain(idx)>0.0)
     {
      //--- a linha principal vai para cima, o que confirma a possibilidade de crescimento do preço
      if(IS_PATTERN_USAGE(0))
         result=m_pattern_0;      // sinal de "confirmação" número 0
      //--- se for usado o modelo 1, procure um reverso da linha principal
      if(IS_PATTERN_USAGE(1) && DiffMain(idx+1)<0.0)
         result=m_pattern_1;      // sinal número 1
     }
//---retornar o resultado
   return(result);
  }
//+------------------------------------------------------------------+
//| "Voting" that price will fall.                                   |
//| INPUT:  no.                                                      |
//| OUTPUT: number of "votes" that price will fall.                  |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
int CML_Stoch::ShortCondition(void)
  {
   int result=0;
   int idx   =StartIndex();
//--- verifique a direção da linha principal
   if( DiffMain(idx)<0.0)
     {
            //--- a linha principal vai para baixo, o que confirma a possibilidade de queda de preço
      if(IS_PATTERN_USAGE(0))
         result=m_pattern_0;      // sinal de "confirmação" número 0
      //--- se for usado o modelo 1, procure um reverso da linha principal
      if(IS_PATTERN_USAGE(1) && DiffMain(idx+1)>0.0)
         result=m_pattern_1;      // sinal número 1
     }
//--- retornar o resultado
   return(result);
  }
//+------------------------------------------------------------------+
 
lipe ramos:

como eu utilizo essa biblioteca em um expert, originalmente ele utiliza os métodos padrões de negociações do  mql5, mais gostaria de utilizar os meus com os sinais  dessa bilioteca 

Basicamente vai criar uma variavel CIndicators e uma dessa classe CML_Stochs, dai tu inicializa chamando InitIndicators passando a variavel CIndicators como GetPointer(variavel) e dai depois de tempos em tempos tu chama as duas funcoes pra testar as condições de long e short.Isso que me parece, mas tu pode ler sobre a CExpertSignal também e ver como que funciona por si.
 
Ricardo Rodrigues Lucca #:
Basicamente vai criar uma variavel CIndicators e uma dessa classe CML_Stochs, dai tu inicializa chamando InitIndicators passando a variavel CIndicators como GetPointer(variavel) e dai depois de tempos em tempos tu chama as duas funcoes pra testar as condições de long e short.Isso que me parece, mas tu pode ler sobre a CExpertSignal também e ver como que funciona pO

Obrigado pela resposta. Vou dar uma estudada sobre agradeço.

Razão: