Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 566

 

Ciao a tutti!

Per favore, consigliatemi una possibile soluzione al problema.

Ci sono 2 o 3 o più indicatori che funzionano. Ognuno ha una linea: Commento(" L'indicatore 1 sta funzionando."); il successivo Commento(" L'indicatore 2 sta funzionando."); ecc. rispettivamente.

Come, forse con la traduzione "intelligente" del carrello, ottenere una visione dell'angolo superiore sinistro dello schermo (l'iscrizione successiva non sovrascrive la precedente in un periodo di almeno 1 tick):

L'indicatore 1 funziona.

L'indicatore 2 funziona.

Il LED 3 funziona.

ecc.

 

Come posso dichiarare il mio criterio di ottimizzazione in 610 build, sul mio vecchio EA?

L'Expert Advisor è in esecuzione sulla build 610.

Per esempio, su MQL5 il codice è il seguente:

double OnTester()
{
double prof=0.0;
prof=TesterStatistics(STAT_PROFIT);

  return(prof);
}

Se lo metto su Expert Advisor prima che parta, la colonna Custom non appare.

E la seconda domanda: i vecchi EA mostrano un messaggio giallo durante la compilazione: la funzione deve restituire un valore.

Linea di esempio.

if(Work==false){Alert("Критическая ошибка. Эксперт не работает.");return;}
 
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

//--- параметры для записи данных в файл
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
string             InpFileName="";
int t=0;
int file_handle=-2;
double mass[];
int OnInit()
  {
   Comment("Start");
   InpFileName=StringConcatenate(WindowExpertName(),".csv");      // Имя файла  
 
   ResetLastError();
   file_handle=FileOpen(WindowExpertName()+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_CSV);   
   return(INIT_SUCCEEDED);
  }
void OnTick()
  {
   Comment(t);
   if(file_handle!=INVALID_HANDLE)
     {
      t++;
      ArrayResize(mass,t+1,10000);
      mass[t]=Ask;
      //--- запишем время сигналов и их значения в файл
      for(int i=0; i<ArraySize(mass); i++)
       FileWrite(file_handle,mass[t]);
      //--- закрываем файл
      FileClose(file_handle);
     }
   else
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",InpFileName,GetLastError());
  }
//+------------------------------------------------------------------+

Non riesco a capire come scrivere alla riga successiva...

Sto cercando di scrivere ogni citazione su una nuova riga e non funziona ....

 

Sto testando un EA con un indicatore personalizzato. A volte gli scambi sono aperti in conformità con le condizioni, e altre volte non è chiaro su quale principio. Avvio la visualizzazione, l'indicatore è disegnato come dovrebbe essere, ma gli accordi non sempre coincidono con l'indicatore. Ho provato a controllare le aree problematiche con gli avvisi, ma anche l'indicatore nell'Expert Advisor mostra degli zeri. Non capisco quale sia il problema, se l'indicatore è disegnato correttamente durante il test, dove sono i valori dell'indicatore passati all'EA?

Il codice è nell'Expert Advisor:
double line=iCustom(NULL,0,"Ttest3",Period_MA_1,p2,p3,p4,1,1);

if (line >0){Opn_B=true;}
if (line <=0){Cls_B=true;}
 
VOLDEMAR:

Non riesco a capire come scrivere alla riga successiva...

Sto cercando di scrivere ogni citazione su una nuova riga e non funziona ....


FileSeek
 
Forexman77:

Sto testando un EA con un indicatore personalizzato. A volte gli scambi sono aperti in conformità con le condizioni, e altre volte non è chiaro su quale principio. Avvio la visualizzazione, l'indicatore è disegnato come dovrebbe essere, ma gli accordi non sempre coincidono con l'indicatore. Ho provato a controllare le aree problematiche con gli avvisi, ma anche l'indicatore nell'Expert Advisor mostra degli zeri. Non capisco quale sia il problema, se l'indicatore viene disegnato correttamente durante il test, dove vengono passati i valori dell'indicatore all'Expert Advisor?

Il codice è nell'Expert Advisor:

forse il problema è nell'EA?
 
Vladon:

forse il problema è con il consulente?
Sinceramente non lo so nemmeno io. Eseguo un singolo indicatore di test visivo sopra lo zero, in una percentuale di sette, si apre un trade, nel resto no.
 

Si è verificato un errore che non capisco:

'li_cnt' - undeclared identifier

nella linea:

    return (li_cnt);

questa linea è nella funzione:

// 1.9 Инициализация рабочего массива. ====================================================================================================
int fInit_ArrayINT (int& fia_INT[],                                              // Инициализируемый массив
                    string fs_List,                                              // Инициализируемые значения в строке
                    int fi_Range,                                                // Размер массива
                    double fd_Factor = 1.0,                                      // множитель
                    string fs_NameArray = "",                                    // имя возвращаемого массива
                    string fs_Delimiter = ",")                                   // Разделитель значений в строке
{
//----
    //---- Ищем в строке разделитель - признак наличия в строке > 1 параметра
    if (StringFind (fs_List, fs_Delimiter) == -1) return (1);
    else
    {
        string lsa_TMP[];
        int li_cnt = fGet_StrArrayFromLine (fs_List, lsa_TMP, ",");
  
        if (fi_Range > 0)
        {
            if (li_cnt != fi_Range)
            {
                Print (fs_NameArray, ": не соотвествие в размерности массива !!!");
                li_cnt = fi_Range;
            }
        }
        fCreat_StrToInt (lsa_TMP, fia_INT, li_cnt, fd_Factor, fs_NameArray);
    }
//----
    return (li_cnt);
}
La variabile li_cnt è dichiarata come visto. Il compilatore giura che non è dichiarato. Cosa significa questo?
 
hoz:

Si è verificato un errore che non capisco:

nella linea:

questa linea è nella funzione:

La variabile li_cnt è dichiarata come visto. Il compilatore giura che non è dichiarato. Cosa significa questo?


Perché la vostra variabile è dichiarata dentro if else
 
hoz:

Si è verificato un errore che non capisco:

nella linea:

questa linea è nella funzione:

La variabile li_cnt è dichiarata come visto. Il compilatore giura che non è dichiarato. Cosa significa questo?

// 1.9 Инициализация рабочего массива. ====================================================================================================
int fInit_ArrayINT (int& fia_INT[],                                              // Инициализируемый массив
                    string fs_List,                                              // Инициализируемые значения в строке
                    int fi_Range,                                                // Размер массива
                    double fd_Factor = 1.0,                                      // множитель
                    string fs_NameArray = "",                                    // имя возвращаемого массива
                    string fs_Delimiter = ",")                                   // Разделитель значений в строке
{
//----
int li_cnt=0;
    //---- Ищем в строке разделитель - признак наличия в строке > 1 параметра
    if (StringFind (fs_List, fs_Delimiter) == -1) return (1);
    else
    {
        string lsa_TMP[];
        li_cnt = fGet_StrArrayFromLine (fs_List, lsa_TMP, ",");
  
        if (fi_Range > 0)
        {
            if (li_cnt != fi_Range)
            {
                Print (fs_NameArray, ": не соотвествие в размерности массива !!!");
                li_cnt = fi_Range;
            }
        }
        fCreat_StrToInt (lsa_TMP, fia_INT, li_cnt, fd_Factor, fs_NameArray);
    }
//----
    return (li_cnt);
}