input int iPeriod = 13; // период input int iMode = 1; // тип сглаживания input int iPrice = 5; // цена input int iBars = 480; // количество баров для просчета, если это возможно в принципе ограничить
for(i=limit;i<rates_total && !IsStopped();i++){ newData[i]=(High[i]+fmax(Open[i],Close[i]))/2; } // и дальше чего? как мне индикатор то заполнить используя iMA ? самому сглаживать вторым циклом? или что? outBuffer=????????????
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
论坛搜索(搜索mql5帮助的短语day_of_week,dayofweek没有得到任何结果...)
MQL5 参考 / 标准常量、枚举和结构 / 数据结构 / 日期结构。
让我们试着去弄清楚。对于CopyRates()函数,倒数第二个参数是
即要复制的元素的数量。在你的设计中,元素的数量是无限的。粗略地说是不真实的 :) 而且可能,这就是工作中发生的情况,不断地重新分配内存,直到它不被耗尽。尝试不使用TerminalInfoInteger(TERMINAL_MAXBARS),而是使用一个更具体的值: MQL5 参考 /访问时间序列和指标 / Bars好的,谢谢!
仍然不清楚我为什么需要它,这个TerminalInfoInteger(TERMINAL_MAXBARS)。
......是的!?:-))
如何替换mql4函数? 帮助甚至没有给你一个提示,让你去挖掘。
当然,如果你对这门语言了如指掌--在参考书中很容易找到它--那么你就不需要参考书了。
但是,如果你没有熟记于心--和/或你从mql4转换过来--在参考书中搜索是没有什么帮助的(()。
sss.要进入mql5比从3到4更难;-)不管谁说什么。
好的,谢谢!
仍然不清楚为什么我需要这个TerminalInfoInteger(TERMINAL_MAXBARS)。
...要!?:-))
例如,这是为了知道指标缓冲区 被计算到什么深度。而且,要了解资源是否因 "不经济 "的程序而被过度使用,或因TERMINAL_MAXBARS 值过高而被过度使用。由于TERMINAL_MAXBARS目前只是手动改变,你可以控制它的大小,如果有必要,可以通知你的程序的外部用户降低栏位。
我怎样才能替换mql4函数呢? 帮助甚至没有给你一个提示,让你去寻找。
当然,如果你对这门语言了如指掌,在《参考资料》中很容易找到它。
但是,如果你没有熟记于心--和/或你从mql4转换过来--在参考书中搜索是没有什么帮助的(()。
实际上,我是用 "day_of_week "这个搜索词找到的。在这7个链接中,有上面的一个。
sss.要进入mql5比从3到4更难;-)不管谁说什么。
在这里不能说什么。
例如,这是为了知道指标缓冲区 被计算到什么深度。而且,要了解资源超支是否因为 "浪费 "程序或因为TERMINAL_MAXBARS 设置太高。由于TERMINAL_MAXBARS目前只是手动改变,你可以控制它的大小,如果有必要,可以通知你的程序的外部用户降低栏位。
实际上,我是用 "day_of_week "这个搜索词找到的。在这7个链接中,有上面的一个。
在这里不能说什么。
我明白了。也就是说,一个是上传的条数,另一个是显示的条数。唯一奇怪的是,为什么标识如此不同--一个是直接简单的Bars。
另一个是通过中间的地方。
我没有足够的耐心看完它们,尤其是我找不到任何关于dayOfWeek函数本身的信息,而第一个链接day_of_week(我怎么能猜到它应该这样写呢?)是一个不相关的废话:-)
我还有一个问题,如果你允许的话。
我不知道如何绘制指标。所有的指标都有不同的描述,有很多的代码,没有光。
我想从上部和下部的阴影中画出阴影,再加上我自己的平滑方法。
但至少我想自己实现标准的。
我想这很容易,但抽象的东西让我对mql4感到厌烦 :-)))
也许有人会用解释来做?
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots 1
#property indicator_type1 DRAW_LINE
#property indicator_color1 Red
input int iPeriod = 13; // период
input int iMode = 1; // тип сглаживания
input int iPrice = 5; // цена
input int iBars = 480; // количество баров для просчета, если это возможно в принципе ограничить
double iBuffer[];
void OnInit(){
SetIndexBuffer(0, iBuffer, INDICATOR_DATA);
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime& time[],
const double& open[],
const double& high[],
const double& low[],
const double& close[],
const long& tick_volume[],
const long& volume[],
const int& spread[])
{
//---- проверка количества баров на достаточность для расчёта
return(rates_total);if (rates_total < 2*iPeriod) return(0);
// ????? :-)
}
double calcPrice(int type){
switch (type){
case 1: return(high); ??
case 1: return(high - fmax(open,close)); ??????
}
}
开头很清楚 )))),但其余部分呢 .....
预先感谢。
日安!
请告知在俄罗斯是否有经纪商提供Metatrader作为FORTS和MICEX的工作终端?
如果可以的话,我还有一个问题。
,我不知道如何绘制指标。所有的指标都有不同的描述,很多代码都是连在一起的,我看不到任何光亮。
,学习我想从上影和下影做马,加上我自己的平滑计算方法。
但首先我想实现标准的。
,怎么实现?这很容易,但抽象的东西让我对mql4感到厌烦 :-)))
谁能解释一下?
开头是清楚的)))),但其余部分.....
,提前感谢。
如果你喜欢钻研代码,最好的方法如下:在编辑器中,打开Navigator => Indicators文件夹 => Examples文件夹。然后你可以找到工作指标的代码(ParabolicSAR, Custom Moving Average, etc.),编写时没有使用include文件。在你通过一些工作后,许多事情会变得清晰。其余的将在论坛上解释。许多交易员都懒得写别人的指标。
但我确实如此)。如果代码是直观的......我看着堆积如山的代码--它还不清楚((
我可以给你一些建议,比如 "打开一个例子,然后到处乱搞,直到你感到厌烦"))))),但我没有要求建议,我要求帮助......
我将努力澄清问题。例如,关于两个指标形式。
第一个表格有4个参数,我想弄清楚它的用途,为什么它出现在第一个表格中而不是第二个表格中?
"重要数据的来源 "的本质是什么,这个参数的物理意义是什么,以至于我们把它变成了全球性的?
还有一个关于计算用数组的问题--这个列表是在标签参数上设置的,据我所知,它只适用于第一个表格,而且这个列表是不可更改的? 或者是否可以添加你的数组(在上述问题的背景下--例如,一个平均阴影的数组)?(如何?)
对于第二种形式来说,并非一切都很清楚,也就是说,似乎有更多的可能性。
我们可以在设置数据时使用ENUM_APPLIED_PRICE。另一方面,没有选择以前的指标数据(像第一个表格那样)。如何?
再一次--如何设置自己的数据?
double newData[];
double outBuffer[];
for(i=limit;i<rates_total && !IsStopped();i++){
newData[i]=(High[i]+fmax(Open[i],Close[i]))/2;
}
// и дальше чего? как мне индикатор то заполнить используя iMA ? самому сглаживать вторым циклом? или что?
outBuffer=????????????
我不明白(所有的例子都是基于标准数据......我仍然不知道如何制作我自己的数据((
,一方面--iMA()句柄是在onInit中准备的,但它的数据还没有被定义,它们是在onCalculate中定义的......
我感到困惑(
,请解释,谁明白。
我自己可以给出类似于 "打开一个例子,搞到你厌烦为止 "的建议))))),但我不是在征求意见,而是在寻求帮助......
在这种情况下,我只是分享我的经验。事实证明,你比我更不喜欢钻研代码 :)哦,好吧。
例如,关于该指标的两种形式。
为什么它在第一种形式中出现,而在第二种形式中没有? 这意味着它没有必要?
"重要数据的来源 "的本质是什么,这个参数的物理意义是什么,以至于我们把它变成了全球性的?
看这里(我是用关键词开始找到的--使用搜索引擎):MQL5参考/ 自定义指标
还有一个关于计算用数组的问题--这个列表是在标签参数上设置的,据我所知,它只适用于第一个表格,而且这个列表是不可更改的? 或者是否可以添加你的数组(在上述问题的背景下--例如,一个平均阴影的数组)?(如何?)
看一看MQL5参考/ 语言基础知识/ 变量/ 输入变量
至于全局性的学习方法:如果这里没有给你问题的答案,而且挖掘代码也不是那么有趣,你可以在网站的搜索引擎中输入 "初学者",选择 "文章 "部分,翻阅关于指标的 "初学者 "文章。我理解,这似乎是个麻烦事。但在翻阅了几篇适当的文章后,你将首先能够画出一条简单的线,然后是一条条高点和低点之间的平均值线[(高[i]-低[i]/2)],然后你可以建立一个初级的MA,最后,你将实现你的想法。
在这种情况下,我只是在分享我的经验。事实证明,你比我更不喜欢钻研代码 :)但不要紧。
看这里(我是用关键词开始找到的--使用搜索引擎):MQL5参考指南/ 自定义指标
要开始,请参阅MQL5参考/ 语言基础/ 变量/ 输入变量这就是为什么我要求那些在这方面是怪物的人写一个例子。
这就是为什么我要求那些在其中当怪物的人写一个例子。
2.我查过了,我不明白为什么它不用于第二种形式(或者说,为什么用于第一种形式?)
为什么我需要把它包括在第一个表格的输入参数中? 为什么它与一个任意变量不同?
3.我查过了。我问的是如何在我的数据上实现计算,而不是如何设置一个输入参数列表。没有一个字是关于它的 ((((
但在论坛上,每个人都傲慢地表示,OOP很容易。
从来没有人声称有这样的事情。这将需要一些工作。
2.看了一下。不明白为什么不在第二个表格中使用(或者说为什么在第一个表格中使用? 反正是用户定义的(不是在标签中定义的,对吗?)
为什么要以第一种形式把它放在输入参数中? 它与任意变量有什么不同?
嗯,我不知道。从那里的例子来看,我觉得这一切都很有意义。
3.查了一下,我问的是如何对我的数据进行计算,而不是如何设置一个输入参数的列表。没有一个字是关于这个的 ((((
问题是 "我如何设置我的数据?"。我指出了一个方法。
如果你对基于另一个指标的数据的计算感兴趣,你可以通过以下方式进行。首先,我们用自己的数据计算方法创建新的指标,然后我们采取这个指标的手柄(MQL5参考/ 技术指标 /iCustom),并在新指标中使用手柄。仔细看一下这个例子。如果你对这个例子有任何疑问