Muito obrigado. Muito informativo.
Tento entender o que esse código significa neste artigo: por que temos um * perto do CINDICATOBUFFER e depois usamos at.
((CIndicatorBuffer*)At(0)).Name("ZIGZAG");
((CIndicatorBuffer*)At(1)).Name("HIGH");
((CIndicatorBuffer*)At(2)).Name("LOW");
Gostaria de receber uma explicação detalhada
Obrigado
Eu tento entender o que esse código significa neste artigo, por que temos um * perto do CINDICATOBUFFER e depois usamos at.
((CIndicatorBuffer*)At(0)).Name("ZIGZAG");
((CIndicatorBuffer*)At(1)).Name("HIGH");
((CIndicatorBuffer*)At(2)).Name("LOW");
Gostaria de receber uma explicação detalhada
Obrigado
string
m_handle=iCustom(symbol,period,zigzag,depth,deviation_create,backstep);
Não consigo encontrar o caminho para o indicador.
Qual é a maneira correta de especificar aqui? Os indicadores que estou tentando chamar estão na pasta padrão.
O Ziguezague padrão está na pasta Examples - você precisa adicionar o nome da pasta ao caminho

2017.07.12 10:38:05.703 Proba2 (EURUSD.m,M1) cannot load custom indicator 'Examples\ZigZag'[4302]
Quem dará uma olhada no código de erro?
ERR_MARKET_NOT_SELECTED | 4302 | Símbolo não selecionado no MarketWatch |
Quem examinará o código de erro?
ERR_MARKET_NOT_SELECTED | 4302 | Símbolo não selecionado no MarketWatch |
Coloquei NULL - funciona, coloquei "EURUSD" - não funciona!!!!
bool CiZigZag::Create(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_create,const int backstep) { //--- verificar histórico if(!SetSymbolPeriod(symbol,period)) return(false); //--- criar //m_handle=iCustom(symbol,period, "Examples\\\ZigZag",depth,deviation_create,backstep); //m_handle=iCustom("EURUSD",period, "Examples\\\ZigZag",depth,deviation_create,backstep); - NÃO funciona m_handle=iCustom(NULL,period,"Examples\\ZigZag",depth,deviation_create,backstep); - работает //--- verifique o resultado if(m_handle==INVALID_HANDLE) return(false); //--- indicador criado com sucesso if(!Initialize(symbol,period,depth,deviation_create,backstep)) { //--- erro de inicialização IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); } IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); }
//+------------------------------------------------------------------+ //|| Criar o indicador "Zig Zag| //+------------------------------------------------------------------+ bool CiZigZag::Create(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_create,const int backstep) { //--- verificar histórico if(!SetSymbolPeriod(symbol,period)) return(false); //--- criar m_handle=iCustom(symbol,period,"zigzag",depth,deviation_create,backstep); //--- verifique o resultado if(m_handle==INVALID_HANDLE) return(false); //--- indicador criado com sucesso if(!Initialize(symbol,period,depth,deviation_create,backstep)) { //--- erro de inicialização IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); }
bool CiZigZag::Initialize(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_init,const int backstep) { if(CreateBuffers(symbol,period,3)) { //--- linha de status de renderização m_name ="ZigZag"; m_status="("+symbol+","+PeriodDescription()+","+ IntegerToString(depth)+","+IntegerToString(deviation_init)+","+ IntegerToString(backstep)+") H="+IntegerToString(m_handle); //--- salvar configurações m_depth=depth; m_deviation=deviation_init; m_backstep=backstep; //--- criar buffers ((CIndicatorBuffer*)At(0)).Name("ZIGZAG"); ((CIndicatorBuffer*)At(1)).Name("HIGH"); ((CIndicatorBuffer*)At(2)).Name("LOW"); //--- ok return(true); } //--- erro return(false); }
Ajude-me a entender como a direção de indexação da matriz do buffer do indicador é definida aqui, ou seja, da mesma forma que ArraySetAsSeries. A direção padrão é do presente para o passado, mas preciso fazê-la do passado para o presente. Desde ontem, estou tendo dificuldades com essa pergunta.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Estendendo a biblioteca padrão do MQL5 e reutilizando o código foi publicado:
A biblioteca padrão do MQL5 torna mais fácil a sua vida como desenvolvedor. No entanto, ela não implementa todas as necessidades de todos os desenvolvedores no mundo, então, se você achar que precisa de mais algum material de customização, você pode dar um passo a mais e estender. Este artigo o orienta através da integração do indicador técnico Zig-Zag MetaQuotes' na biblioteca padrão. Ficamos inspirados pela filosofia de design MetaQuotes' para alcançar o nosso objetivo.
Em poucas palavras, a IPA do MQL5 é destinada para que você se beneficie da reutilização, confiabilidade, flexibilidade e facilidade de manutenção do código. Isto é o que a teoria diz, mas, além de tudo isso, se você pretende continuar a avançar em MQL5 e desenvolver coisas mais sofisticadas, tais como Experts Advisors multi-moedas, em primeiro lugar você deve ser capaz de codificar no modo da biblioteca padrão, então seus aplicativos estão garantidos em uma vida bem sucedida.
Autor: Jordi Bassaganas