Domande da un "manichino" - pagina 38

 

E così. Sta succedendo! Neanche un anno dopo. Ho deciso! Ho controllato la documentazione di MQL5. Ho iniziato molto in piccolo: ho minimizzato il codice di qualche indicatore nel tentativo di semplificare e capire la sua struttura e il suo funzionamento. Poi mi sono stordito.

Prima ho scavato Fractals - sembrava essere inaspettatamente piccolo e molto semplice. Poi ho ragionato logicamente: non è ragionevole trascinare questo codice da un programma all'altro, dovrei semplicemente chiamare questo indicatore, copiare e utilizzare i valori del buffer già calcolati. Se non sbaglio la direzione, sono stato portato al passo quasi standard e portato ad un esempio con iFractals ("L'ho fatto bene?" (c)). Ho ridotto il codice il più possibile, eliminato tutto il superfluo e convenzionalmente inutile, lasciando solo l'essenza. E cosa ho trovato? Il codice della chiamata dell'indicatore non è più compatto del codice originale dell'indicatore stesso in termini di dimensioni e leggibilità.

Le domande.

1. Qual è il significato di iFractals?

2. Cosa c'è di sbagliato in me?

Grazie!

P.S.: O è solo un caso speciale in cui non c'è alcun beneficio nella quantità di secondo codice?

 
x100intraday:

2. Cosa c'è di sbagliato in me?

Questo non è un forum per psichiatri, ma per programmatori MQL. Di solito non si vuole andare a ficcare il naso negli scarafaggi degli altri.

Sii più specifico nelle tue domande.
 

È una questione di

della vita e della morte...

Qual è il modo non criminale per ottenere il valore della barra aperta [15625] H1 del timeframe

Ho provato, non importa quanto duramente ci abbia provato... Ho provato di tutto, quindi chissà... So che sono 3 righe di codice... ma che... la destra... la destra... in modo che non dia un errore...

 
BaTTLeBLooM:

È una questione di

della vita e della morte...

Quale modo non criminale per ottenere il valore della barra aperta [15625] del timeframe H1

Ho fatto del mio meglio per ottenere un errore critico... Ho provato ogni sorta di cose, quindi chissà... So che sono 3 righe di codice... ma che... la destra... la destra... in modo che non dia un errore...


Per favore, datemi il vostro codice.

 
Renat:

Per favore, ci dia il suo codice.

qui è

doppio MTime ( int mode )
{

doppio iOpen_min [], iOpen_hour [], iOpen_4hour [];

ArraySetAsSeries ( iOpen_min, true );
ArraySetAsSeries ( iOpen_hour, true );
ArraySetAsSeries ( iOpen_4hour, true );
int rates_open_min, rates_open_hour, rates_open_4hour;
int err = 0;
do
{
rates_open_min = CopyOpen ( NULL, PERIOD_M1, 0, 7501, iOpen_min );
rates_open_hour = CopyOpen ( NULL, PERIOD_H1, 0, 20000, iOpen_hour );
rates_open_4hour = CopyOpen ( NULL, PERIOD_H4, 0, 10000, iOpen_4hour );
errare ++;
}
while ( ( rates_open_min <= 0 || rates_open_hour <= 0 || rates_open_4hour <= 0) && err < 10 );

double Minute2 = iOpen_min [ 0 ] - iOpen_min [ 2 ];
doppio Minute12 = iOpen_min [ 0 ] - iOpen_min [ 12 ];
double Hour = iOpen_min [ 0 ] - iOpen_min [ 60 ]; // Hour
double Hour5 = iOpen_min [ 0 ] - iOpen_min [ 300 ]; // 5 ore
double Day = iOpen_min [ 0 ] - iOpen_min [ 1500 ]; // Day
double Week = iOpen_min [ 0 ] - iOpen_min [ 7500 ]; // Settimana
double Month = iOpen_hour [ 0 ] - iOpen_hour [ 625 ]; // Month
double Month5 = iOpen_hour [ 0 ] - iOpen_hour [ 3125 ]; // metà anno

double Month25 = iOpen_hour [ 0 ] - iOpen_hour [ 15625 ]; // 3 anni

sull'ultima linea dell'ultimo operatore, c'è sempre un errore critico... L'Expert Advisor può anche iniziare a fare trading nello Strategy Tester, e poi, dopo un anno e mezzo di funzionamento, genera un errore e si blocca

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
 
BaTTLeBLooM:

l'errore critico è il superamento dei limiti dell'array.

in qualche modo si potrebbe provare questo:

      do
         {    
            //if(err>0) Sleep(10);//желательно с паузой
            rates_open_min = CopyOpen ( NULL, PERIOD_M1, 0, 7501, iOpen_min );
            rates_open_hour = CopyOpen ( NULL, PERIOD_H1, 0, 20000, iOpen_hour );
            rates_open_4hour = CopyOpen ( NULL, PERIOD_H4, 0, 10000, iOpen_4hour );           
            err ++;
         }
      while ( ( rates_open_min < 7501 || rates_open_hour < 20000 || rates_open_4hour < 10000) && err < 10 );   

   if(rates_open_min<7501 || rates_open_hour<20000 || rates_open_4hour<10000) return(-1);//Данные не скопированы
   else
      {
      double Minute2 = iOpen_min [ 0 ] - iOpen_min [ 2 ];
      double Minute12 = iOpen_min [ 0 ] - iOpen_min [ 12 ];
      double Hour = iOpen_min [ 0 ] - iOpen_min [ 60 ];   // Час
      double Hour5 = iOpen_min [ 0 ] - iOpen_min [ 300 ];     // 5 Часов
      double Day = iOpen_min [ 0 ] - iOpen_min [ 1500 ];   // День
      double Week = iOpen_min [ 0 ] - iOpen_min [ 7500 ];  // Неделя
      double Month = iOpen_hour [ 0 ] - iOpen_hour [ 625 ];   // Месяц
      double Month5 = iOpen_hour [ 0 ] - iOpen_hour [ 3125 ];  // Полугодие
      double Month25 = iOpen_hour [ 0 ] - iOpen_hour [ 15625 ];  // 3 года
      }
 
Swan:

errore critico - superamento dei limiti dell'array.

In qualche modo, possiamo provare in questo modo:

Questo non cambia l'essenza del problema... Se non copia ulteriormente i dati... L'Expert Advisor non farà trading come prima, ma senza errori...

Il problema è perché questa situazione si verifica in primo luogo, se la storia è enorme... e non puoi usarlo...

 
Renat:

Per favore, fornisci il tuo codice.

Beh, dato che non c'è risposta, inserirò manualmente )))), dato che c'è solo un valore
 
BaTTLeBLooM:
Beh, visto che non c'è risposta, inserirò manualmente )))), visto che c'è solo un valore.

Non hai nessun controllo nel tuo codice. Cosa vuoi allora?

 
BaTTLeBLooM:

Questo non cambia il problema... se non copia ulteriormente i dati... L'Expert Advisor non farà trading come prima, ma senza errori...

Il problema è perché si verifica questa situazione, se la storia è enorme... e non puoi usarlo...

I dati saranno copiati, ma non sempre al primo tentativo... e dopo un errore critico, l'Expert Advisor smette di funzionare.

mentre( ... rates_open_hour <= 0 // solo la quantità di dati, disponibile al momento, sarà copiata, e l'array, rispettivamente, può essere inferiore a 15625.


La situazione si verifica a causa della mancanza di lettura dei manuali :)

Документация по MQL5: Программы MQL5 / Ошибки выполнения
Документация по MQL5: Программы MQL5 / Ошибки выполнения
  • www.mql5.com
Программы MQL5 / Ошибки выполнения - Документация по MQL5