Discussione sull’articolo "Crea il Tuo Robot di Trading in 6 Passaggi!" - pagina 2

 
bivmail:

Mi stavo entusiasmando, ma non riesco a risolvere il problema (comm - ho letto del trasferimento dell'indirizzo di memoria, ma non ha funzionato nemmeno in questo modo):

Il compilatore restituisce l'errore 'm_MethodFast' - espressione costante necessaria, ' m_MethodSlow' - espressione costante necessaria

Naturalmente, queste sono domande per i non addetti ai lavori. forse dovrei porre tali domande in un altro thread, in modo da non intasare l'articolo?


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

Già. Anche il secondo modo non ha funzionato bene:

inciampa

1)'=' - valore l richiesto //...Search(l_array1_select_method_n2.At(i_array1_n2))=-1)

2) 'At' - il parametro per EnumToString deve essere un'enumerazione //...EnumToString(l_array1_select_method_n2.At(i_array1_n2));

espressione non 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 di lisciatura non valido %s media mobile!".,EnumToString(l_array1_select_method_n2.At(i_array1_n2)));
        }
     }

   if(YesErrorsFlag_n2)
     {
      return(false);
     }

Ora, questo non ha alcuno scopo pratico. Lasciamolo così com'è nell'esempio...

 
bivmail:

Già. Anche il secondo modo non ha funzionato bene:

inciampa

1)'=' - valore l richiesto //...Search(l_array1_select_method_n2.At(i_array1_n2))=-1)

2) 'At' - il parametro per EnumToString deve essere un'enumerazione //...EnumToString(l_array1_select_method_n2.At(i_array1_n2));

espressione non booleana

Ora, questo non ha alcuno scopo pratico. Lasciamolo così com'è nell'esempio....

Alleghiamo il codice adatto alla compilazione (perché i telepatici sono noiosi).
 

Salve, ho il seguente problema.

Ho eseguito tutti i passaggi secondo le istruzioni fino alla fine. Ho compilato l'EA e ho provato a testarlo - non si è verificata alcuna operazione durante tutto l'anno del test e dà un errore - passaggio genetico (nn, numero di sequenza) testato con errore "impossibile inizializzare l'esperto".

Ho provato a compilare l'Expert Advisor dal segnale ma_cross.mqh, fornito con l'articolo, ma dà lo stesso errore. Infine, ho provato a compilare l'Expert Advisor già pronto che è stato fornito con l'articolo, e di nuovo lo stesso errore!!! Qual è il problema, potete dirmelo?


 
Provare a ricompilare l'indicatore personalizzato fornito "Custom Moving Average.mq5". Se la versione del file Custom Moving Average.ex5 non coincide con la versione corrente del compilatore, l'handle dell'indicatore non verrà creato durante l'inizializzazione dell'Expert Advisor generato. Sembra che questo sia il vostro caso.
Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

Grazie per l'aiuto, ho ricompilato, ma il problema rimane. Inoltre, voglio precisare che ho scaricato metatrader una settimana fa dal sito ufficiale di metatrader, quindi dubito che qualcosa abbia avuto il tempo di diventare obsoleto.

Inoltre, ho provato a testare questo Expert Advisor da due computer diversi.

 
danielalmaty:

Grazie per l'aiuto, ho ricompilato, ma il problema rimane. Inoltre, voglio precisare che ho scaricato metatrader una settimana fa dal sito ufficiale di metatrader, quindi dubito che qualcosa abbia avuto il tempo di diventare obsoleto.

Inoltre, ho provato a testare questo Expert Advisor da due computer diversi.

Dovresti provare a eseguire un singolo test (non un'ottimizzazione). Il log conterrà informazioni più dettagliate sul motivo della mancata inizializzazione dell'Expert Advisor.
 

Ho provato a eseguire un singolo test senza ottimizzazione, senza errori, tutto va liscio, ma non è stato effettuato un solo scambio nel test per l'intero periodo.

 
danielalmaty:

Ho provato a eseguire un singolo test senza ottimizzazione, non ci sono errori, tutto va liscio, ma non è stata eseguita una sola operazione nel test durante l'intero periodo.

Puoi mostrare le impostazioni dell'Expert Advisor e dirmi su quale server di trading esegui i test? Hai un conto attivo?
 

Avvio del test sul server MIGBank-Demo.

Le impostazioni dell'Expert Advisor sono le seguenti

//+------------------------------------------------------------------+
//| Ingressi|
//+------------------------------------------------------------------+
//--- input per l'esperto
input string         Expert_Title             ="ssssa";  // Nome del documento
ulong                Expert_MagicNumber       =847;      // 
bool                 Expert_EveryTick         =false;    // 
//--- ingressi per il segnale principale
input int            Signal_ThresholdOpen     =10;       // Valore di soglia del segnale da aprire [0...100].
input int            Signal_ThresholdClose    =10;       // Valore di soglia del segnale da chiudere [0...100].
input double         Signal_PriceLevel        =0.0;      // Livello di prezzo per l'esecuzione di una transazione
input double         Signal_StopLevel         =50.0;     // Livello di stop loss (in punti)
input double         Signal_TakeLevel         =50.0;     // Livello di take profit (in punti)
input int            Signal_Expiration        =4;        // Scadenza degli ordini pendenti (in barre)
input int            Signal_MaCross_FastPeriod=13;       // My_MA_Cross(13,MODE_SMA,21,...) Periodo di MA veloce
input ENUM_MA_METHOD Signal_MaCross_FastMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) Metodo di MA veloce
input int            Signal_MaCross_SlowPeriod=21;       // My_MA_Cross(13,MODE_SMA,21,...) Periodo della MA lenta
input ENUM_MA_METHOD Signal_MaCross_SlowMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) Metodo di MA lento
input double         Signal_MaCross_Weight    =1.0;      // My_MA_Cross(13,MODE_SMA,21,...) Peso [0...1.0]
//--- input in cambio di denaro
input double         Money_FixLot_Percent     =10.0;     // Percentuale.
input double         Money_FixLot_Lots        =0.1;      // Volume fisso

Come ho detto, ho provato a eseguire l'Expert Advisor fornito con l'articolo e il risultato è stato lo stesso. Quindi è possibile vedere le impostazioni semplicemente scaricando il file dell'articolo.