Errori, bug, domande - pagina 279

 
Rosh:
No.
Ecco perché l'accesso simultaneo non può essere organizzato:(((
 
Olegts:
è per questo che l'accesso simultaneo non può essere organizzato:((((.

È possibile, il file aperto in MT5 con il flag di condivisione sarà anche disponibile per qualsiasi altro programma, compreso MT4.

Guarda come si fa qui.

cioè se il file è già aperto in MT4, il flag Shaare permetterà di aprirlo da MT5 senza problemi. Si scopre che MT4 funziona come al solito, mentre MT5 può consentire ad altri programmi di utilizzare un file già aperto da esso, o aprire un file che è aperto da qualcun altro senza la bandiera di shahre.

 
Urain:

È possibile, il file aperto in MT5 con il flag di condivisione sarà anche disponibile per qualsiasi altro programma, compreso MT4.

Guarda come si fa qui.

Grazie, ora darò un'occhiata...
 
Olegts:
Grazie, ora darò un'occhiata...
Ho guardato, MT5 scrive e MT4 legge, funziona, ma se MT4 scrive, MT5 non può leggere perché il file è bloccato, almeno non ha funzionato per me...
 
La sezione di aiuto nella descrizione del tipo di dati dice:
<br / translate="no">

Per questo motivo, è categoricamente sconsigliato confrontare due numeri reali tra loro per l'uguaglianza, poiché tale confronto non è corretto.

E viene suggerito un metodo di confronto speciale.

Se hai ancora bisogno di confrontare due numeri reali per l'uguaglianza, puoi...

Ma poi segue una conclusione logica che non è raccomandabile confrontare i numeri reali anche per mezzo di operazioni maggiore/peggiore perché tale operazione, nel senso di quanto detto sopra, è corretta solo quando un metodo speciale stabilisce prima correttamente che i valori controllati non sono uguali in termini di zero macchina.

Cioè si scopre che anche gli operatori > e < per i numeri reali non possono essere usati in forma pura. Ho capito bene, e se sì, perché non aggiungo un commento corrispondente all'aiuto?


Ma, se l'operatore, per esempio, >, può essere usato solo dopo un controllo corretto della disuguaglianza, allora come possiamo organizzare il controllo di >=? È necessario complicare ancora di più l'algoritmo, cioè controllare l'uguaglianza prima con una funzione speciale, e poi con una funzione speciale per la disuguaglianza (prima di usare >)?


Forse qualcuno ha già sviluppato una libreria per tutti i casi di confronto per i tipi doppio e float? Ho abbozzato qualcosa per il tipo doppio - non so se è corretto:

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на равенство двух вещественных чисел типа double
bool EqualDoubles(const double d1, const double d2)
   {  
      const double epsilon=2.2204460492503131 e-016;//DBL_EPSILON
      if(d1-d2>epsilon) return false;
      if(d1-d2<-epsilon) return false;
      return true;
   }
// Конец функции проверки на равенство двух вещественных чисел типа double
//+++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на неравенство двух вещественных чисел типа double
bool NotEqualDoubles(const double d1, const double d2)
   {      
      return !EqualDoubles(d1, d2);
   }
// Конец функции проверки на неравенство двух вещественных чисел типа double
//+++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на меньшинство первого из двух вещественных чисел типа double
bool LessDoubles(const double d1, const double d2)
   {  
      if (NotEqualDoubles(d1, d2)&&(d1<d2))
      {
         return true;
      }
      return false;
   }
// Конец функции проверки на меньшинство первого из двух вещественных чисел типа double
//+++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на большинство первого из двух вещественных чисел типа double
bool GreaterDoubles(const double d1, const double d2)
   {  
      if (NotEqualDoubles(d1, d2)&&(d1>d2))
      {
         return true;
      }
      return false;
   }
// Конец функции проверки на большинство первого из двух вещественных чисел типа double
//+++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на меньшинство первого или равенство двух вещественных чисел типа double
bool LessEqualDoubles(const double d1, const double d2)
   {  
      if (LessDoubles(d1, d2)||EqualDoubles(d1, d2))
      {
         return true;
      }
      return false;
   }
// Конец функции проверки на меньшинство первого или равенство двух вещественных чисел типа double
//+++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на большинство первого или равенство двух вещественных чисел типа double
bool GreaterEqualDoubles(const double d1, const double d2)
   {  
      if (GreaterDoubles(d1, d2)||EqualDoubles(d1,d2))
      {
         return true;
      }
      return false;
   }
// Конец функции проверки на большинство первого или равенство двух вещественных чисел типа double

P.S. Se prevcalculated==0 funziona di nuovo come al solito. Insetto galleggiante?

 

Buon pomeriggio!

Ho bisogno di usare un indicatore personalizzato nel modulo dei segnali di trading.

Per questo, per quanto ho capito, ho bisogno di aggiungere un puntatore a questo oggetto indicatore in "collection of indicators(timeseries?)" come si fa nell'esempio:

indicators.Add(GetPointer(m_MA)))

dove m_MA è un oggetto della classe CiMA.

Le funzioni iCustom e IndicatorCreate restituiscono il valore intero di un handle dell'indicatore creato, ma io ho bisogno di un oggetto di questo indicatore, come lo capisco.

Per favore, consigliate come uscire da questa situazione?

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 
lVlaxim:

Buon pomeriggio!

Ho bisogno di usare un indicatore personalizzato nel modulo dei segnali di trading.

Per questo, per quanto ho capito, ho bisogno di aggiungere un puntatore a questo oggetto indicatore in "collection of indicators(timeseries?)" come si fa nell'esempio:

dove m_MA è un oggetto della classe CiMA.

Le funzioni iCustom e IndicatorCreate restituiscono il valore intero di un handle dell'indicatore creato, ma io ho bisogno di un oggetto di questo indicatore, come lo capisco.

Per favore, consigliate come uscire da questa situazione?

Per quanto ho capito, dovrei scrivere il mio oggetto indicatore basato su CiCustom (simile a come è scritto CiMA).

Non posso consigliare nei dettagli, perché non ho lavorato con induks, ma penso che capirete o la gente vi dirà la giusta realizzazione.

PS

A proposito, sviluppatori, aggiungete esempi alla sezione CiCustom...

 
-Alexey-:

E viene suggerito un metodo di confronto speciale.

Ma poi segue logicamente che non è raccomandabile confrontare i numeri reali anche per mezzo di operazioni di maggiore/peggiore, perché una tale operazione, nel senso di cui sopra, è corretta solo se prima si stabilisce correttamente, con un metodo speciale, che i valori da controllare non sono uguali nel senso della macchina zero.

Forse non ho capito bene il punto, ma se si confrontano due numeri reali, diciamo, con l'aiuto dell'operazione "<" e i numeri reali controllati sono "uguali nel senso della macchina zero", l'operazione "<" restituirà semplicemente falso. Che significa "il primo numero reale non è inferiore al secondo numero reale".
 
lVlaxim:

Buon pomeriggio!

Ho bisogno di usare un indicatore personalizzato nel modulo dei segnali di trading.

Per questo, per quanto ho capito, ho bisogno di aggiungere un puntatore a questo oggetto indicatore in "collection of indicators(timeseries?)" come si fa nell'esempio:

dove m_MA è un oggetto della classe CiMA.

Le funzioni iCustom e IndicatorCreate restituiscono il valore intero di un handle dell'indicatore creato, ma io ho bisogno di un oggetto di questo indicatore, come lo capisco.

Potreste consigliarmi come uscire da questa situazione?

Per ora, prendete questo file come esempio.

La classe CSignalCustomMACD è assolutamente identica a CSignalMACD, eccetto per il fatto che è basata sulla versione "personalizzata" dell'indicatore dalla consegna standard.

Non dimenticate di aggiungere una linea nel codice sorgente dell'Expert Advisor:

#property tester_indicator "Examples\MACD.ex5"

altrimenti non funzionerà nel tester.

Se non c'è un file MACD.ex5 nella cartella Indicators\Examples, l'indicatore deve essere compilato.

Un esempio nell'aiuto sarà aggiunto nel prossimo futuro.

File:
 
Yedelkin:
Forse non capisco bene il problema, ma se due numeri reali vengono confrontati usando, per esempio, l'operazione "<", e i numeri reali controllati sono "uguali nel senso della macchina zero", allora l'operazione "<" restituirà semplicemente falso, e basta. Che significherebbe "il primo numero reale non è inferiore al secondo numero reale".
Questo sarebbe logico, ma ora l'operazione ">" ("<" non ha controllato) può restituire vero per tali numeri "uguali nel senso della macchina zero". L'effetto è stato rilevato perché il risultato del calcolo numerico era più grande di quello teoricamente possibile a causa di questo effetto, ma dopo aver usato le funzioni speciali di cui sopra è diventato vero. Ecco perché propongo un'aggiunta all'aiuto.
Motivazione: