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

 
leonerd:


Come passare attraverso tutti gli ID dei grafici nel terminale? current_chart_id nel mio codice è 1662429437, first_chart_id è 1859831371. ChartNext() restituisce già -1. Cos'è ChartFirst()?

Cosa significa prima di tutto? Aperto per primo? Perché il suo ID è maggiore di quello del grafico corrente (aperto più tardi, tra l'altro)?

Apparentemente è a causa della conversione long -> int.

 
Artyom Trishkin:

Grazie, sì, una volta era così.

 
Chi sa come creare cicli for while ecc. Vorrei creare un ciclo usando la mia tecnologia, cosa posso imparare?
 
leonerd:

Apparentemente è a causa della conversione long -> int.

non c'è questa logica, vedere l'esempio dall'aiutohttps://www.mql5.com/ru/docs/chart_operations/chartnext

I numeri ID dei grafici non hanno una logica nella loro formazione, forse sono maniglie di Windows o qualche altro numero, per cercare tutti gli ID dei grafici nel terminale, l'esempio dall'aiuto è sufficiente, ho postato in kodobase l'indicatore che costruisce il secondo TF, ho usato un esempio dall'aiuto - tutto funziona come un orologio - trovo il mio grafico personalizzato - ricordo il suo ID grafico e genero tick su di esso


Seric29:
Chi sa come vengono creati i loop per while ecc. Vorrei creare un loop usando la mia tecnologia, cosa posso imparare?

hmm, vedi la tua domanda per qualche giorno, che risposta vuoi sentire? - Questi sono operatori di linguaggio, funzionano come definito dagli sviluppatori e questo è indicato nella guida. in nessun linguaggio di programmazione gli operatori di linguaggio sono descritti "come sono" - gli operatori di linguaggio sono sempre "forniti come sono" - né più né meno

Ecco gli operatori del linguaggio MQL4https://docs.mql4.com/ru/basis/operators- sono "proprio così" - questa è labase di ogni linguaggio di programmazione

 
Igor Makanu:

hmm, diversi giorni vedo la tua domanda, e quale risposta vuoi sentire? - questi sono operatori di linguaggio, funzionano come definito dagli sviluppatori, che è indicato nell'aiuto, gli operatori di linguaggio non sono descritti "come disposti" in nessun linguaggio di programmazione - gli operatori di linguaggio sono sempre "forniti così come sono" - né più né meno

Ecco gli operatori del linguaggio MQL4https://docs.mql4.com/ru/basis/operators- sono "proprio così" - questa è la base di ogni linguaggio di programmazione

Quindi è brutto che non siano descritti che metà delle informazioni necessarie siano nascoste. Mi interessa sapere come sono strutturati. Voglio creare i miei propri loop, e come si è scoperto ci sono almeno 3 loop in mql che esistono in c++ e pascal, e questi loop potrebbero anche facilitare il lavoro per ridurre il numero di controlli e l'inizializzazione di flag e variabili inutili, ma voglio creare i miei, ma non riesco a capire come queste iterazioni si verificano, come si fa in qualsiasi blocco di codice, si può scrivere un loop e aprire le parentesi graffe, che contengono anche codice. Ragazzi molto interessante se qualcuno sarà cosa scrivere plz.

 
Seric29:

Inoltre, come si è scoperto, mql ha almeno 3 cicli che sono in c++ e pascal

Ho studiato sia Pascal che C++ all'università ed è ancora lì:

C++ : for , while , do...while

Pascal: for, while, repeat

MQL: for , while , do...while

????


Seric29:

Quindi è brutto che non siano descritti e che metà delle informazioni necessarie siano nascoste. Mi chiedo come funzionino.

Non so nemmeno come spiegare l'assurdità della tua domanda, ma ci proverò lo stesso:

Tu: - "Sto studiando il russo e ho bisogno di sapere come funziona l'alfabeto"

Io: "L'alfabeto non ha struttura, sono solo lettere e formano parole"(in MQL ci sono circa una dozzina di operatori e formano il programma)https://docs.mql4.com/ru/basis/operators

Tu: "Non è possibile! So che le lettere dell'alfabeto in zimbabwano significano un sacco di cose!

Io: "Purtroppo non conosco la lingua, ma in russo una lettera significa proprio che è una lettera, si può naturalmente fare un'analisi fonetica, ma ciò non impedisce che una lettera sia un elemento elementare della parola.

Tu dici: "Hmm, strano, ma in Zimbabwe, se dici 'a' è una lettera, e se dici 'A' significa pace a casa tua, e se dici 'aaaaaaah!'". - significa che ho il pisello più grande!". - è impossibile non vedere come sono disposte le lettere nella lingua russa! - c'è una tecnologia nascosta in ....


Beh, questo è il modo in cui vedo il nostro dialogo, mi dispiace per il mio inglese - non posso farlo in nessun altro modo

)))

 
Igor Makanu:

non c'è questa logica, guardate l'esempio di aiutohttps://www.mql5.com/ru/docs/chart_operations/chartnext

I numeri ID dei grafici non hanno una logica nella loro formazione, forse sono maniglie di Windows o qualche altro numero. Per cercare tutti gli ID dei grafici nel terminale, l'esempio dell'aiuto è sufficiente, ho usato un indicatore per costruire i sec-tF in kodobase.

ChartFirst() restituisce l'ID più piccolo del grafico aperto?

 
leonerd:

ChartFirst() restituisce l'ID più piccolo dai grafici aperti?

di nuovo no! - il valore numerico di ChartFirst() non ha senso

PZS: ...... forse è sbagliato, ma ho letto da qualche parte che ChartFirst() restituisce l'ID del grafico che è stato aperto per primo, non quello che è primo nella tua sequenza di grafici (puoi spostarlo), ma quello che è stato aperto per primo nel terminale client - beh, non sono sicuro di avere ragione su questo


ChartFirst() vi dà un punto di partenza da cui potete scorrere i grafici con ChartNext(). È così: ottenete il primo ID di ChartFirst() - memorizzate il valore e trasmettete questo valore a ChartNext() - e così via, finché il primo valore di ChartFirst() non viene ripetuto - il che significa che avete fatto scorrere tutti i grafici possibili,

Ecco il codice del mio indicatore in KB - l'ho trovato nell'aiuto, l'ho controllato e l'ho usato per trovare il mio grafico:

//+------------------------------------------------------------------+
//| поиск  идентификатора графика                                    |
//+------------------------------------------------------------------+
long CheckChart(string sym,int period,int &wh)
  {
   long result=0,id=ChartFirst();
   while(id>=0)
     {
      if(ChartSymbol(id)==sym && ChartPeriod(id)==period && ChartGetInteger(id,CHART_IS_OFFLINE))
        {
         result=id;
         ChartSetInteger(id,CHART_AUTOSCROLL,true);
         ChartSetInteger(id,CHART_SHIFT,true);
         ChartNavigate(id,CHART_END);
         ChartRedraw(id);
         wh=WindowHandle(sym,period);
         PrintFormat("Найдено окно графика: [%s,%d]",sym,period);
         break;
        }
      id=ChartNext(id);
     }
   return(result);
  }
//+------------------------------------------------------------------+
 
Igor Makanu:

di nuovo no! - Il valore numerico di ChartFirst() non ha senso

SZY: ...... forse è sbagliato, ma ho letto da qualche parte che ChartFirst() restituisce l'ID del grafico che è stato aperto per primo, non il primo grafico nella tua sequenza di grafici (puoi spostarlo), ma quello che è stato aperto per primo nel terminale client - in generale, non sono sicuro di avere ragione su questo


ChartFirst() vi dà un punto di partenza da cui potete scorrere i grafici con ChartNext(). È così: ottenete il primo ID di ChartFirst() - memorizzate il valore e trasmettete questo valore a ChartNext() - e così via, finché il primo valore di ChartFirst() non viene ripetuto- il che significa che avete fatto scorrere tutti i grafici possibili,

Ecco il codice del mio indicatore in KB - l'ho trovato nell'aiuto, l'ho controllato e l'ho usato per trovare il mio grafico:

Strano. Non dice nulla nell'aiuto riguardo a "finché il primo valore di ChartFirst() non viene ripetuto". Alla fine della lista del grafico, restituisce -1

Valore restituito

L'identificatore del grafico. Se la lista del grafico è finita, la funzione restituisce -1.

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

Strano. L'aiuto non dice nulla riguardo a "finché il primo valore di ChartFirst() non viene ripetuto". Quando la lista del grafico finisce, restituisce -1

Mi dispiace - sono un peccatore! Non l'ho letto, ero ubriaco quando scrivevo su questo forum!