para continuar...
Pensei em converter as linhas deste exemplo:
if(m_method_fast!=MODE_SMA && m_method_fast!=MODE_EMA && m_method_fast!=MODE_SMMA && m_method_fast!=MODE_LWMA)
if(m_method_slow!=MODE_SMA && m_method_slow!=MODE_EMA && m_method_slow!=MODE_SMMA && m_method_slow!=MODE_LWMA)
No algoritmo:
1) duas matrizes:
a primeira contém m_method_fast e m_method_slow
o segundo contém os valores de enumeração ENUM_MA_METHOD.
2) Em um loop, pegando o valor da primeira matriz, verifique se ele é encontrado na segunda.
Você pode me dizer como implementar isso?
Entendo que é necessário conectar o CArray. Mas de que tipo?
Quem puder, por favor, escreva uma parte do código, porque coisas básicas e elementares, e com sintaxe que ainda não consigo entender.
Muito obrigado!

- www.mql5.com
para continuar...
Pensei em converter as linhas deste exemplo:
if(m_method_fast!=MODE_SMA && m_method_fast!=MODE_EMA && m_method_fast!=MODE_SMMA && m_method_fast!=MODE_LWMA)
if(m_method_slow!=MODE_SMA && m_method_slow!=MODE_EMA && m_method_slow!=MODE_SMMA && m_method_slow!=MODE_LWMA)
No algoritmo:
1) duas matrizes:
a primeira contém m_method_fast e m_method_slow
o segundo contém os valores da enumeração ENUM_MA_METHOD.
2) Em um loop, pegando o valor da primeira matriz, verifique se ele é encontrado na segunda.
Você pode me dizer como implementar isso?
Entendo que é necessário conectar o CArray. Mas de que tipo?
Quem puder, por favor, escreva uma parte do código, porque coisas básicas e elementares, e com sintaxe que ainda não consigo entender.
Obrigado!
Assim:
func(int& array1[],int& array2[]) { int total1=ArraySize(array1); int total2=ArraySize(array2); //--- for(int i=0;i<total1;i++) { for(int j=0;j<total2;j++) { if(array1[i]==array2[j]) { // encontrou } } } }
Sim, eu já cheguei a esse ponto em C++ para iniciantes :-)
Exceto pelo fato de que esse tipo de dados ENUM_MA_METHOD não existe
Como posso descobrir em que tipo de dados essa enumeração consiste? É possível fazer um loop pela própria enumeração ENUM_MA_METHOD?
Vejo duas maneiras agora:
//primeira maneira de descrever as duas matrizes ENUM_MA_METHOD l_array_enum_ma_method[3]; l_array_enum_ma_method[0]=MODE_SMA; l_array_enum_ma_method[1]=MODE_EMA; l_array_enum_ma_method[2]=MODE_SMMA; l_array_enum_ma_method[3]=MODE_LWMA; print("array size %d", ArraySize(l_array_enum_ma_method)); print("ENUM_MA_METHOD size %d", ArraySize(ENUM_MA_METHOD)); ENUM_MA_METHOD l_array_select_method[1]; l_array_select_method[0]=m_MethodFast; l_array_select_method[1]=m_MethodSlow; //mais de acordo com o esquema /segunda maneira, conecte a biblioteca //#include <Arrays\ArrayInt.mqh> CArrayInt *l_array_enum_ma_method=new CArrayInt; l_array_enum_ma_method[0]=MODE_SMA; l_array_enum_ma_method[1]=MODE_EMA; l_array_enum_ma_method[2]=MODE_SMMA; l_array_enum_ma_method[3]=MODE_LWMA; l_array_enum_ma_method.Sort(); //--- elemento de pesquisa if(l_array_enum_ma_method.Search(m_MethodFast)!=-1) printf("Element found"); else printf("Element not found"); //--- excluir matriz delete l_array_enum_ma_method;
Na segunda maneira, você precisa conectar uma biblioteca de um tipo específico, e que tipo é ENUM_MA_METHOD?
hmm... estranho, eu cliquei em responder e acabou sendo uma nova postagem....
Sim, eu já cheguei a esse ponto em C++ para iniciantes :-)
Exceto pelo fato de que esse tipo de dados ENUM_MA_METHOD não existe
Como posso descobrir em que tipo de dados essa enumeração consiste? É possível fazer um loop pela própria enumeração ENUM_MA_METHOD?
Vejo duas maneiras agora:
Na segunda maneira, você precisa conectar uma biblioteca de um tipo específico, e que tipo é ENUM_MA_METHOD?
hmm... estranho, eu cliquei em responder e acabou sendo uma nova postagem....
Primeira maneira:
ENUM_MA_METHOD l_array_enum_ma_method[]={MODE_SMA,MODE_EMA,MODE_SMMA,MODE_LWMA}; //--- mais abaixo na linha
Segunda forma:
#include <Arrays\ArrayInt.mqh> CArrayInt l_array_enum_ma_method; //--- l_array_enum_ma_method.Add(MODE_SMA); l_array_enum_ma_method.Add(MODE_EMA); l_array_enum_ma_method.Add(MODE_SMMA); l_array_enum_ma_method.Add(MODE_LWMA); //--- mais abaixo na linha
Não consigo entender por que são necessárias tantas etapas?
oops... muito obrigado, é isso que estou tentando fazer... off.
No primeiro caso, já tinha visto essa forma de registro, mas ainda não tinha percebido o que eu precisava,
e, no segundo caso, fiquei confuso com ArrayInt. Pensei que, como Int, isso significava que apenas o valor numérico era armazenado, mas ,
parece que o compilador converte MODE_SMA em um número e, ao obter o valor de volta, será necessário realizar uma conversão implícita (usando parênteses) para o tipo(ENUM_MA_METHOD), ou seja, algo semelhante ao seguinte.
ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
P.S. Na terceira seção 3. Métodos para definir parâmetros, devemos apagar linhas declaradas prematuramente, acho que
:
CiCustom m_fast_ma; // indicador como um objeto CiCustom m_slow_ma; // indicador como um objeto
P.S. Na terceira seção 3. Métodos para definir parâmetros, acho que devemos apagar as linhas declaradas prematuramente:
Eu estava ficando animado, mas não consigo contornar isso (comm - li sobre transferência de endereço de memória, mas também não funcionou dessa forma):
O compilador retorna o erro 'm_MethodFast' - expressão constante necessária, ' m_MethodSlow' - expressão constante necessária
É claro que essas são perguntas para leigos. Talvez eu devesse fazer essas perguntas em outro tópico, para não atrapalhar o artigo?
//primeira maneira de descrever as duas matrizes //int *Finger_m_MethodFast; //int *Finger_m_MethodSlow; //Finger_m_MethodFast=&m_MethodFast; //Finger_m_MethodFast=&m_MethodSlow; // int l_array1_select_method[]={Finger_m_MethodFast,Finger_m_MethodFast}; ENUM_MA_METHOD l_array1_select_method[]={m_MethodFast,m_MethodSlow}; ENUM_MA_METHOD l_array2_enum_ma_method[]={MODE_SMA,MODE_EMA,MODE_SMMA,MODE_LWMA}; int total_array1=ArraySize(l_array1_select_method); int total_array2=ArraySize(l_array2_enum_ma_method); bool NoErrorsFlag=false; for(int i_array1=0;i_array1<total_array1;i_array1++) { for(int i_array2=0;i_array2<total_array2;i_array2++) { if(l_array1_select_method[i_array1]=l_array2_enum_ma_method[i_array2]) { NoErrorsFlag=true; } } if(!NoErrorsFlag) { PrintFormat("Tipo de suavização inválido %s média móvel!",EnumToString(l_array1_select_method[i_array1])); } } if(!NoErrorsFlag) { return(false); }

- 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 Crie o seu próprio robô de negociação em 6 passos! foi publicado:
Se você não sabe como as classes de negócio são construídas, e se assusta com as palavras "Programação orientada a objeto", então, este artigo é para você. Na realidade, você não precisa saber os detalhes para escrever seu próprio módulo de sinais de negociação. Apenas siga algumas regras simples. Todo o resto será feito pelo Assistente MQL5, e você terá um robô de negócio pronto para uso!
Autor: MetaQuotes Software Corp.