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

 
igorbel:

input datetime test                                =0;

Compilare. Con una data zero di 1970.01.01, non è possibile impostare l'ora su 00, 01 o 02 nelle impostazioni.

Ecco un esempio di inserimento del tempo nei parametri di input

 
int    total=OrdersTotal();      
for(int i=0;i<total;i++)
        {
         Print("i=",i);
         if(!OrderSelect(i,SELECT_BY_POS))
           {
            Print("order not selected. Error=",GetLastError());
            continue;
           }
         if(OrderMagicNumber()!=magic_number)
           {
            Print("magic number not correct.");
            continue;
           }
         if(OrderSymbol()!=Symbol())
           {
            Print("symbol not correct.");
            continue;
           }
         if(OrderType()!=OP_SELL)
           {
            Print("order type not correct.");
            continue;
           }
         if(OrderCloseTime()>0)
           {
            Print("order close time not correct.");
            continue;
           }
         if(!OrderClose(ticket,lots,price,slippage,clrClose))
              {
               Print("order Sell with ticket=",ticket,", was not closed. Error=",GetLastError());
              }
            else
              {               
               Print("order Sell with ticket=",ticket,", was closed.");
              }
        }

Perché ricevo un errore 4051 in OrderSelect()? Il primo ordine aperto viene chiuso correttamente, il secondo ordine non viene selezionato. Errore=4051. Valore valido 2 in totale.

 
igorbel:

Perché ricevo un errore 4051 in OrderSelect()? Il primo ordine aperto viene chiuso correttamente, il secondo ordine non viene selezionato. Errore=4051. Valore valido 2 in totale.

Quando si cancella e si chiude, il ciclo dovrebbe essere invertito:

for(int i=total-1;i>=0;i--)
 
igorbel:

Un insetto meraviglioso o altro.

Aggiungendo gli ingressi:

input datetime test                                =0;

Compilare. Con la data 1970.01.01 zero, non è possibile impostare l'ora su 00, 01 o 02 nelle impostazioni.

la variabile di ingresso non può essere cambiata nell'EA
variabile esterna - sì

 
Taras Slobodyanik:

La variabile di ingresso non può essere cambiata nell'EA
la variabile extern - è possibile


Non nel codice EA. Nella finestra dei parametri di input, quando attacchi l'EA al grafico.

 
Artyom Trishkin:

Il ciclo dovrebbe essere invertito quando si cancella e si chiude:


grazie

 

Buon pomeriggio, per favore aiutatemi con queste domande (2):

1. C'è un tale EA, salvare i risultati dei test dalla storia in un file excel. Per esempio, ho testato un EA e voglio ottenere i parametri dell'EA, il profitto, il tipo di commercio, il risultato, i giorni della settimana e così via.

Vorrei anche sapere come fare un'analisi dettagliata o condividere la mia esperienza su come testare un EA e vedere se vale la pena o se è una schifezza totale.

2. Come si passa un array o una struttura a una funzione? Cioè ho un sacco di variabili, aggiungo queste variabili a una struttura e la passo a una funzione.

Poi apro questa struttura in questa funzione e ottengo le variabili di cui ho bisogno. Questo viene fatto per evitare di "trascinare" tutti i valori delle variabili in una funzione (per comodità).

Grazie.

 
rabanik:

Buon pomeriggio, per favore aiutatemi con queste domande (2):

1. C'è un tale EA, salvare i risultati dei test dalla storia in un file excel. Per esempio, ho testato un EA e voglio ottenere i parametri dell'EA, il profitto, il tipo di commercio, il risultato, i giorni della settimana e così via.

Vorrei anche sapere come fare un'analisi dettagliata o condividere la mia esperienza su come si testa un EA e vedere se vale la pena o è una merda totale.

2. Come si passa un array o una struttura a una funzione? Cioè ho un sacco di variabili, aggiungo queste variabili a una struttura e la passo a una funzione.

Poi apro questa struttura in questa funzione e ottengo le variabili di cui ho bisogno. Questo viene fatto per evitare di "trascinare" tutti i valori delle variabili in una funzione (per comodità).

Grazie.

La risposta è qui.

//+------------------------------------------------------------------+
//| передача параметров по ссылке                                    |
//+------------------------------------------------------------------+
double SecondMethod(int &i,int &j)
  {
   double res;
//---
   i*=2;
   j/=2;
   res=i+j;
//---
   return(res);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int a=14,b=8;
   Print("a и b перед вызовом:",a," ",b);
   double d=SecondMethod(a,b);
   Print("a и b после вызова:",a," ",b);
  }
//+------------------------------------------------------------------+
//--- результат выполнения скрипта
//  a и b перед вызовом: 14 8
//  a и b после вызова: 28 4
Передача параметров - Функции - Основы языка - Справочник MQL4
Передача параметров - Функции - Основы языка - Справочник MQL4
  • docs.mql4.com
Передача параметров - Функции - Основы языка - Справочник MQL4
 

Cari signori!

Per favore, aiutatemi a capire il problema.

Ho usato un operatore switch(int err)

ha ricevuto un messaggio

int ErrorDescription()

{

Allarme("beg ErrorDescription")


interruttore(err)

{

caso 0: err="Nessun errore"; break;

caso 1: err="Nessun errore, ma risultato sconosciuto"; break;

caso 2: err="Errore generale"; break;

caso 3: err="Parametri errati";

cosa c'è, non riesci a capire dove dovrebbe essere il punto e virgola? Non è chiaro...

 
buyanov:

Cari signori!

Per favore, aiutatemi a capire il problema.

Ho usato un operatore switch(int err)

ha ricevuto un messaggio

int ErrorDescription()

{

Allarme("beg ErrorDescription")


interruttore(err)

{

caso 0: err="Nessun errore"; break;

caso 1: err="Nessun errore, ma risultato sconosciuto"; break;

caso 2: err="Errore generale"; break;

caso 3: err="Parametri errati";

cosa c'è, non riesci a capire dove dovrebbe essere il punto e virgola? Non è chiaro...

Vi siete occupati di Alert()? Dov'è ";" ?

int ErrorDescription()
  { 
   Alert("beg ErrorDescription");   // где у вас ";" ???
   switch(err)
   {    
      case 0:   err="Нет ошибок";                                                     break;
      case 1:   err="Нет ошибки, но результат неизвестен";                            break;
      case 2:   err="Общая ошибка";                                                   break;
      case 3:   err="Неправильные параметры";        
E perché dai un frammento alla funzione?