初学者的问题 MQL5 MT5 MetaTrader 5 - 页 965

 
Vladimir Karputov:

最好不要混淆,使用一种方法:要么交易类CSymbolInfo,要么使用SymbolInfoXXXX这样的系统函数。

是的,谢谢你。我还可以澄清一下。

它是否会导致错误,还是只是对编码文化的一种建议?

 
vladzeit:

嗯哼,谢谢你。我还可以澄清一下。

这是否会导致错误,还是说这只是对编码文化的一种建议?

没有人禁止使用油菜花,但是:随着时间的推移,你不会混淆自己的变量名称,你不会记得你在变量中更新或没有更新数据吗?

 
Vladimir Karputov:

没有人禁止使用油菜花,但是:随着时间的推移,你不会混淆自己的变量名称,记住你是否更新了变量中的数据?

谢谢你,我明白了)

 
Vladimir Karputov:

如果你需要比较同一时间段的几个时间序列,可以使用一个MqlRates 类型的数组->,并使用CopyRates来填充这个数组

将时间存储在MqlDateTime 结构中是很方便的--使用TimeToStruct 将时间从日期时间 转换为MqlDateTime 结构。

现在你的例子1将看起来像这样。

谢谢你的说明性回答。但也有一些问题...

1.什么是?和。只找到::背景。

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

2.在MT4中哪个条目元素定义了[h]条目

//--- 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.在MT4中哪个条目元素定义了[h]条目

//--- 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.在MT4中哪个条目元素定义了[h]条目

-->

我认为InpBarTime。你怎么看?

目前,我几乎不认为,在通常意义上,该状态....我是BLONDING,手里拿着千斤顶)))。

你已经全局声明InpBarTime=3; 而在MT4中[h]是从这里到那里通常是一个循环(对于限制......)。

#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 的写作风格。开始研究代码,看看帮助。

原因: