新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1612

 
Alexey Viktorov #:

愚蠢的第二次尝试。显然,时间已经到了晚上。

我没有弄清楚,但我不知道如何将工具分成货币。

而中间有可能出现相等的情况,我没有马上看到,但最好从第2位到第3位对工具中的货币名称是否相等进行全面搜索。或者切断第一和最后一个位置,在剩余的4位数字中搜索)

 
Valeriy Yastremskiy #:

A B C D是正确的,但我不明白如何将工具分为货币。

而且中间有可能存在相等的情况,我没有马上看到,但最好从第2位到第3位对文书中的货币名称是否相等进行全面搜索。或者切掉第1个和最后一个位置,在剩下的4个字符中搜索)。

不,我在第二次尝试时只在4种条件下得到了愚蠢的结果。毕竟,对于这项任务来说,在什么位置找到所需的物品并不重要,是在零位还是在第三位,主要是找到与否。因此,有两个条件,一个是基础货币,一个是第二货币。

 
Alexey Viktorov #:

不,我在第二次尝试时只在4种条件下得到了哑谜。毕竟,对于这项任务来说,在哪个位置找到搜索项并不重要,是零还是三,主要的是它是否被找到。因此,有两个条件,一个是基准货币,一个是第二货币。

所以我把中间的平等排除在乐器的第二或第三位置之外。如果不排除,那么它是正确的,2个条件。

 
Valeriy Yastremskiy #:

好吧,我是排除了中间的平等从而,从乐器的第二或第三位置。如果你不排除,你是正确的,2个条件。

我还是不明白 "中点平等 "是什么意思。

欧元兑美元的信号

一个欧元兑日元的订单 - 搜索欧元并找到它,弹射是真的。第二个条件不需要检查。

GBPJPY - 寻找欧元,没有找到。寻找美元,没有找到,抛出的是假的。共有两个条件。

 
Alexey Viktorov #:

我仍然不明白什么是 "中间平等"。

欧元兑美元的信号

在EURJPY上的订单--搜索EUR并找到,弹出真。第二个条件不需要检查。

GBPJPY - 寻找欧元,没有找到。寻找美元,没有找到,抛出的是假的。共有两个条件。

EURJPY在URJP中是平等的

BPJP中的GBPJPY

我同意,这是个罕见的案例。但从大量的仪器来看,这是有可能的。

 
Valeriy Yastremskiy #:

欧元兑日元在URJP中的地位

BPJP中的GBPJPY

我同意,这是个罕见的案例。但从大量的仪器来看,是有可能的。

不,我宁愿呆在我的波长上。我觉得很难理解为什么...

 

构造函数在结构中是如何工作的?

struct as{
  int a,
      b,
      c;
    void as(){
    b=0;c=0;
    a=b+c;
    }  
 };
as sir;
 

你好!我正在绞尽脑汁。

谁也不难,请大家帮忙评论。


1.变量 "bb "和相应的运算符if (bb == 0) bb = i; 的目的是什么?


2. 如果((Time[i]>=BeginDateCalc && Time[i]<=EndDateCalc && NumberOfBars<=0)

|| (NumberOfBars>0 && NumberOfBars>=i))

NumberOfBars怎么会<=0,是为了什么?


3. s += (High [i] - Low [i]) /Point;

除以点是为了什么?


4.根据循环的条件for (i = Bars; i > 0; i--),计数从 "最古老 "的条形图到 "最年轻 "的条形图。

为什么b++变量会被递增,但不会被递减?

//+----------------------------------------------------------------------------+
//|                                                          AverageRange.mq4  |
//|                                                    Ким Игорь В. aka KimIV  |
//|                                                       http://www.kimiv.ru  |
//|                                                                            |
//|  14.09.2005  Скрипт для расчёта:                                           |
//|              средней волатильности инструмента High-Low                    |
//|              Возможность использования заданного количества баров          |
//+----------------------------------------------------------------------------+
#property copyright "Ким Игорь В. aka KimIV"
#property link      "http://www.kimiv.ru"
#property  show_inputs

extern datetime BeginDateCalc = D'2013.01.01';
extern datetime EndDateCalc   = D'2013.12.31';
extern int      NumberOfBars  = 100;         


//+----------------------------------------------------------------------------+
//|  script program start function                                             |
//+----------------------------------------------------------------------------+
void start() {
   int    i;           //счётчик
   int    b  = 0;      //использовано баров
   int    bb = 0;      //?????????????????????
   int    s =  0;      //сумма всех значений High - Low
   string st = "";     //строка вывода на экран    

  for (i = Bars; i > 0; i--) {
    
    if ((Time [i] >= BeginDateCalc && Time [i] <= EndDateCalc && NumberOfBars <= 0)
    || (NumberOfBars > 0 && NumberOfBars >= i)) {
      
      if (bb == 0) bb = i;
      s += (High [i] - Low [i]) / Point;
      
      b++;
    }
  }

  st =      "Начало: " + TimeToStr (Time [bb], TIME_DATE | TIME_MINUTES) + "\n";        // "/n" - это перенос строки
  st = st + "Конец: " + TimeToStr (Time [bb - b + 1], TIME_DATE | TIME_MINUTES) + "\n";
  st = st + "Использовано баров: " + b + "\n";
  st = st + "Средняя волатильность: " + s / b + " п.\n";
  
  Comment (st);
}
//+----------------------------------------------------------------------------+
 

bb包含第一个触发条件的条形索引。然后用这个指数来计算计算的开始时间。

NumberOfBars - 这个变量是由用户设置的,这家伙不可靠,可能会设置一个负值。也许,逻辑是,如果NumberOfBars是非正数,则在开始和结束日期之间进行计算,而如果它是正数,则按用该变量设置的烛台数量计算。

分为(1.01051-1.01000)/Point=51,将小数部分 的数值转换为点。

在整个脚本运行过程中,零点后的变量bb只改变一次。 if (bb == 0)

 
Aleksei Stepanenko #:

bb包含第一个触发条件的条形索引。然后用这个指数来计算计算的开始时间。

NumberOfBars - 这个变量是由用户设置的,这家伙不可靠,可能会设置一个负值。也许,逻辑是,如果NumberOfBars是非正数,则在开始和结束日期之间进行计算。

但点的划分是为了将数值从小数部分 转移到点上 0.00051/Point=51

零后的变量bb在整个脚本运行过程中只改变一次。

说实话,我不明白Kim的逻辑,为什么条形时间超过指定的条件和计算条数的负值与OR计算条数大于条数Barz))而同时,它只是纠正了自定义参数)

而且它甚至不显示用户弄错了的提醒)