Discussão do artigo "Crie o seu próprio robô de negociação em 6 passos!" - página 2

 
bivmail:

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?


ENUM_MA_METHOD l_array1_select_method[2];
l_array1_select_method[0]=MethodFast();
l_array1_select_method[1]=MethodSlow();
 

Sim. A segunda maneira também não funcionou muito bem:

ele tropeça

1)'=' - l-value required //...Search(l_array1_select_method_n2.At(i_array1_n2))=-1)

2) 'At' - o parâmetro para EnumToString deve ser uma enumeração //...EnumToString(l_array1_select_method_n2.At(i_array1_n2)));

expressão não booleana

#include <Arrays\ArrayInt.mqh>
   CArrayInt l_array1_select_method_n2;
   l_array1_select_method_n2.Add(m_MethodFast);
   l_array1_select_method_n2.Add(m_MethodSlow);
   //int total_array1_n2=l_array1_select_method_n2.Total()-1;// ArraySize(l_array1_select_method_n2);

   CArrayInt l_array2_enum_ma_method_n2;
   l_array2_enum_ma_method_n2.Add(MODE_SMA);
   l_array2_enum_ma_method_n2.Add(MODE_EMA);
   l_array2_enum_ma_method_n2.Add(MODE_SMMA);
   l_array2_enum_ma_method_n2.Add(MODE_LWMA);

   bool YesErrorsFlag_n2=false;
   for(int i_array1_n2=0;i_array1_n2<l_array1_select_method_n2.Total()-1;i_array1_n2++)
     {
      if(l_array2_enum_ma_method_n2.Search(l_array1_select_method_n2.At(i_array1_n2))=-1)
        {
         YesErrorsFlag_n2=true;
         PrintFormat("Tipo de suavização inválido %s média móvel!",EnumToString(l_array1_select_method_n2.At(i_array1_n2)));
        }
     }

   if(YesErrorsFlag_n2)
     {
      return(false);
     }

Agora, isso não tem nenhum propósito prático. Vamos deixá-la como está no exemplo...

 
bivmail:

Sim. A segunda maneira também não funcionou muito bem:

ele tropeça

1)'=' - l-value required //...Search(l_array1_select_method_n2.At(i_array1_n2))=-1)

2) 'At' - o parâmetro para EnumToString deve ser uma enumeração //...EnumToString(l_array1_select_method_n2.At(i_array1_n2)));

expressão não booleana

Agora, isso não tem nenhum propósito prático. Vamos deixá-la como está no exemplo....

Vamos anexar o código adequado para compilação (porque os telepatas são tediosos).
 

Olá, estou com o seguinte problema.

Realizei todas as etapas de acordo com as instruções até o final. Compilei o EA e tentei testá-lo - nenhuma negociação ocorreu durante todo o ano do teste e ele apresenta um erro - genetic pass (nn, sequence number) tested with error "cannot initialise expert".

Tentei compilar o Expert Advisor a partir do sinal ma_cross.mqh, que veio com o artigo, e ele apresentou o mesmo erro. E, por fim, tentei usar o Expert Advisor pronto que veio com o artigo e, novamente, o mesmo erro!!! Qual é o problema, você pode me dizer?


 
Tente recompilar o indicador personalizado fornecido "Custom Moving Average.mq5". Se a versão do arquivo Custom Moving Average.ex5 não coincidir com a versão atual do compilador, o identificador do indicador não será criado durante a inicialização do Expert Advisor gerado. Parece que esse é o seu caso.
Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

Obrigado por sua ajuda, recompilei, mas o problema continua. Além disso, quero esclarecer que baixei o metatrader há uma semana do site oficial do metatrader, portanto, duvido que algo tenha tido tempo de ficar desatualizado.

Além disso, tentei testar esse Expert Advisor em dois computadores diferentes.

 
danielalmaty:

Obrigado por sua ajuda, recompilei, mas o problema continua. Além disso, quero esclarecer que baixei o metatrader há uma semana do site oficial do metatrader, portanto, duvido que algo tenha tido tempo de ficar desatualizado.

Além disso, tentei testar esse Expert Advisor em dois computadores diferentes.

Você deve tentar executar um único teste (não otimização). O registro conterá informações mais detalhadas sobre o motivo da não inicialização do Expert Advisor.
 

Tentei executar um único teste sem otimização, sem erros, tudo correu bem, mas não foi feita uma única negociação no teste durante todo o período.

 
danielalmaty:

Tentei executar um único teste sem otimização, sem erros, tudo correu bem, mas não foi feita uma única negociação no teste durante todo o período.

Você pode mostrar as configurações do Expert Advisor e me dizer em qual servidor de negociação você executou o teste? Você tem uma conta ativa?
 

Início dos testes no servidor MIGBank-Demo.

As configurações do Expert Advisor são as seguintes

//+------------------------------------------------------------------+
//| Entradas|
//+------------------------------------------------------------------+
//--- entradas para especialista
input string         Expert_Title             ="ssssa";  // Nome do documento
ulong                Expert_MagicNumber       =847;      // 
bool                 Expert_EveryTick         =false;    // 
//--- entradas para o sinal principal
input int            Signal_ThresholdOpen     =10;       // Valor do limiar do sinal a ser aberto [0...100]
input int            Signal_ThresholdClose    =10;       // Valor do limite do sinal para fechar [0...100]
input double         Signal_PriceLevel        =0.0;      // Nível de preço para executar uma transação
input double         Signal_StopLevel         =50.0;     // Nível de stop loss (em pontos)
input double         Signal_TakeLevel         =50.0;     // Nível de Take Profit (em pontos)
input int            Signal_Expiration        =4;        // Expiração de ordens pendentes (em barras)
input int            Signal_MaCross_FastPeriod=13;       // My_MA_Cross(13,MODE_SMA,21,...) Período da MA rápida
input ENUM_MA_METHOD Signal_MaCross_FastMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) Método de MA rápida
input int            Signal_MaCross_SlowPeriod=21;       // My_MA_Cross(13,MODE_SMA,21,...) Período da MA lenta
input ENUM_MA_METHOD Signal_MaCross_SlowMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) Método de MA lento
input double         Signal_MaCross_Weight    =1.0;      // My_MA_Cross(13,MODE_SMA,21,...) Peso [0...1.0]
//--- insumos para dinheiro
input double         Money_FixLot_Percent     =10.0;     // Porcentagem.
input double         Money_FixLot_Lots        =0.1;      // Volume fixo

Como eu disse, tentei executar o Expert Advisor que veio com o artigo e o resultado foi o mesmo. Portanto, você pode ver as configurações apenas baixando o arquivo do artigo.