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

 
Vitalii Ananev:
那么你只需要在一定时间后取iHigh(Symbol(),PERIOD_D1,0)的值。 这只对当日蜡烛有意义,因为它还没有完全形成。但如果你把过去几天的价值,它们在任何时候都是一样的。
这就是问题所在,我需要回顾一下....。
 
-Aleks-:
这就是麻烦所在,我需要回顾一下....。

我明白了。你需要修复所有的日内价格极值。我无法快速思考如何在历史数据上做到这一点。

首先想到的是分析在日内时间框架上形成的分形。

 

我不知道如何说得更清楚,一般来说,如何将数组的名称设置为一个变量?

例如,有两个数组Mass1和Mass2,你需要让它运行相同的函数,但要以两个不同的数组为条件。

if(условие==true)

	И мя_массива=Mass1

else 

	 Имя_массива=Mass2

和功能的类型。

A=Имя_массива[123];
 
VANDER:

我不知道如何说得更清楚,一般来说,如何将数组的名称设置为一个变量?

例如,有两个数组Mass1和Mass2,你需要让它运行相同的函数,但要以两个不同的数组为条件。

和功能的类型。

而只是声明两个数组,防止什么信仰?
 
VANDER:

我不知道如何说得更清楚,一般来说,如何将数组的名称设置为一个变量?

例如,有两个数组Mass1和Mass2,你需要让它运行相同的函数,但要以两个不同的数组为条件。

井和类型的功能。

不可能。因为数组是一个编号的变量

 
VANDER:

我不知道如何说得更清楚,一般来说,如何将数组的名称设置为一个变量?

例如,有两个数组Mass1和Mass2,你需要让它运行相同的函数,但要以两个不同的数组为条件。

井和功能类型。

做一个函数,在里面对数组进行操作。并通过条件,将不同的数组传递给函数。

//+------------------------------------------------------------------+
double massive_a[];
int a, massive_b[];
//+------------------------------------------------------------------+
void OnTick() {
   if(a==1) WorkWithMassive(massive_a);
   else WorkWithMassive(massive_b);
}
//+------------------------------------------------------------------+
void WorkWithMassive(double &massive[]) {
   // работаем с массивом а
   }
//+------------------------------------------------------------------+
void WorkWithMassive(int &massive[]) {
   // работаем с массивом b
   }
//+------------------------------------------------------------------+
 
Vitalie Postolache:
而仅仅声明两个数组就能防止什么信念?
它们都被声明了,只是这个函数很大,而且对所有数组都一样,所以有必要选择
 
Artyom Trishkin:

制作一个函数,在其中对数组进行操作。并按条件将不同的数组传入函数。

哎呀,但是在WorkWithMassive 函数里面,你是如何引用这个数组的?
 
VANDER:
哎呀,但是在WorkWithMassive 函数里面,你是如何引用这个数组的?

数组是通过引用传递的,你所指的正是你通过输入参数传递给函数的数组。例如(纯属假想)

//+------------------------------------------------------------------+
void WorkWithMassive(double &massive[]) {
   int a=20;
   ArrayResize(massive,a);
   for(int i=a-1; i>=0; i--) {
      massive[i]=iOpen(Symbol(),Period(),a);
      }
   }
//+------------------------------------------------------------------+

当然,最好是把所有必要的参数传给函数。

//+------------------------------------------------------------------+
void WorkWithMassive(string symbol, int timeframe, double &massive[]) {
   int a=20;
   ArrayResize(massive,a);
   for(int i=a; i>=0; i--) {
      massive[i]=iOpen(symbol,timeframe,a);
      }
   }
//+------------------------------------------------------------------+

以及你可以使用函数重载--一个具有相同名称的函数根据输入参数和类型做不同的事情。

//+------------------------------------------------------------------+
void WorkWithMassive(string symbol, int timeframe, double &massive[]) {
   int a=20;
   ArrayResize(massive,a);
   for(int i=a; i>=0; i--) massive[i]=iOpen(symbol,timeframe,a);
   }
//+------------------------------------------------------------------+
int WorkWithMassive(int inp_value, int array_size, int &massive[]) {
   ArrayResize(massive,array_size);
   massive[array_size-1]=inp_value*2;
   return(massive[array_size-1]+massive[0]);
   }
//+------------------------------------------------------------------+
 
-Aleks-:
对。

1.确定每日蜡烛的开盘时间。

确定你想要的TF上的条数(如果你想每15分钟检查一天的极值--M15条)。

3.接收num条的数据高电平。

3.在循环中,将所有高位条的值与所需日蜡烛的变量dayHigh进行比较(最初dayHigh=0)。

4.如果high>dayHigh,你就把新的值储存在变量dayHigh中。