Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1247

 
MrBrooklin:

Buona sera a tutti!

Nella mia vecchiaia sto cercando di padroneggiare le basi di MQL5. La mia curiosità mi sta uccidendo - mi chiedo se non posso padroneggiare la programmazione se ho circa 60 anni. Anche se ho fatto amicizia con il semplice HTML, ho anche creato i miei siti web in esso. Semplice, davvero, ma comunque... Se le mie domande causano irritazione, allora ditemelo subito, così non farò più domande ingenue e non irriterò le persone.

Quindi, ha aperto il primo codice che ho visto. Ho commentato il significato di una riga di questo codice usando Google Translator e MQL5 Reference. Cosa chiedo alla comunità? Guardate i commenti e se non sono veri, per favore correggete il mio pensiero:

Per alcuni è un libro aperto, ma a me sembrano gli stessi caratteri cinesi. Per favore, non ridete troppo forte.

Perché lo faccio? Così, sto cercando di scoprire da solo quanto sono senza speranza nella programmazione.

Saluti, Vladimir.

Raccomando di usare l'helper ME - descrive lo scopo di tutti gli operatori e le funzioni del linguaggio.

https://www.mql5.com/ru/docs/trading/positionselect

Документация по MQL5: Торговые функции / PositionSelect
Документация по MQL5: Торговые функции / PositionSelect
  • www.mql5.com
Выбирает открытую позицию для дальнейшей работы с ней. Возвращает true при успешном завершении функции. Возвращает false при неудачном завершении функции. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError(). При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно...
 
MrBrooklin:

Buona sera a tutti!

Nella mia vecchiaia sto cercando di padroneggiare le basi di MQL5. La mia curiosità mi sta uccidendo - mi chiedo se non posso padroneggiare la programmazione se ho circa 60 anni. Anche se ho fatto amicizia con il semplice HTML, ho anche creato i miei siti web in esso. Semplice, davvero, ma comunque... Se le mie domande causeranno irritazione, allora ditemelo subito, così non farò domande ingenue e non renderò le persone nervose.

Quindi, ha aperto il primo codice che ho visto. Ho commentato il significato di una riga di questo codice usando Google Translator e MQL5 Reference. Cosa chiedo alla comunità? Guardate i commenti e se non sono veri, per favore correggete il mio pensiero:

Per alcuni è un libro aperto, ma a me sembrano gli stessi caratteri cinesi. Per favore, non ridete troppo forte.

Perché lo faccio? Così, sto cercando di scoprire da solo quanto sono senza speranza nella programmazione.

Saluti, Vladimir.

Se ne hai la volontà, è meglio per il tuo cervello che risolvere le parole crociate. Cercate di capire subito che i conti Hadge sono scritti in modo diverso dai conti Netting. Questa linea di codice

if(PositionSelect(_Symbol)) // если выбираем открытую позицию на графике текущего символа

è usato per il Netting, ma può causare errori nei conti Hadge se più di una posizione è aperta.

 
Aleksey Vyazmikin:

Raccomando di usare l'helper ME - lo scopo di tutti gli operatori e le funzioni del linguaggio sono descritti lì.

https://www.mql5.com/ru/docs/trading/positionselect

Ciao Alexey!

Grazie per il vostro feedback. Sto usando l'aiuto in MetaEditor. Al momento il problema principale è capire lo scopo degli operatori e delle funzioni, così come il perché ho bisogno di un certo operatore o funzione in un certo punto del codice del programma. È più o meno tutto descritto nelle FAQ, ma da quanto ho capito queste informazioni non sono per chi inizia a entrare nei dettagli da zero, ma per chi ha già qualche esperienza di programmazione in altri linguaggi.

Saluti, Vladimir.

 
Alexey Viktorov:

Se vuoi, è meglio per il tuo cervello che fare le parole crociate. Cercate di capire subito che i conti Hadge non sono scritti allo stesso modo dei conti Netting. Questa linea di codice

Questa linea di codice è usata per il Netting ma potrebbe causare errori nei conti Hadge se viene aperta più di una posizione.

Ciao Alexey!

Grazie per la dritta sui conti Hadge e Netting, così come per il supporto.

Ho capito che se non ci sono correzioni nei commenti a una linea di codice, è già buona. Significa che ho capito il più possibile l'essenza di questa linea di codice. Continuerò a studiare la programmazione MQL5 e di tanto in tanto posterò i miei commenti. Forse, a un certo punto dell'autoapprendimento sarò in grado di sviluppare un semplice codice di Expert Advisor per conto mio.

Sinceramente, Vladimir.

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
 

Ciao a tutti!

Continuo a imparare MQL5 ed ecco una nuova linea di codice, che non è chiara anche dopo averci lavorato tramite la Guida e Google Translate.

FileSeek(FileHandle,0,SEEK_SET); // перемещаем положение указателеля в файле с уникальным указателем на "0" байт в начале файла

Il commento è fatto da me, ma il suo significato non è del tutto chiaro. Ho appena capito cos'è FileHandle. Dividilo in due parole File e Handle. Google l'ha tradotto come descrittore di file. Cos'è un descrittore e cosa fa? È bene che l'autore dell'articolo abbia spiegato qui https://www.mql5.com/ru/articles/496 che Handle è un puntatore unico a qualcosa (un file, un indicatore, ecc.) in russo.

Ora resta da capire il significato di tutto il codice. Sto chiedendo aiuto alla comunità, ho passato tanto tempo con questo codice fino alle 3 del mattino, e la mia testa è completamente impacciata.

Saluti, Vladimir.

Быстрый старт или краткий курс для начинающих
Быстрый старт или краткий курс для начинающих
  • www.mql5.com
Здравствуй дорогой читатель. В данной статье я попробую рассказать и покажу как можно просто и быстро освоить принципы построения торговых советников, работу с индикаторами и т.д. Эта статья ориентирована на новичков, в ней не будет сложных и трудных для понимания примеров. Скорей всего, она не будет интересной и познавательной для тех, кто уже...
 
MrBrooklin:

Ciao a tutti!

Continuo a imparare MQL5 ed ecco una nuova linea di codice, che non è chiara anche dopo averci lavorato tramite la Guida e Google Translate.

Il commento è fatto da me, ma il suo significato non è del tutto chiaro. Ho appena capito cos'è FileHandle. Dividilo in due parole File e Handle. Google l'ha tradotto come descrittore di file. Cos'è un descrittore e cosa fa? È bene che l'autore dell'articolo abbia spiegato qui https://www.mql5.com/ru/articles/496 che Handle è un puntatore unico a qualcosa (un file, un indicatore, ecc.) in russo.

Ora resta da capire il significato di tutto il codice. Sto chiedendo aiuto alla comunità, ho passato tanto tempo con questo codice fino alle 3 del mattino, e la mia testa è completamente impacciata.

Sinceramente, Vladimir.

Ma perché tradurre qualcosa in google quando la documentazione ha tutto scritto in russo?

Sposta la posizione del puntatore del file del numero di byte specificato rispetto alla posizione specificata.

E tradurrei il tuo commento come segue: "Sposta il puntatore del file dall'inizio di 0 byte. In altre parole, all'inizio del file".

Punto di riferimento per l'offset. Può prendere uno dei valori di ENUM_FILE_POSITION

Identificatore

Descrizione

SEEK_SET

Inizio del file

RICERCA_CUR

Posizione corrente del puntatore del file

CERCARE_FINE

Fine del file

Документация по MQL5: Файловые операции / FileSeek
Документация по MQL5: Файловые операции / FileSeek
  • www.mql5.com
//|                                                Demo_FileSeek.mq5 | //|                        Copyright 2013, MetaQuotes Software Corp. | //|                                              https://www.mql5.com | //| Script program start function                                    |...
 
Alexey Viktorov:

E perché tradurre qualcosa con google, quando la documentazione dice tutto in russo?

E tradurrei il tuo commento come: "Sposta il puntatore del file dall'inizio a 0 byte. In altre parole, all'inizio del file".

Identificatore

Descrizione

SEEK_SET

Inizio del file

RICERCA_CUR

Posizione corrente del puntatore del file

CERCA_FINE

Fine del file

Ciao Alexey!

Ho cercato su Google il significato della combinazione di parole FileHandle. Volevo capire cosa fosse e da dove venisse. L'Aiuto non mi ha aiutato, così ho dovuto usare Google. Quando l'ho capito, si è scoperto che l'autore stesso del codice aveva creato una variabile per memorizzare il file con un puntatore unico. Per quanto riguarda FileSeek e SEEK_SET l'aiuto mi ha aiutato, ma il significato della stringa non era chiaro. Ora, con l'aiuto del tuo suggerimento, è chiaro a cosa serve in un file con un puntatore unico.

Grazie mille per il vostro aiuto!

Sinceramente, Vladimir.

Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Позиционирование внутри файла
Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Позиционирование внутри файла
  • www.mql5.com
Большая часть файловых функций связана с операциями чтения/записи информации. При этом с помощью функции FileSeek() можно указывать положение файлового указателя на позицию внутри файла, с которой будет...
 
MrBrooklin:

Ciao Alexey!

Ho cercato su Google il significato della frase FileHandle. Volevo capire cos'è e da dove viene. L'Aiuto non è stato d'aiuto, così sono dovuto andare su Google. Il testo di aiuto per FileSeek e SEEK_SET era molto utile, ma il significato della stringa non era chiaro. Ora, con l'aiuto del tuo suggerimento è diventato chiaro a cosa serve in un file con un puntatore unico.

Grazie mille per il vostro aiuto!

Saluti, Vladimir.

Il puntatore non è unico, è solo la posizione iniziale di una scrittura o lettura. Un po' come si scrive una dichiarazione. L'intestazione inizia nella seconda metà della pagina, il resto del testo sul bordo sinistro della pagina. Oppure iniziamo un nuovo paragrafo un po' più indietro rispetto al bordo della linea. Questo è l'inizio della linea e questo è il puntatore. Possiamo spostare l'inizio di una linea in qualsiasi punto del testo esistente e scrivere o leggere da quel punto.

Il manico del file è unico. Può anche essere chiamato un identificatore. In effetti, è una variabile abituale. Potete chiamarlo abrakadabra e assegnargli un handle di file.

 
Sergey:

Buon pomeriggio!

Sto cercando di capire il codice dell'indicatore. Bloccato su una linea.

Cosa significa l'ultima riga e come può essere riscritta in modo più semplice (più chiaro)?

È scritto in modo molto più semplice di qualsiasi altra costruzione. Si chiama: operatore ternario

cancl[i] = (acD==1 && aoD==1) ? 0 : (acD==2 && aoD==2) ? 1 : (acD==1 && aoD==2)? 2 : 3;
cancl[i] = if(acD==1 && aoD==1) { 0 } else { if(acD==2 && aoD==2) { 1 else { (acD==1 && aoD==2)? 2 : 3;
Ho mostrato il codice in modo convenzionale, quindi si spera che tu riesca a capirlo
Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
  • www.mql5.com
В качестве первого операнда – "выражение1" – может быть использовано любое выражение, результатом которого является значение типа bool. Если результат равен , то выполняется третий операнд – "выражениеЗ". Второй и третий операнды, то есть "выражение2" и "выражениеЗ", должны возвращать значения одного типа и не должны иметь тип void. Результатом...
 
Sergey:

Buon pomeriggio!

Sto analizzando il codice dell'indicatore. Sono bloccato su una linea.

Cosa significa l'ultima riga e come può essere riscritta in modo più semplice (più chiaro)?

// cancl[i] = (acD==1 && aoD==1) ? 0 : (acD==2 && aoD==2) ? 1 : (acD==1 && aoD==2)? 2 : 3;

if      (acD==1 && aoD==1)   { cancl[i]=0; }
else if (acD==2 && aoD==2)   { cancl[i]=1; }
else if (acD==1 && aoD==2)   { cancl[i]=2; }
else                         { cancl[i]=3; }

ma non è più semplice o più chiaro secondo me. È quasi nello stile di MT :-) Per essere in stile ci dovrebbero essere più corde e dovrebbero andare in stile "scala" :-)