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

 
Alexey Kozitsyn:
Attraverso un file, per esempio...

se non è troppo disturbo, un po' più di dettagli.

 
виталик:

se non ti dispiace, un po' più di dettagli.

Per estrarre le citazioni, usa le funzioni Copy:

https://www.mql5.com/ru/docs/series

Poi https://www.mql5.com/ru/docs/files è un link alle operazioni sui file.

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Файловые операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Buona sera, sto facendo un modello di "rotaie", ma non riesco a farlo funzionare.... potete vedere cosa c'è che non va? Grazie in anticipo.
File:
jzogyr2.mq4  6 kb
 
sviter-pro:
Buona sera, sto facendo un modello di "rotaie", ma non riesco a farlo funzionare.... potete vedere cosa c'è che non va? Grazie in anticipo.

int OnInit()
  {

   SetIndexBuffer(0,BuyTrain); SetIndexStyle(0,DRAW_ARROW,EMPTY,RazmerStrelok,coloru); SetIndexArrow(0,159); SetIndexEmptyValue(0,EMPTY_VALUE);
   SetIndexBuffer(1,SelTrain); SetIndexStyle(1,DRAW_ARROW,EMPTY,RazmerStrelok,colord); SetIndexArrow(1,159); SetIndexEmptyValue(1,EMPTY_VALUE);

   return(INIT_SUCCEEDED);
  }

E queste condizioni non saranno mai soddisfatte

   double high2=0.0,high3=0.0,high4=0.0,high5=0.0,high6=0.0,high7=0.0,size1=0.0,size2=0.0,body1=0.0,body2=0.0;

      if(Close1<Open1 && Close2>Open2
         && MathAbs(High1-High2)<=5*Point
         && high3<high2
         && high4<high2
         && high5<high2
         && high6<high2
         && high7<high2
         && body1 >= size1 * 0.7
         && body2 >= size2 * 0.7
         && size1 >= 20 * Point && size2 >= 20 * Point)
        {
         BuyTrain[i]=low[i]-OtstupStrelok*Point;
        }
      if(Close1>Open1
         && Close2<Open2
         && MathAbs(Low1-Low2)>=5*Point
         && high3>high2
         && high4>high2
         && high5>high2
         && high6>high2
         && high7>high2
         && body1 <= size1 * 0.7
         && body2 <= size2 * 0.7
         && size1 <= 20 * Point
         && size2 <= 20 * Point)
        {
         SelTrain[i]=high[i]-OtstupStrelok*Point;
        }
 

Il compito è questo: devo determinare quante barre ci saranno prima delle prossime ore 01.00. L'ho fatto finora con un ciclo, ma forse è più corretto farlo in qualche modo con iBarShift? Forse è più corretto farlo in modo diverso?

      int ShiftBar=0;
      for(int cnt=0; cnt<100; cnt++)
        {
         int hour=TimeHour(iTime(Symbol(),PERIOD_M30,cnt));
         if(hour==1)
           {
            ShiftBar=cnt;
            break;
           }
        }
        Print("ShiftBar= ",ShiftBar);
 
Nauris Zukas:

Il compito è questo: devo determinare quante barre ci saranno prima delle prossime ore 01.00. L'ho fatto finora con un ciclo, ma forse è più corretto farlo in qualche modo con iBarShift? Forse è più corretto farlo in un modo completamente diverso?

Per una transizione più indolore a mql5 in futuro, sarebbe meglio usare funzioni che sono usate in entrambi i linguaggi. Per cercare il numero di barre è meglio usare

int  Bars(
   string           symbol_name,     // имя символа
   ENUM_TIMEFRAMES  timeframe,       // период
   datetime         start_time,      // с какой даты
   datetime         stop_time        // по какую дату
   );

In realtà, iBarShift() farà il lavoro meglio di cycle.

Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
 
Alexey Viktorov:

Per una transizione più indolore a mql5 in futuro, è meglio utilizzare le funzioni usate in entrambi i linguaggi. Per cercare il numero di barre è meglio usare

La iBarShift() può gestire questo compito meglio del ciclo.

Sì, ma il problema è trovare le ore 01.00 più vicine. Come lo troverete?
int iBarShift(
simbolo stringa,// simbolo
inttimeframe, // periodo
datetimetempo, // tempo ?????????
bool exact=false // modo
);
 
Nauris Zukas:
Sì, ma il problema è trovare le ore 01.00 più vicine. Come si determina questo?
int iBarShift(
simbolo stringa,// simbolo
inttimeframe, // periodo
datetimetempo, // tempo ?????????
bool exact=false // modo
);

Forum sul trading, sistemi di trading automatico e test di strategia

Qualsiasi domanda per i principianti su MQL4, aiuto e discussione su algoritmi e codici

Alexey Viktorov, 2017.07.27 13:54

Se vuoi fare una transizione indolore a mql5 in futuro, sarebbe meglio usare funzioni che sono usate in entrambi i linguaggi. Per cercare il numero di barre è meglio usare

int  Bars(
   string           symbol_name,     // имя символа
   ENUM_TIMEFRAMES  timeframe,       // период
   datetime         start_time,      // с какой даты
   datetime         stop_time        // по какую дату
   );

In linea di principio, iBarShift() può gestire questo compito meglio di un ciclo.

Restituisce il numero di barre tra il tempo specificato e il tempo corrente, se il tempo della barra corrente è specificato come stop_time.

L'unico problema è che non riempio mai la mia cella di memoria con cose inutili come quello a cui sarà uguale il valore ottenuto, data una barra con il tempo specificato, o meno di 1. Controllo ogni volta.

 
Alexey Viktorov:

Restituisce il numero di barre tra il tempo specificato e il tempo corrente, se il tempo della barra corrente è specificato come stop_time.

L'unico problema è che non intaso mai la mia cella di memoria con roba inutile come quello a cui il valore sarà uguale, compresa la barra con il tempo specificato o meno di 1. Controllo ogni volta.

Questo lo capisco, ma cercate di entrare nella questione. Come si fa a trovare l'ora specificata - nel mio caso è necessario trovare le ore 01.00 più vicine. Come si fa a scriverlo?
datetime start_time, // da quale data?

 
Nauris Zukas:

Questo lo capisco, ma cercate di entrare nella questione. Come trovate l'ora specificata - nel mio caso dovete trovare le ore 01.00 più vicine. Come si fa a scriverlo?
datetime start_time, // da quale data?

 datetime t=StringToTime("01:00");
 int b=Bars(_Symbol, PERIOD_M30, t, TimeCurrent());
All'ora corrente 17:08 mostra 33. Cioè il numero della barra con il tempo 01:00 sarà 32.