Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1175

 
Peter Vorobyev:

Cambiare il codice sorgente di MQ e tirare i metodi in quelli pubblici, è chiaro che questo non è il nostro metodo :)

#define private public

se non vuoi che sia così, allora tutti gli elementi inCAppDialog sono formati da oggetti grafici, hai solo bisogno di conoscere il nome dell'oggetto, e dopo aver creato un'istanza della classe CAppDialog, scrivi un metodo che dipingerà i bordi di CAppDialog nel colore che vuoi

 
Igor Makanu:

se non volete che sia così, tutti gli elementi del pannello CAppDialog sono formati come oggetti grafici, dovete solo conoscere il nome dell'oggetto e dopo aver creato un'istanza della classe CAppDialog, scrivere un metodo che ridipinga i bordi di CAppDialog nel colore che volete

Tramite questo, potete trasferire il codice cercando il controllo corretto all'interno della classe. Questo funziona.

Ma non so come accedervi, conoscendo il nome dell'oggetto.

 
Peter Vorobyev:

Potete usarlo per spostare il codice per trovare il controllo di cui avete bisogno all'interno della classe. Questo funziona.

Ma non so come accedervi conoscendo il nome dell'oggetto.

https://www.mql5.com/ru/docs/objects/objectsetinteger

ma penso che sia più facile ridefinire tutti i metodi e i campi privati in pubblici per le proprie esigenze

 
Igor Makanu:

https://www.mql5.com/ru/docs/objects/objectsetinteger

ma penso che sia più facile ridefinire tutti i metodi e i campi chiusi in pubblico per le proprie esigenze

ObjectSetInteger - funziona :), ho dimenticato tutto.
Puoi dare un esempio per#defineprivate public - non capisco come sovrascrivere il metodo. È necessario farlo nella sua classe?

 
Peter Vorobyev:

ObjectSetInteger - funziona :), ho dimenticato tutto.
Puoi dare un esempio per#define private public - non capisco come sovrascrivere il metodo. È necessario farlo nella sua classe?

#define private public
#include <Controls\Dialog.mqh>
// тут весь Ваш класс который наследуете от CAppDialog
#undef private
Sperimentate con undef, dopo la sostituzione della macro potete cancellarla e chiudere tutti i metodi pubblicidi CAppDialog nella vostra classe per rendere più facile scrivere il codice in seguito
 
Igor Makanu:

Igor, sì, funziona. Grazie.

 

Esecuzione dell'ottimizzazione genetica di un EA su MT5 con agenti locali connessi alla rete domestica.

L'Expert Advisor prende alcuni dati iniziali da un file di testo.

Apro il file con i flag: FILE_READ|FILE_SHARE_READ|FILE_ANSI|FILE_CSV|FILE_COMMON

Affinché gli agenti locali trovino il file, ho dovuto copiarlo nella cartella Common del terminale del computer locale.

L'unica via d'uscita è duplicare manualmente i file richiesti su tutte le macchine locali ogni volta?

Il terminale stesso non può inviare questo file insieme ai parametri del test di ingresso?

 
Come faccio a trovare programmaticamente il prezzo del livello del ventaglio di Fibonacci sulla barra corrente?
 
Сергей Таболин:
Come faccio a trovare programmaticamente il prezzo del livello del ventaglio di Fibonacci sulla barra corrente?
bool  ObjectGetDouble(
   long                            chart_id,          // идентификатор графика
   string                          name,              // имя объекта
   ENUM_OBJECT_PROPERTY_DOUBLE     OBJPROP_LEVELVALUE,           // идентификатор свойства
   int                             prop_modifier,     // модификатор свойства
   double&                         double_var         // сюда примем значение свойства
   );
Документация по MQL5: Графические объекты / ObjectGetDouble
Документация по MQL5: Графические объекты / ObjectGetDouble
  • www.mql5.com
2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром. [in]  Модификатор указанного свойства. Для первого варианта по умолчанию значение модификатора равно 0. Большинство свойств не требуют модификатора...
 
Alexey Viktorov:
void OnTick()
{
//---
   Print(TimeToString(TimeLocal()));
   Print(ObjectGetDouble(0,"TrL",OBJPROP_PRICE));
}

Fornisce il prezzo del primo punto della linea di tendenza. (((

2020.01.18 11:46:37.233 2019.11.29 00:00:00   2019.11.29 00:00
2020.01.18 11:46:37.233 2019.11.29 00:00:00   1.00245
2020.01.18 11:46:39.533 2019.11.29 08:00:00   2019.11.29 08:00
2020.01.18 11:46:39.533 2019.11.29 08:00:00   1.00245
2020.01.18 11:46:41.834 2019.11.29 16:00:00   2019.11.29 16:00
2020.01.18 11:46:41.834 2019.11.29 16:00:00   1.00245
2020.01.18 11:46:44.135 2019.12.02 00:00:00   2019.12.02 00:00
2020.01.18 11:46:44.135 2019.12.02 00:00:00   1.00245
Motivazione: