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

 
CopyBuffer non trovato in mt4, solo in mt5 Non in mt4? c'è un semplice array di numeri di buffer per ottenere dati in mt4?
 
Valeriy Yastremskiy:
CopyBuffer non trovato in mt4, solo in mt5 No in mt4?

no

in MT4 è iCustom()https://docs.mql4.com/ru/indicators/icustom

Ho controllato l'anno scorso, la chiamata iCustom() dall'EA è cacheable, cioè se chiamateiCustom() diverse volte dall'EAper buffer o indici diversi sullo stesso tick, l'indicatore stesso sarà ricalcolato una volta per questo tick, cioè non c'è niente di sbagliato nelle prestazioni

ZS: perché MT4 - se MT5 è già stato "capito", la produttività è maggiore, il tester è più preciso... tutto sommato una buona cosa per la ricerca, imho

 
Igor Makanu:

no

in MT4 è iCustom()https://docs.mql4.com/ru/indicators/icustom

Ho controllato l'anno scorso, la chiamata iCustom() dall'EA è cacheable, cioè se chiamateiCustom() diverse volte dall'EAper buffer o indici diversi sullo stesso tick, l'indicatore stesso sarà ricalcolato una volta per questo tick, cioè non c'è niente di sbagliato nelle prestazioni

ZS: perché MT4 - se MT5 è già stato "capito", la produttività è maggiore, il tester è più preciso... tutto sommato, è una buona cosa per la ricerca, imho

È più facile lavorare con le idee su MT4. Il guscio è più facile))) No quindi no. Scriviamo)))) in un ciclo nell'array alla vecchia maniera Non ho ancora raggiunto queste fasi)))) In MT5 ha senso scalare quando MT4 smette di funzionare))) e questo o è troppo lento o troppi dati.

aggiunto. E quando l'idea viene elaborata con un errore accettabile.
 

Buon pomeriggio a tutti. La macchina grail è quasi finita, ma quando la compilo ottengo circa 50-60 avvisi sul valore di ritorno di'OrderSend' dovrebbe essere controllato TREND+ _V_1,1.mq4 1626 11

Per quanto ho capito perché scrivo l'apertura degli ordini senza alcun controllo, come questo

//--- АО БАЙ--

   /*УСЛОВИЕ 1*/
   if(flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   if(ao_buy!=EMPTY_VALUE && count_orders_market_buy ==0)
   {
     OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_buy); // ОТКРЫВАЕМ БАЙ ОРДЕР
   }
   } // КОНЕЦ УСЛОВИЕ1
 
DanilaMactep:

Buon pomeriggio a tutti. La macchina grail è quasi finita, ma quando la compilo ottengo circa 50-60 avvisi sul valore di ritorno di 'OrderSend' dovrebbe essere controllato TREND+ _V_1,1.mq4 1626 11

Per quanto ho capito perché scrivo l'apertura degli ordini senza alcun controllo - come questo

scrivilo così

if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_buy)) Print(Buy Open); // ОТКРЫВАЕМ БАЙ ОРДЕР
 
MakarFX:

scrivere questo

questa linea di codice non funziona:( 2 errori come questo appaiono contemporaneamente:

'Buy' - identificatore non dichiarato TREND+_1,1.mq4 860 98


'Open' - qualche operatore atteso TREND+_V_1,1.mq4 860 102

E il codice stesso è come questo

if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_market_buy)) Print(Buy Open); // ОТКРЫВАЕМ БАЙ ОРДЕР


Ho scritto tutto come consigliato, l'unica differenza è che ho cambiato il nome della variabile per il commento per separare il commento per gli ordini a mercato e in sospeso. Cosa sto facendo di sbagliato?
 
Print("Buy Open");
 
DanilaMactep:

Questa linea di codice non funziona:( 2 errori come questo appaiono contemporaneamente:

'Buy' - identificatore non dichiarato TREND+_1,1.mq4 860 98


'Open' - qualche operatore atteso TREND+_V_1,1.mq4 860 102

e il codice stesso è come questo


Ho scritto tutto come consigliato, l'unica differenza è che ho cambiato il nome della variabile per il commento per separare il commento per gli ordini a mercato e in sospeso. Cosa sto facendo di sbagliato?

Ho perso ""

Vladislav Andruschenko:

Print("Buy Open");


 
Con il primo avvio dell'indicatore nel metodo OnCalculate CopyRates non funziona
                MqlRates rates[];
                if (CopyRates(_Symbol, _Period, (datetime)SeriesInfoInteger(Symbol(), Period(), SERIES_SERVER_FIRSTDATE), 1, rates) == -1)
                {
                        return(0);
                }

I tick arrivano, sono visibili sulle stampe ma non copiano, come se non ci fosse un indicatore nel terminale, solo il cambio di periodo con l'indicatore aiuta, poi dopo il primo avvio l'indicatore funziona bene.

 
BillionerClub:
Con il primo avvio dell'indicatore nel metodo OnCalculate CopyRates non funziona

I tick arrivano sono visibili sulle stampe ma non copiano, come se non ci fosse un indicatore nel terminale, solo il cambio di periodo con l'indicatore aiuta, poi dopo il primo avvio l'indicatore funziona normalmente.

Aiuto:CopyRate

Nota

Se l'intervallo dei dati richiesti è completamente fuori dall'intervallo sul server, la funzione restituisce -1. Nel caso in cui i dati siano richiesti al di fuori diTERMINAL_MAXBARS(quantità massima di barre nel grafico), la funzione restituirà anche -1.

Quando si richiedono dati all'indicatore, se le serie temporali richieste non sono ancora state costruite o devono essere scaricate da un server, la funzione restituisce subito -1, ma viene avviato il processo di download/costruzione.

Quando si richiedono dati dall'Expert Advisor o da uno script, viene avviato ilcaricamento dal server, se il terminale non ha questi dati localmente, o inizia la costruzione della serie temporale richiesta, se i dati possono essere costruiti dallo storico locale, ma non sono ancora pronti. La funzione restituirà la quantità di dati che sarà pronta entro il tempo di timeout, ma il caricamento della storia continuerà, e la prossima richiesta simile restituirà più dati.

Quando si richiedono dati per data di inizio e numero di elementi richiesti, verranno restituiti solo i dati con una data inferiore (prima) o uguale a quella specificata. Allo stesso tempo, l'intervallo è specificato e preso in considerazione al secondo più vicino. Significa che la data di apertura di qualsiasi barra, per la quale viene restituito il valore (volume, spread, valore nel buffer dell'indicatore, prezzo Open, High, Low, Close o open time Time), è sempre uguale o inferiore a quello specificato.

Quando si richiedono dati nell'intervallo di date specificato, solo i dati che rientrano nell'intervallo richiesto saranno restituiti, e l'intervallo è specificato e preso in considerazione al secondo più vicino. Questo significa che il tempo di apertura di qualsiasi barra per la quale viene restituito un valore (volume, spread, valore nel buffer dell'indicatore, prezzo Open, High, Low, Close o open time Time), è sempre all'interno dell'intervallo richiesto.

Così,se il giorno corrente della settimana è sabato, quando si cerca di copiare i dati sul timeframe settimanale, specificandostart_time=ultimo martedì estop_time=ultimo venerdì, la funzione restituirà 0, poiché l'orario di apertura del timeframe settimanale cade sempre di domenica, ma nessuna barra settimanale cade nell'intervallo specificato.

Se volete ottenere il valore corrispondente alla barra corrente non finita, potete usare la prima forma della chiamata, specificandostart_pos=0 ecount=1.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5