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

 


Cari programmatori,
Si prega di rispondere alla seguente domanda:

Uscite con 8 cifre decimali. Perché non è normalizzato?

double open_sss=NormalizeDouble(iOpen(Symbol(),PERIOD_M5,elapsed_bar),Digits);
Print("open_sss= "+open_sss);

http://savepic.ru/1435355.gif

 
Hedin:


Cari programmatori,
per favore rispondete alla seguente domanda:

Uscite con 8 cifre decimali. Perché non è normalizzato?

http://savepic.ru/1435355.gif


Se è scritto nell'aiuto della funzione NormalizeDouble() che arrotonda ad una precisione specificata e restituisce il tipo double, avete tutto giusto, e se avete bisogno di una stringa di testo con una precisione specificata dopo un punto decimale, allora dovreste usare DoubleToStr()
 
IgorM:


Devo aver frainteso il significato di int startH = Hour(); - darà il tempo corrente del server - ora, io cercherei zero ore, o qualsiasi altra ora:


Grazie, ora funziona.

Ma perché non ha funzionato con la funzione Hour(), ancora non capisco.

Ci ha dato l'ora corrente dell'ora del nord. Per esempio, facciamo che sia 5.

Pertanto, quando chiamiamo open[i+5], otteniamo il prezzo di apertura della candela che si è aperta all'inizio della giornata, cioè alle 0:00.

Per favore, mi spieghi cosa esattamente non capisco?

 
webgreck:


Grazie, ora funziona.

Ancora non capisco perché non ha funzionato con la funzione Hour().

Ci ha dato l'ora corrente dell'ora del nord. Per esempio, facciamo che sia 5.

Pertanto, quando chiamiamo open[i+5], otteniamo il prezzo di apertura della candela che si è aperta all'inizio della giornata, cioè alle 0:00.

Per favore, mi spieghi cosa esattamente non capisco?


L'ora del server è l'ora del server ( TimeCurrent() ), l'hai sul tuo PC ( TimeLocal(); ), la funzione Hour() :

"Restituisce l'ora corrente (0,1,2,...23) dell'ultima ora conosciuta del server all'inizio del programma (questo valore non cambia durante l'esecuzione del programma ).Nota: l'ultima ora conosciuta del server è simulata durante i test. "

Non so nemmeno io cosa farci se non cambia - forse è necessario solo per il tester.

 
webgreck:

Potete dirmi per favore cosa ho fatto di sbagliato?

Ho bisogno di trovare il prezzo di apertura della prima candela sul grafico orario, cioè quella delle 0:00 e da questa candela a quella attuale per trovare il valore massimo del prezzo.

Perché ottengo sempre il massimo della prima candela del giorno corrente.

Ecco come faccio io:

Scorre il tempo[] e trova la barra desiderata, poi scatta da quella barra per trovare un estremo.
 

Colleghi, qualcuno sa come fare in modo che il tester non deduca la commissione per uno scambio? Forse c'è un file in MT4, dove viene specificato l'importo della commissione per un contratto per un particolare strumento?

Lasciatemi spiegare a cosa mi serve. Oltre alle valute, sono anche interessato ai futures dell'Uber e dell'indice RTS. Quick non è adatto allo sviluppo di robot. Per esempio, la mia società di intermediazione ha una commissione per un contratto - CFD su futures sull'indice rts (come suona, ma ...:)) - è un racket ... costa 10 carte verdi. Ecco perché anche un trade con un profitto di 250p dà una perdita di 1$ nel tester. È incredibile, ho strumenti e citazioni, ma è impossibile testarlo e ottimizzarlo.

Aiuto!

 
Blaid73:

Colleghi, qualcuno sa come fare in modo che il tester non deduca la commissione per uno scambio? Forse c'è un file in MT4, dove viene specificato l'importo della commissione per un contratto per un particolare strumento?

Lasciatemi spiegare a cosa mi serve. Oltre alle valute, sono anche interessato ai futures dell'Uber e dell'indice RTS. Quick non è adatto allo sviluppo di robot. Per esempio, la mia società di intermediazione ha una commissione per un contratto - CFD su futures sull'indice rts (come suona, ma ...:)) - è un racket ... costa 10 carte verdi. Ecco perché anche un trade con un profitto di 250p dà una perdita di 1$ nel tester. È incredibile, ho strumenti e citazioni, ma è impossibile testarlo e ottimizzarlo.

Aiuto!


probabilmente questo: https://www.mql5.com/ru/forum/119830

 

Si prega di consigliare come e cosa si può fare per sostituire il codice per fare la stessa cosa ma lavorare più velocemente:

if (BB_1>BB_2 && BB_2<=BB_3 && BB_1<0)                               // Найден разворот BB вверх
      {
      switch (tf)
         {
            case 1:     TrBBTurnUP_M1 =true;  TrBBTurnDN_M1=false;      // Флаг разворота вверх на М1
            case 5:     TrBBTurnUP_M5 =true;  TrBBTurnDN_M5=false;      // Флаг разворота вверх на М5
            case 15:    TrBBTurnUP_M15=true;  TrBBTurnDN_M15=false;     // Флаг разворота вверх на М15 
            case 30:    TrBBTurnUP_M30=true;  TrBBTurnDN_M30=false;     // Флаг разворота вверх на М30 
            case 60:    TrBBTurnUP_H1 =true;  TrBBTurnDN_H1=false;      // Флаг разворота вверх на H1
            case 240:   TrBBTurnUP_H4 =true;  TrBBTurnDN_H4=false;      // Флаг разворота вверх на H4
            case 1440:  TrBBTurnUP_D1 =true;  TrBBTurnDN_D1=false;      // Флаг разворота вверх на D1
            case 10080: TrBBTurnUP_W1 =true;  TrBBTurnDN_W1=false;      // Флаг разворота вверх на W1
            case 43200: TrBBTurnUP_MN =true;  TrBBTurnDN_MN=false;      // Флаг разворота вверх на MN
         }
      }

È solo un pezzo di una grande funzione, dove ci sono molti controlli di questo tipo e influisce molto sulle prestazioni. Ho già fatto domande qui sull'ottimizzazione del codice, ma non ho ottenuto alcuna risposta e non ho trovato nulla nella ricerca... È davvero un segreto che nessuno lo sa o è disposto a condividerlo...? Almeno un link a un articolo... da leggere a vostro piacimento... È impossibile testarlo completamente in ogni caso...

 
Come posso mettermi in contatto con voi? Ho molte domande e vorrei qualche consiglio.
 
artmedia70:

Si prega di consigliare come e cosa si può fare per cambiare il codice per fare la stessa cosa ma lavorare più velocemente: ...

Sostituirei l'interruttore con un array già pronto, perché assegnare ogni volta dei valori predefiniti?