Fehler, Irrtümer, Fragen - Seite 81

 
Urain:

Der Aufruf kann mit Angabe des Zeitraums erfolgen, dann wird der Wert der angegebenen TF zurückgegeben,

oder ohne Angabe des Zeitraums, wird der Wert aus dem aktuellen zurückgegeben

(r) :o)

Ich schätze, das ist der richtige Weg, oder?

double  Close(int i,ENUM_TIMEFRAMES tf=PERIOD_CURRENT){...
 
maryan.dirtyn:
int
gleich hier oben gibt es eine Funktion für den Transfer von MQL4 zu MQL5 und Sie können zurück transferieren...
 
maryan.dirtyn:
Hallelujah... das ist ein Deal))))))
Der Zeitrahmenwert kann auf zwei Arten mithilfe einer vordefinierten Variablen ermittelt werden
int _Period

В переменной _Period хранится значение таймфрейма текущего графика.

und mit der Funktion

Period

Возвращает значение таймфрейма текущего графика.

ENUM_TIMEFRAMES  Period();
 

Возвращаемое значение

Содержимое переменной _Period, в которой хранится значение таймфрейма текущего графика. Значение может быть одним из значений перечисления ENUM_TIMEFRAMES.
 
maryan.dirtyn:

damit es so funktioniert, muss es immer noch so sein, oder?

Nein, dann wird das Überladen nicht funktionieren, Sie werden nicht kompilieren können. Mein Code ist korrekt und der Aufruf im nächsten Beitrag ist ebenfalls korrekt.
 
Urain:
Sie können von MQL4 zu MQL5 wechseln und umgekehrt...

Um die Anzahl der Minuten einer bestimmten Periode des Diagramms zu ermitteln, teilen Sie den Wert der FunktionPeriodSeconds durch 60. Dieser Link zeigt einen 404-Fehler :) Ich werde es selbst versuchen:

int PeriodMQL4()
  { switch(Period())
     {
      case PERIOD_CURRENT: return(0);
      case PERIOD_M1:     return(1);
      case PERIOD_M5:     return(5);
      case PERIOD_M15:    return(12);
      case PERIOD_M30:    return(30);
      case PERIOD_H1:     return(60);
      case PERIOD_H4:     return(240);
      case PERIOD_D1:     return(1440);
      case PERIOD_W1:     return(10080);
      case PERIOD_MN1:    return(43200);      
      default: return(0);
     }
  }

Ist das ausreichend? wird es nicht))) so viele Fehler, dass es beängstigend ist)

 
Urain:
Nein, dann wird das Überladen nicht funktionieren, Sie werden nicht kompilieren können. Mein Code ist korrekt und der Aufruf im nächsten Beitrag ist ebenfalls korrekt.
Beim Einfügen einer Funktion ohne explizite Zeitrahmenbezeichnung, d.h. nur Close(0) ... kompiliert nicht), muss ich Close(0,PERIOD_CURRENT) manuell setzen ... aber das ist nichts)
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
 
maryan.dirtyn:
int

Ahhhh, ich erinnere mich, dass es einfacher ist, aber dann muss man es durch 60 teilen, um die Minuten zu erhalten.

Возвращает количество секунд в периоде.

int  PeriodSeconds(ENUM_TIMEFRAMES  period=PERIOD_CURRENT ); // период графика



int Per=PeriodSeconds(PERIOD_D1)/60;
Print("Period=",Per);
 
Urain:

Ahhhh, ich erinnere mich, dass es einfacher ist, aber dann muss man durch 60 dividieren, um die Minuten zu erhalten.

Oh, danke)) Möge die Macht mit dir sein)
 

Ein Bit für die Arbeit mit Perioden wie in MQL4

//Fumction MinuteToPeriod
ENUM_TIMEFRAMES MinuteToPeriod(int Value)
//Преобразовывает число сикунд в период, возвращаемый как ENUM_TIMEFRAMES
{
//----------------------------------------------------------------------------//
//Work variables / Служебные переменные
ENUM_TIMEFRAMES Result;
//----------------------------------------------------------------------------//
  switch(Value)
  {
  //Перирд текущещего графика
  case   0: return(PERIOD_CURRENT); break;
  //Минуты
  case   1: return(PERIOD_M1);  break;   //1 минута
  case   2: return(PERIOD_M2);  break;   //2 минуты
  case   3: return(PERIOD_M3);  break;   //3 минуты
  case   4: return(PERIOD_M4);  break;   //4 минуты
  case   5: return(PERIOD_M5);  break;   //5 минуты
  case   6: return(PERIOD_M6);  break;   //6 минуты
  case  10: return(PERIOD_M10); break;   //10 минуты
  case  12: return(PERIOD_M12); break;   //12 минуты
  case  15: return(PERIOD_M15); break;   //15 минуты
  case  20: return(PERIOD_M20); break;   //20 минуты
  case  30: return(PERIOD_M30); break;   //30 минуты
  //Часы
  case  60: return(PERIOD_H1); break;    //60 минут  - 1 час
  case 120: return(PERIOD_H2); break;    //120 минут - 2 часа  
  case 180: return(PERIOD_H3); break;    //180 минут - 3 часа
  case 240: return(PERIOD_H4); break;    //240 минут - 4 часа
  case 360: return(PERIOD_H6); break;    //360 минут - 6 часов
  case 480: return(PERIOD_H8); break;    //480 минут - 8 часов
  case 720: return(PERIOD_H12); break;   //720 минут - 12 часов
  //Старшие ТФ
  case 1440: return(PERIOD_D1); break;   //1 день
  case 10080: return(PERIOD_W1); break;  //1 неделя 
  case 43200: return(PERIOD_MN1); break; //1 месяц 
  //Default
  default: return(PERIOD_CURRENT);
  }
//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}

//Fumction PeriodToMinute
int PeriodToMinute(ENUM_TIMEFRAMES Value)
//Возвращает число секунд в периоде
{
//----------------------------------------------------------------------------//
//Work variables / Служебные переменные
int Result;
//----------------------------------------------------------------------------//
Result = PeriodSeconds(Value)/60;
//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}
 

Ich führe einen Test von 2010.01.01 bis heute durch. Ich gebe das Datum des allerersten Taktes 2009.01.02 aus.

Wie kann ich erreichen, dass der erste verfügbare Balken z.B. 2006.01.02 ist?

Grund der Beschwerde: