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

 
Igor Zakharov:

使用ATR指标

谢谢,但我还是不明白它怎么能用在我的案子上。

有人抛出了一个CopyRates 的链接(谢谢,可惜评论已经被删除了),所以我想了解iVolume()是高价和低价的区别还是别的什么?

也就是说,在我的案例中(按照我的理解),我可以创建一个月度和周度数据的数组,然后对这些值进行平均,等等。

 
Alexander Layzerevich:

试图理解iVolume()是高价和低价之间的差异还是其他什么?

这些是tick卷,在MT的图表上点击右键,选择显示卷 - 柱状图将出现在图表的底部 - 这就是它

https://docs.mql4.com/ru/series/ivolume

iVolume - Доступ к таймсериям и индикаторам - Справочник MQL4
iVolume - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Значение тикового объема бара (указанного параметром shift) соответствующего графика или 0 в случае ошибки. Для получения дополнительной информации об ошибке необходимо вызвать функцию GetLastError().
 
Igor Makanu:

这些是tick卷,在MT的图表上点击右键,选择显示卷 - 柱状图将出现在图表的底部 - 这些是它们。

https://docs.mql4.com/ru/series/ivolume

非常感谢您的澄清。

因此,这就留下了下面的问题。创建2个数组High和Low 来计算月的数据,2个数组High和Low 来计算周的数据。

然后一切都被平均化,等等。

我将尝试在代码中实现这一切...

我还有一个问题:计算上个月和上星期哪个更好?

从这个例子来看,:

按初始位置和所需元素的数量参考

intCopyHigh(
stringsymbol_name,// 符号名称
ENUM_TIMEFRAMEStimeframe,// period
intstart_pos,//从哪里开始
intcount,// 我们复制多少个
doublehigh_array[]// 用于复制最高价格数组
);

Timeframe = PERIOD_D1;

start_pos = 1; // 前一棒

count = 30; // 30天(月)。

 
Alexander Layzerevich:

另一个问题:计算最后一个月和最后一周的最佳方法是什么?

最好有日期,因为有跳过的酒吧和没有酒吧的周末,所以这将有助于。

Обращение по начальной и конечной датам требуемого интервала времени

int  CopyHigh(
   string           symbol_name,      // имя символа
   ENUM_TIMEFRAMES  timeframe,        // период
   datetime         start_time,       // с какой даты
   datetime         stop_time,        // по какую дату
   double           high_array[]      // массив для копирования максимальных цен
   );

https://docs.mql4.com/ru/series/copyhigh

CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Функция получает в массив high_array исторические данные максимальных цен баров для указанной пары символ-период в указанном количестве. Необходимо отметить, что отсчет элементов от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар. При копировании заранее неизвестного количества...
 
Igor Makanu:

最好是有日期,因为有跳过的(报价)酒吧和没有酒吧的周末,这将有助于。

https://docs.mql4.com/ru/series/copyhigh

谢谢,只是如何让EA(机器人)知道从什么日期开始,在哪里停止。

我发现从1开始数30支蜡烛(30天)比较容易。或7个烛台(天)。

我得到了这个代码。

//************************************************************************************************/
double iPointOrderStep()
{
double Awerage30 = 0, SummAwerage30 = 0;
double Awerage7 = 0, SummAwerage7 = 0;

double High30[], Low30[], High7[], Low7[];
//----------------Для месяца---------------------------
int iHigh30 = CopyHigh(Symbol(),PERIOD_D1,1,30,High30);
int iLow30 = CopyLow(Symbol(),PERIOD_D1,1,30,Low30);
//----------------Для недели---------------------------
int iHigh7 = CopyHigh(Symbol(),PERIOD_D1,1,7,High7);
int iLow7 = CopyLow(Symbol(),PERIOD_D1,1,7,Low7);

for(int i=0;i<30;i++) 
   {
      SummAwerage30 += (High30[i]-Low30[i]);
   }
for(int i=0;i<7;i++) 
   {
      SummAwerage7 += (High7[i]-Low7[i]);
   }

   Awerage30 = SummAwerage30/30;
   Awerage7 = SummAwerage7/7;
   
   double iPointOrderStep = NormalizeDouble(((Awerage30+Awerage7)/2),0);
   return (iPointOrderStep/6);
}
//************************************************************************************************/

但不幸的是,它给出的数值=0。

你能告诉我错误在哪里吗...

而且还...

如何在会话开始时或终端重启时每周进行一次计算?

 
Alexander Layzerevich:

谢谢,但我还没有理解它如何能在我的案例中使用。

ATR的本质是一个时期内柱状体的平均高度。还不如用MA(高)-MA(低)。这比展开超标更容易

 
Igor Zakharov:

ATR的本质是一个时期内柱状体的平均高度。你还不如用MA(高)-MA(低)。这比扭转过冲要容易得多

即根据实例

intiATR(
stringsymbol,// symbol name
ENUM_TIMEFRAMESperiod,// period
intma_period// 平均周期
);

double Awerage30= iATR(Symbol(),PERIOD_D1, 30); 这将是30天的平均数字值 ?

 
Alexander Layzerevich:

即根据实例

intiATR(
stringsymbol,// symbol name
ENUM_TIMEFRAMESperiod,// period
intma_period// 平均周期
);

double Awerage30= iATR(Symbol(),PERIOD_D1, 30); 它将是30天的平均数值?

不是日历日。倒退30天(周日、周六)。

从你在5中做的没有参数转移的函数来看,你在4中问了一个问题 :)

 
Igor Zakharov:

只是不是日历上的那些。30天酒吧倒退(周日、周六)。

从没有移位参数的函数来看,你是在5中做的,而你在4中问了这个问题:)

这个分支是针对两个终端的。特别是具有相同的功能。

 
Artyom Trishkin:
这个分支在两个终端。特别是具有相同的功能。

那么标题是否应该改正?

原因: