Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 240

 
Санек:

1) - Questa parte apre il file 11112222.txt per leggere i dati da esso:

//=================================BUY=========================================
    int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения

2) - Poi viene la condizione se handle2>0


  if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY
   {

3) - Questa è la parte che non capisco:


       Print(FileReadString(handle2));

4) - Questa parte chiude il file:


       FileClose(handle2); // закрытие текстового файла

5) - Poiché la condizione handle2>0 è soddisfatta, cioè il file 11112222.txt contiene 1, viene aperto un ordine di acquisto:

  //ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ      
                    if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на покупку
                     {
                        OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
                        FileClose(handle2); // закрытие текстового файла
                     }
                    else
                      Print("NE USPESHNO!!!");
                      FileClose(handle2); // закрытие текстового файла

   }
//=================================конец кода BUY=========================================

Quali parti ho confuso?

1) Apre il file, ma non legge il suo contenuto.

2) L'handle del file è SEMPRE maggiore di zero. Di conseguenza, la condizione sarà sempre valida se il file esiste, indipendentemente dal suo contenuto.

3) Questo è esattamente la lettura del contenuto del file. Anche se non capisco perché si fa la lettura della stringa, se il numero deve essere letto... Ma comunque può essere un altro problema. Ora la cosa principale è descrivere la sequenza delle azioni.

4) Naturalmente, il file deve essere chiuso e si chiude.

E solo la clausola successiva ha bisogno di essere condizionata a seconda di ciò che si legge nella clausola 3, ma non la seconda clausola.

 
Alexey Viktorov:

1) apre un file, ma non ne legge il contenuto.

2) Un handle di file è SEMPRE più grande di zero. Di conseguenza, la condizione sarà sempre valida se il file esiste, indipendentemente dal suo contenuto.

3) Questo è esattamente la lettura del contenuto del file. Ma non capisco perché si legge una stringa, se si deve leggere un numero... Ma ancora può riferirsi ad un altro problema. Ora la cosa principale è descrivere la sequenza delle azioni.

4) Il file deve essere chiuso, ovviamente, e si chiude.

E solo la prossima clausola dovrebbe essere condizionata a seconda di ciò che si legge nella clausola 3, ma non la seconda clausola.

No... INVALID_HANDLE ha valore -1.

È allora che ottiene un errore di apertura del file, poi riceverà un segnale di vendita...

Altre costanti

Costanti speciali usate per indicare lo stato di parametri e variabili. Può avere i seguenti valori:

Costante

Descrizione

Valore

NULL

Null di qualsiasi tipo. Indica anche lo stato di stringa vuota

0

VUOTO

Indica lo stato vuoto del parametro

-1

VUOTO_VALORE

Valore vuoto nel buffer dell'indicatore

2147483647 (0x7FFFFFFFF)

CLR_NONE, clrNONE

Nessun colore. Valore predefinito, puntatore al valore vuoto. Usato in indicatori personalizzati

-1

CARTE_MAX

Numero massimo possibile di grafici aperti simultaneamente nel terminale

100

INVALID_HANDLE

Maniglia sbagliata

-1

IS_DEBUG_MODE

Segno di un programma mq5 in modalità debug

in modalità debug non è uguale a zero, altrimenti 0

IS_PROFILE_MODE

Segno di un programma mq5 nel modo di profiling

in modalità di profilazione non è uguale a zero, altrimenti è 0

INTERO_ARRAY

Indica il numero di elementi rimanenti fino alla fine dell'array, cioè l'intero array sarà processato

0

WRONG_VALUE

Una costante può essere implicitamente lanciata a qualsiasi tipo enum

-1

 

Non ho visto questo thread, quindi ne ho creato uno nuovo. si prega di guardarehttps://www.mql5.com/ru/forum/206126

Как в тестере стратегий получить TimeGMT();
Как в тестере стратегий получить TimeGMT();
  • 2017.06.28
  • www.mql5.com
Справочник MQL5, Дата и время, TimeGMT TimeGMT - При работе в тестере стратегий время TimeGMT() всегда равно моделируемому серверному времени TimeT...
 
Alexey Viktorov:

1) apre un file, ma non ne legge il contenuto.

2) Un handle di file è SEMPRE maggiore di zero. Corrispondentemente, la condizione sarà sempre valida se il file esiste, indipendentemente dal suo contenuto.

3) Questo è esattamente la lettura del contenuto del file. Ma non capisco perché si legge una stringa, se si deve leggere un numero... Ma ancora può riferirsi ad un altro problema. Ora la cosa principale è descrivere la sequenza delle azioni.

4) Il file deve essere chiuso, ovviamente, e viene chiuso.

E solo l'elemento successivo dovrebbe essere condizionato a seconda di ciò che si legge nell'elemento 3, ma non il secondo elemento.

Cari guru di MQL - se non siete un problema, per favore aiutatemi con questo codice, ho passato mezza giornata sui motori di ricerca, ma non ho trovato nulla di simile.

Credo che siano poche righe, ma per un utente esperto è una questione di minuti)))

 

Come può una dll in c++ prendere una stringa da mql4 e convertirla in char*?

struct MqlStr
{
        int               len;
        char             *string;
};

static int proc_func(char* Name);

MT4_EXPFUNC int __stdcall myfunc(MqlStr sym_name)
{
        proc_func(sym_name[0].string);
        
}
int proc_func(char* Name)
{
}
Questo è il codice giusto, vero?
 

Ciao a tutti, potreste consigliarmi per favore, ho scritto un EA circa un anno fa, funzionava bene. Non l'ho usato per tutto questo tempo. Non so cosa farci, non so proprio cosa farci. Può essere perché ho cambiato Build? Attualmente sto usando la Build 1090.

 
Санек Caro guru MQL - se non ti è difficile aiutarmi con questo codice, ho passato mezza giornata a scavare nei motori di ricerca, ma non riesco a trovare nulla di simile.

Sembra essere una questione di poche righe, che per una persona esperta è una questione di tre minuti)))

Ci ho messo due ore. Devo controllare il sistema pezzo per pezzo. Esegui entrambi gli EA contemporaneamente su grafici adiacenti - tutto sarà visibile. Expert Advisor 1 = Scrivi su file

//+------------------------------------------------------------------+
//| Запись в файл -1  0  1                                     1.mq4 |
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| Инициализация - установка интервала таймера                      |
//+------------------------------------------------------------------+
void OnInit()
{
   EventSetTimer(7);
}


//+------------------------------------------------------------------+
//| Деинициализация - удаление метки                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int Зачем)
{
   ObjectDelete("Семафор");
}


//+------------------------------------------------------------------+
//| По таймеру каждые 7 секунд                                       |
//+------------------------------------------------------------------+
void OnTimer()
{
   int x=0;
   if(rand()<20000)
   {
     x=1;
     if(rand()<16000) x=-1;
   }

   ObjectCreate("Семафор",OBJ_LABEL,0,0,0);
   ObjectCreate("Семафор", OBJ_LABEL, 0, 0, 0);  // Создание
   ObjectSet("Семафор", OBJPROP_CORNER, 3);      // В правый нижний угол
   ObjectSet("Семафор", OBJPROP_XDISTANCE, 0);   // Координата X   
   ObjectSet("Семафор", OBJPROP_YDISTANCE, 40);  // Координата Y
   ObjectSetText("Семафор",(string)x+" Открываю",20,"Arial",Yellow);
   ChartRedraw(0);
   Sleep(2000);

   int handle = FileOpen("123.txt", FILE_BIN | FILE_WRITE);
   if(handle == -1)
   {
      ObjectSetText("Семафор","Ошибка",20,"Arial",Salmon);
      ChartRedraw(0);
      return;
   }

   ObjectSetText("Семафор",(string)x+" Записываю",20,"Arial",DeepSkyBlue);
   ChartRedraw(0);

   FileWriteInteger(handle, x, 4);
   Sleep(2000);

   ObjectSetText("Семафор","",20,"Arial",White);
   ChartRedraw(0);
   FileClose(handle);
}

EA 2 = Leggere il file

//+------------------------------------------------------------------+
//| Чтение файла  -1  0  1                                     2.mq4 |
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| Инициализация - установка интервала таймера                      |
//+------------------------------------------------------------------+
void OnInit()
{
   EventSetTimer(1);
}


//+------------------------------------------------------------------+
//| Деинициализация - удаление метки                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int Зачем)
{
   ObjectDelete("Семафор");
}


//+------------------------------------------------------------------+
//| По таймеру каждую секунду                                        |
//+------------------------------------------------------------------+
void OnTimer()
{
   int x=0;

   ObjectCreate("Семафор",OBJ_LABEL,0,0,0);
   ObjectCreate("Семафор", OBJ_LABEL, 0, 0, 0);  // Создание
   ObjectSet("Семафор", OBJPROP_CORNER, 2);      // В правый нижний угол
   ObjectSet("Семафор", OBJPROP_XDISTANCE, 0);   // Координата X   
   ObjectSet("Семафор", OBJPROP_YDISTANCE, 40);  // Координата Y
   ObjectSetText("Семафор","",20,"Arial",Yellow);
   ChartRedraw(0);

   Sleep(500);
   int handle = FileOpen("123.txt", FILE_BIN | FILE_READ);  // Получаем НОМЕР файла в ОС
   if(handle == -1)                // Если производится запись, файл занят, будет ошибка
   {
      ObjectSetText("Семафор","Ошибка",20,"Arial",Salmon);
      ChartRedraw(0);
      return;
   }

   x = FileReadInteger(handle,4);                          // Получаем СОДЕРЖИМОЕ файла
   ObjectSetText("Семафор",(string)x+" Прочитал",20,"Arial",DeepSkyBlue);
   ChartRedraw(0);

   FileClose(handle);
}
 
toni_stark:

Ciao a tutti, potreste dirmi per favore, ho scritto un EA circa un anno fa, funzionava bene. Non l'ho usato per tutto questo tempo. Non so cosa farci, non so proprio cosa farci. Può essere perché ho cambiato Build? Attualmente sto usando la Build 1090.


È abbastanza possibile, ci sono state molte innovazioni. Iniziare controllando gli errori di compilazione. Con la direttiva #PropertyStrict.

 
Vladimir Zubov:

È possibile che ci siano state molte innovazioni. Iniziare controllando gli errori di compilazione. Con la direttiva #PropertyStrict.

Non esiste una tale direttiva.

C'è:

#property strict
 
Vladimir Zubov:

È possibile che ci siano state molte innovazioni. Iniziare controllando gli errori di compilazione. Con la direttiva #PropertyStrict.


Artyom Trishkin:

Non esiste una tale direttiva.

C'è:


Ma non riesco ad aprire il file EA che è sul mio computer con estensione ex4, ma non c'è un tale file attraverso MetaEditor. Per favore, ditemi qual è la ragione.

Motivazione: