[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 51

 
vikon писал(а) >>

So come aprire un ordine usando un codice.

Ho bisogno di creare un sistema semi-automatico con proprietà di gestione.

Apro una posizione manualmente, ma l'EA monitora la dimensione del lotto e la cambia di default in MT (servizio/impostazioni/trading/volume predefinito).

È possibile farlo?

No. Almeno non in MQL4

 
granit77 >> :

Un riferimento sarebbe utile:

doppio iWPR( simbolo stringa, int timeframe, int periodo, int shift)

Quindi, corretto è:

GRAZIE TANTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 
Gente, come si fa a tirare il tempo di formazione di una particolare colonna in MACD senza usare un grafico dei prezzi?
 
Noterday >> :
Gente, come fate a tirare il tempo di formazione di una particolare barra in MACD senza usare il grafico del prezzo?

La colonna corrisponde al tempo della formazione della barra sul grafico del prezzo,

Cioè, è necessario conoscere il numero di una particolare barra.

 

Quali sono le regole per l'ottimizzazione del codice? Mi interessano le regole di scrittura, non l'algoritmo.

Per essere più preciso, vi faccio un esempio:

ci sono due script "identici":

int start()
  {
//----
  int start=GetTickCount();
  int Massiv[100000000];
  int x=ArraySize( Massiv);
  for (int a=0; a<= x; a++)
    {
    Massiv[ a]= a;
    }
  Alert("прошло времени: ",GetTickCount()- start);
//----
   return(0);
  }

и

int start()
  {
//----
  int start=GetTickCount();
  int Massiv[100000000];
  for (int a=0; a<=ArraySize( Massiv); a++)
    {
    Massiv[ a]= a;
    }
  Alert("прошло времени: ",GetTickCount()- start);
//----
   return(0);
  }

il primo è due volte più veloce del secondo. (per me sono 4 secondi)

È chiaro che gli array di cento milioni non sono usati spesso :-) e in realtà il guadagno è di un paio di millisecondi per un array ordinario e che il problema principale è negli algoritmi buggati e non in queste inezie, ma comunque...

 
beruk >> :

Quali sono le regole per l'ottimizzazione del codice? Mi interessano le regole per scrivere, non l'algoritmo.

Per essere più preciso, vi faccio un esempio:

ci sono due script "identici":

и

il primo è due volte più veloce del secondo. (per me sono 4 secondi)

È chiaro che gli array di cento milioni non sono usati spesso :-) e in realtà il guadagno sarà di un paio di millisecondi per un array ordinario e che il problema principale è negli algoritmi buggati e non in dettagli così piccoli, ma comunque...

Non ci sono regole in quanto tali. Cioè, potete scriverlo come volete e funzionerà. Naturalmente, funzionerà con un'efficienza diversa.

Per ogni operazione il suo costo in termini di espressione di tempo è noto - lo si può trovare negli standard del linguaggio, così come il flusso di lavoro dei cicli e di altri costrutti del linguaggio (lo standard C - lo cito perché dubito che abbiate cercato di capirlo, partendo dalle basi - il produttore raccomanda di consultare proprio questo standard del linguaggio in tutti i casi non specificati).

Nel secondo caso, chiamate costantemente la funzione ArraySize(Massiv) - questa è l'operazione più costosa (chiamata di funzione - qualsiasi, non questa), mentre l'operazione di confronto è chiamata in ogni ciclo.

In questo caso: il ciclo

per (int a=ArraySize(Massiv)-1;a>0;a--)

farà la stessa cosa ma significativamente più veloce. Intendo il modo in cui il ciclo è organizzato. Se avete calcoli voluminosi in un ciclo, non ci sarà una grande differenza.

C'è un "ma" - se stai usando un tester o reti riaddestrate - la differenza sarà molto significativa e apparirà molto, molto ....

Sì, un'altra cosa: hai un errore nel primo script - superare i confini dell'array. Leggete i manuali - è tutto scritto lì. Dovresti scriverlo così:

int x=ArraySize(Massiv);
per (int a=0;a<x;a++)

Buona fortuna.

 

Buon pomeriggio

Per favore, spiega come interpretare questo passaggio nel tutorial FileOpen

===

Il contenuto delle voci nei file

Con qualsiasi combinazione di modalità, i record di dati vengono scritti nel file senza spazi vuoti. Quando i file sono formati in modalità FILE_BIN, i record di dati sono scritti consecutivamente. A seconda del tipo di dati scritti nel file (e delle funzioni di registrazione usate per questo scopo), una combinazione di caratteri di fine linea ("\r\n") può essere scritta tra gruppi di record. Quando i file sono generati in modalità FILE_CSV, i record di dati sono separati con un delimitatore di file (di solito ';'), e i gruppi di record (composti da stringhe) sono separati con una combinazione di caratteri di fine riga ("\r\n").

===

tutto è chiarocon "int FileOpen(string filename, int mode, int delimiter=';')".

Dove dovrei mettere ("\r\n")? Può essere usato con FILE_CSV? Datemi un esempio con ("\r\n") per favore, sono così stupido.

 
Ho bisogno di scrivere un Expert Advisor per questo: https://www.mql5.com/ru/code/8663 indicatore, intendo HP.mq4 (se sale compra, se scende vende). Fa un overdraw, ma in caso di grandi periodi, ad esempio 100-200, è sopportabile. Oppure si può aggiungere un segnale MA se il segnale è inferiore a questo indicatore - comprare, se superiore - vendere.
 
teetrinker >> :

Buon pomeriggio

Per favore, spiega come interpretare questo passaggio nel tutorial FileOpen

===

Il contenuto delle voci nei file

Con qualsiasi combinazione di modalità, i record di dati vengono scritti nel file senza spazi vuoti. Quando i file sono formati in modalità FILE_BIN, i record di dati sono scritti consecutivamente. A seconda del tipo di dati scritti nel file (e delle funzioni di registrazione usate per questo scopo), una combinazione di caratteri di fine linea ("\r\n") può essere scritta tra gruppi di record. Quando i file sono generati in modalità FILE_CSV, i record di dati sono separati con un separatore di file (di solito ';'), e i gruppi di record (costituiti da stringhe) sono separati con una combinazione di caratteri di fine riga ("\r\n").

===

tutto è chiarocon "int FileOpen(string filename, int mode, int delimiter=';')".

ma dove dovrebbe essere usato "\r\n"? Può essere usato con FILE_CSV?

Da nessuna parte. Il manuale dice in chiaro russo: "gruppi di record (che fanno stringhe) sono separati con una combinazione di caratteri di fine riga ("\r\n")".

 

Potresti darmi un suggerimento?

nel mio EA, diversi avvisi sono in fila in un blocco, e diversi in fila in un altro blocco

nel log del test non sono in ordine ma ordinati - 2 avvisi dal primo blocco, 3 dal secondo, poi 3 dal primo e gli ultimi 2 dal secondo

mettere uno slittamento di 500 secondi dopo ognuno, cioè mezzo secondo e nessuna azione - tutti sono ancora casuali e in 1 secondo possono essere messi tutti e 10

qual è la ragione?

come fare in modo che gli avvisi vadano in ordine?