Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 965

 
Vladimir Karputov:

Лучше не путать и использовать один подход: или торговый класс CSymbolInfo или же системные функции вида SymbolInfoXXXX.

Угу, спасибо. можно ещё уточнить.

Это может приводить к ошибкам или это только рекомендация по культуре кодирования?

 
vladzeit:

Угу, спасибо. можно ещё уточнить.

Это может приводить к ошибкам или это только рекомендация по культуре кодирования?

Использовать винегрет никто не запрещает, НО: не запутаетесь ли Вы сами со временем с именами переменных, будете ли помнить - обновили или не обновили данные в переменной?

 
Vladimir Karputov:

Использовать винегрет никто не запрещает, НО: не запутаетесь ли Вы сами со временем с именами переменных, будете ли помнить - обновили или не обновили данные в переменной?

Спасибо, понятно)

 
Vladimir Karputov:

Если нужно сравнивать несколько таймсерий одного таймрейма, работайте с массивом типа MqlRates -> и для заполнения этого массива используйте CopyRates.

Время удобно хранить в структуре  MqlDateTime -> для конвертации времени из datetime в структуру  MqlDateTime используйте TimeToStruct.

Теперь Ваши пример 1 будет выглядеть так:

Спасибо за наглядные ответы. Но есть вопросы...

1. Что значит ? и :    Нашел только :: контекст

int count=(InpBarTime<10)?10:InpBarTime+1;

2. Какой элемент записи определяет [h] записи в МТ4

//--- example 1
// if(Period()<=PERIOD_H4 && TimeHour(Time[h])==0 && TimeMinute(Time[h])==0)
   MqlDateTime SDateTime;
   TimeToStruct(rates[InpBarTime].time,SDateTime); // Converts a value of datetime type into a structure variable MqlDateTime
   if(Period()<=PERIOD_H4 && SDateTime.hour==0 && SDateTime.min==0)
     {

     }
  
 
kopeyka2:

Спасибо за наглядные ответы. Но есть вопросы...

1. Что значит ? и :    Нашел только :: контекст

int count=(InpBarTime<10)?10:InpBarTime+1;

-->

Это сокращенная форма. Всё равно, что:

int count=0;
if(InpBarTime<10)
   count=10;
else
   count=InpBarTime+1;



2. Какой элемент записи определяет [h] записи в МТ4

//--- example 1
// if(Period()<=PERIOD_H4 && TimeHour(Time[h])==0 && TimeMinute(Time[h])==0)
   MqlDateTime SDateTime;
   TimeToStruct(rates[InpBarTime].time,SDateTime); // Converts a value of datetime type into a structure variable MqlDateTime
   if(Period()<=PERIOD_H4 && SDateTime.hour==0 && SDateTime.min==0)
     {

     }

-->

Я думаю, что InpBarTime. А Вы как думаете?

 

 Что значит ? и :    Нашел только :: контекст

int count=(InpBarTime<10)?10:InpBarTime+1;


https://www.mql5.com/ru/docs/basis/operators/ternary

последнее время этот оператор стал модным, все чаще используют

Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
  • www.mql5.com
В качестве первого операнда – "выражение1" – может быть использовано любое выражение, результатом которого является значение типа bool. Если результат равен , то выполняется третий операнд – "выражениеЗ". Второй и третий операнды, то есть "выражение2" и "выражениеЗ", должны возвращать значения одного типа и не должны иметь тип void...
 
Vladimir Karputov:
kopeyka2:

Спасибо за наглядные ответы. Но есть вопросы...

1. Что значит ? и :    Нашел только :: контекст

-->

Это сокращенная форма. Всё равно, что:



2. Какой элемент записи определяет [h] записи в МТ4

-->

Я думаю, что InpBarTime. А Вы как думаете?

Я сейчас почти не думаю, в привычном понимании этого состояния.... Я БЛОНДИНКА с домкратом в руках))) 

Вы глобально обьявили InpBarTime=3; А в МТ4 [h] это от сюда до сюда обычно по циклу (for limit ......)

#property script_show_inputs
//--- input parameters
int InpBarTime=3; // Bar where we compare the time
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()

Нашел Индикатор Market_Sessions  Там интересная  конструкция.… Пытаюсь вьехать остатками внутреннего диалога в моей голове...))))

Файлы:
 
kopeyka2:

Я сейчас почти не думаю, в привычном понимании этого состояния.... Я БЛОНДИНКА с домкратом в руках))) 

И Вы глобально написали так 

Нашел Индикатор Market_Sessions  Там интересная  конструкция.… Пытаюсь вьехать остатками внутреннего диалога в моей голове...))))

А, извиняюсь, нужно было так писать:

//--- input parameters
input int InpBarTime=3; // Bar where we compare the time
 
Fast528:

 Что значит ? и :    Нашел только :: контекст


https://www.mql5.com/ru/docs/basis/operators/ternary

последнее время этот оператор стал модным, все чаще используют

ОК !!!


Верно ли я понял

//if(Period()<=PERIOD_H4 && TimeHour(Time[h])==0 && TimeMinute(Time[h])==0)
   MqlDateTime SDateTime;
   TimeToStruct(rates[InpBarTime].time,SDateTime); // Converts a value of datetime type into a structure variable MqlDateTime
   if(Period()<=PERIOD_H4 && SDateTime.hour==0 && SDateTime.min==0)
     {

     }
// А ЕСЛИ ПО ЦИКЛУ ?
int InpBarTime=10;
for(int a=0; a<=InpBarTime; a++) 
 {
//if(Period()<=PERIOD_H4 && TimeHour(Time[h])==0 && TimeMinute(Time[h])==0)
   MqlDateTime SDateTime;
   TimeToStruct(rates[InpBarTime].time,SDateTime); // Converts a value of datetime type into a structure variable MqlDateTime
   if(Period()<=PERIOD_H4 && SDateTime.hour==0 && SDateTime.min==0)
     {

     }
Запустив InpBarTime по циклу будем иметь цикл, но в структуре. Правильно?
 
kopeyka2:

ОК !!!


Верно ли я понял

Ничего Вы не поняли. Я Вам дал рабочий пример. Запускайте его. ЗАбудьте письменность в стиле MQL4. Начните изучать код и смотреть справку.

Причина обращения: