任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 876 1...869870871872873874875876877878879880881882883...1178 新评论 [删除] 2015.04.06 06:35 #8751 artmedia70: 数组的大小为零。不要忘记ArrayResize(),或者只是为数组设置正确的大小 谢谢,我的做法不同,我在指标中找到ArrayMaximum(),并通过iCustom 将该值传递给专家顾问:) Mepkypuu 2015.04.06 09:44 #8752 大家好,我有一个脚本,使用外部DLL 的调用,专门计算引号,并创建一个带有必要几率的文件,有没有办法让这个脚本按计划运行?我需要它每天在某一时刻运行? mario 2015.04.06 13:22 #8753 你好。图片显示。第一个窗口是成交量指标,把货币流量指数(10)放在上面。我做了一个单独的指标,在那里我再次采取成交量,用成交量重新计算,并试图像第一个窗口那样做 - 25%,50%,75%。我试了一下我的方法,但它看起来并不理想。如果有人在这方面遇到问题,请分享你的建议。谢谢#property indicator_separate_window #property indicator_buffers 2 #property indicator_minimum 0 #property indicator_width1 2 #property indicator_width2 2 #property indicator_color1 DodgerBlue #property indicator_color2 Yellow extern int MAPeriod = 30; double volum[],ma[]; //+------------------------------------------------------------------+ int init(){ int bars_count=WindowBarsPerChart(),volh; int bar=WindowFirstVisibleBar(); volh = Volume[iHighest(Symbol(),0,MODE_VOLUME,bar,0)]; SetIndexBuffer(0,volum); SetIndexBuffer(1,ma); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexStyle(1,DRAW_LINE); SetLevelValue (0, volh*1.05); SetLevelValue (1, ((volh*1.05)/100)*75.0); SetLevelValue (2, ((volh*1.05)/100)*50.0); SetLevelValue (3, ((volh*1.05)/100)*25.0); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ /*int start(){ int limit; limit = Bars-IndicatorCounted()-1; for(int i=limit;i>=0;i--){ volum[i] = NormalizeDouble(Volume[i],0); ma[i] = NormalizeDouble(iMAOnArray(volum,0,MAPeriod,0,MODE_SMA,i),0); } return(0); }*/ 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[]) { int i=rates_total-prev_calculated-1; if(i<0) i=0; while(i>=0){ if(i<rates_total-1) volum[i] = NormalizeDouble(Volume[i],0); ma[i] = NormalizeDouble(iMAOnArray(volum,0,MAPeriod,0,MODE_SMA,i),0); i--; } return(rates_total); } владимир 2015.04.06 15:35 #8754 tara: 他说的是减去第二条。以及极限值的平均值。他想取笑我,我猜。我会告诉他去他妈的自己,你知道我的意思 :) 二年级学生,七年级学生,仍然不知道有这样的国家 - 白俄罗斯,来到一年级学生和kochetsya。而在回答任何问题时,他只是发送或告诫他们:他们应该学习。你应该在门上仔细阅读你所在的分支。我还只是在学习字母表,所以不要太激动,反正我也听不懂。 владимир 2015.04.06 15:48 #8755 也要向evillive 和artmedia70 表示衷心的感谢。感谢你的耐心和时间。我相信这不仅仅是我对你的看法。每个来到这个主题的人都在寻求帮助,并且主要从你那里得到帮助。Thank you/谢谢你 askyra_ya.ru 2015.04.06 16:56 #8756 你好,亲爱的专业人士,我已经很久没有和你联系了。问题是,有一个专家顾问有2个穆瓦克的交叉点,但没有人愿意开一个订单。无效的贸易()。{ double ma_fast=ma(Period_, Shift_, Method_MA_, Apply_to_, 0), ma_slow=ma(Period__, Shift__, Method_MA__, Apply_to__, 0);if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt){if(sumSO>0 && !ClosePos(OP_SELL)) 返回。如果(MO(OP_BUY,GetLot(),GetComment())==-1) 返回。if(!ModifyByTicket(T)) 返回。NumbUp=0;NumbDn=0。}否则等等...也就是说,如果有一个跨越的距离,打开一个订单我需要一个代码来找到最后一次穿越的时间 ...然后从当前时刻到历史上的时间,在一定时期内搜索一个订单......如果没有找到一个订单,就打开一个订单。我为此探索了追踪器的代码,一切似乎都很清楚。但我不知道如何为曲线交叉后的第一根柱子计时,所以它是最右边的一根柱子。我觉得需要一个专门的操作员,但我无法制定它。 Any rookie question, so владимир 2015.04.06 17:18 #8757 evillive:这不是做这件事的方法。为所有3个缓冲区调用iCustom,将每个值写到自己的变量中,然后对这些值做你想做的事。对于布林带,根据帮助中的例子,对于第二个条形,你不需要取消选择它们。 谢谢你。 但由于我是文盲,我不得不一直翻看我的手册,我挖出了以下内容:自定义指标 是按照作者的算法编写的程序。而教程中说,iCustom返回指定的自定义指标的值。 但我不使用任何自定义(即我理解的--由我开发的)指标。 我需要检索标准指标(如果我可以这样称呼它们的话)的值:移动平均线、布林线和随机震荡指标,以及我所指定的参数。当然,我是 "凭直觉 "做的--我发现的第一件事将被应用。 但你建议的变体对我来说似乎也不合适。 如果不使用所有这些缓冲区、数组和循环,就没有解决方案吗?我在他们那里就像大海中的一块巨石--我一下子就沉下去了。 Vitalie Postolache 2015.04.06 17:27 #8758 sannin:你好,亲爱的专业人士,我已经很久没有和你联系了。问题是,有一个专家顾问有2个穆瓦克的交叉点,但没有人愿意开一个订单。无效的贸易()。{ double ma_fast=ma(Period_, Shift_, Method_MA_, Apply_to_, 0), ma_slow=ma(Period__, Shift__, Method_MA__, Apply_to__, 0);if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt){if(sumSO>0 && !ClosePos(OP_SELL)) 返回。如果(MO(OP_BUY,GetLot(),GetComment())==-1) 返回。if(!ModifyByTicket(T)) 返回。NumbUp=0;NumbDn=0。}否则等等...即,如果有一个交叉的距离,打开一个订单我需要一个代码来找到最后一次穿越的时间 ...然后从当前时刻到历史上的时间,在一定时期内搜索一个订单......如果没有找到一个订单,就打开一个订单。我为此探索了追踪器的代码,一切似乎都很清楚。但我不知道如何为曲线交叉后的第一根柱子计时,使其成为最右边的一根柱子。我觉得需要一个专门的操作员,但我无法制定它。这个专家顾问并不是通过交集来工作的。标准如下:如果快速的МА比慢速的高X个点,并且没有开仓,就在市场上开仓。为了找到交叉点,人们应该总是取两个值--交叉点之前的快/慢速MA和交叉点之后的快/慢速MA,以便找出它们的交换位置,可以这么说。换句话说if(FastMA_2<SlowMA_2 && FastMA_1>SlowMA_1) - 快速的МА在第一和第二小节之间从下往上越过了慢速的МА。在一个无限循环中,从零条到检测到交叉点,将是X+1条,你需要X条的时间,也就是交叉点后最近的一条。 Vitalie Postolache 2015.04.06 17:34 #8759 rapid_minus:谢谢你。 但是,由于我是文盲,我不得不一直翻阅教科书,这是我挖出来的:自定义指标是一个程序...,按照作者的算法编写。而教程中说,iCustom返回指定的自定义指标的值。但我不使用任何自定义(即我理解的--由我开发的)指标。 我需要检索标准指标(如果我可以这样称呼它们的话)的值:移动平均线、布林线和随机震荡指标,以及我所指定的参数。当然,我是 "凭直觉 "做的--我发现的第一件事将被应用。 但你建议的变体对我来说似乎也不合适。如果不使用所有这些缓冲器、数组和循环,就没有解决方案吗?我在他们那里就像大海中的一块巨石--我一下子就沉下去了。 没错,当使用布林线时,你不需要调用iCustom,但iBands应该为每条指标线单独调用。不调用指标 的替代方法("不使用缓冲器、数组、循环")是在专家顾问中实现该指标的计算算法,并在需要时读取所需的值(你可以只读取所需的值,例如,只读取底线)。但完全没有循环和数组都是不行的。 mario 2015.04.06 17:39 #8760 sannin:你好,亲爱的专业人士,我已经很久没有和你联系了。问题是,有一个专家顾问有2个穆瓦克的交叉点,但没有人愿意开一个订单。无效的贸易()。{ double ma_fast=ma(Period_, Shift_, Method_MA_, Apply_to_, 0), ma_slow=ma(Period__, Shift__, Method_MA__, Apply_to__, 0);if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt){if(sumSO>0 && !ClosePos(OP_SELL)) 返回。如果(MO(OP_BUY,GetLot(),GetComment())==-1) 返回。if(!ModifyByTicket(T)) 返回。NumbUp=0;NumbDn=0。}否则等等...即,如果有一个交叉的距离,打开一个订单我需要一个代码来找到最后一次穿越的时间 ...然后从当前时刻到历史上的时间,在一定时期内搜索一个订单......如果没有找到一个订单,就打开一个订单。我为此探索了追踪器的代码,一切似乎都很清楚。但我不知道如何为曲线交叉后的第一根柱子计时,使其成为最右边的一根柱子。我觉得需要一个专门的操作员,但我无法制定它。 这里有一个例子,我展示了如何在跨越2个穆夫后测量一个小节。datetime TimeStart = 0; //+------------------------------------------------------------------+ int init(){return(0);} int deinit(){return(0);} //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { int f; bool cu1 = false; bool cu2 = false; double ma_1 = iMA(NULL,0,31,0,MODE_SMA,PRICE_OPEN,0); double ma1 = iMA(NULL,0,11,0,MODE_SMA,PRICE_OPEN,0); double ma_2 = iMA(NULL,0,31,0,MODE_SMA,PRICE_OPEN,1); double ma2 = iMA(NULL,0,11,0,MODE_SMA,PRICE_OPEN,1); if(ma2<ma_2 && ma1>ma_1) TimeStart=Time[0]; if(ma2>ma_2 && ma1<ma_1) TimeStart=Time[0]; if(ma1>ma_1) cu1=true; if(ma1<ma_1) cu2=true; if(cu1==true || cu2==true) int b1=iBarShift(Symbol(), PERIOD_H1, TimeStart); int b2=iBarShift(Symbol(), PERIOD_H1, TimeCurrent()); for(int j=b2;j<=b1;j++){ f=b1-b2; } return(0); } 1...869870871872873874875876877878879880881882883...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
数组的大小为零。不要忘记ArrayResize(),或者只是为数组设置正确的大小
你好。
图片显示。
第一个窗口是成交量指标,把货币流量指数(10)放在上面。
我做了一个单独的指标,在那里我再次采取成交量,用成交量重新计算,并试图像第一个窗口那样做 - 25%,50%,75%。
我试了一下我的方法,但它看起来并不理想。
如果有人在这方面遇到问题,请分享你的建议。
谢谢
#property indicator_separate_window #property indicator_buffers 2 #property indicator_minimum 0 #property indicator_width1 2 #property indicator_width2 2 #property indicator_color1 DodgerBlue #property indicator_color2 Yellow extern int MAPeriod = 30; double volum[],ma[]; //+------------------------------------------------------------------+ int init(){ int bars_count=WindowBarsPerChart(),volh; int bar=WindowFirstVisibleBar(); volh = Volume[iHighest(Symbol(),0,MODE_VOLUME,bar,0)]; SetIndexBuffer(0,volum); SetIndexBuffer(1,ma); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexStyle(1,DRAW_LINE); SetLevelValue (0, volh*1.05); SetLevelValue (1, ((volh*1.05)/100)*75.0); SetLevelValue (2, ((volh*1.05)/100)*50.0); SetLevelValue (3, ((volh*1.05)/100)*25.0); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ /*int start(){ int limit; limit = Bars-IndicatorCounted()-1; for(int i=limit;i>=0;i--){ volum[i] = NormalizeDouble(Volume[i],0); ma[i] = NormalizeDouble(iMAOnArray(volum,0,MAPeriod,0,MODE_SMA,i),0); } return(0); }*/ 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[]) { int i=rates_total-prev_calculated-1; if(i<0) i=0; while(i>=0){ if(i<rates_total-1) volum[i] = NormalizeDouble(Volume[i],0); ma[i] = NormalizeDouble(iMAOnArray(volum,0,MAPeriod,0,MODE_SMA,i),0); i--; } return(rates_total); }
他说的是减去第二条。以及极限值的平均值。他想取笑我,我猜。我会告诉他去他妈的自己,你知道我的意思 :)
也要向evillive 和artmedia70 表示衷心的感谢。感谢你的耐心和时间。我相信这不仅仅是我对你的看法。每个来到这个主题的人都在寻求帮助,并且主要从你那里得到帮助。Thank you/谢谢你
你好,亲爱的专业人士,我已经很久没有和你联系了。
问题是,有一个专家顾问有2个穆瓦克的交叉点,但没有人愿意开一个订单。
无效的贸易()。
{ double ma_fast=ma(Period_, Shift_, Method_MA_, Apply_to_, 0), ma_slow=ma(Period__, Shift__, Method_MA__, Apply_to__, 0);
if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt)
{
if(sumSO>0 && !ClosePos(OP_SELL)) 返回。
如果(MO(OP_BUY,GetLot(),GetComment())==-1) 返回。
if(!ModifyByTicket(T)) 返回。
NumbUp=0;NumbDn=0。
}
否则
等等...
也就是说,如果有一个跨越的距离,打开一个订单
我需要一个代码来找到最后一次穿越的时间 ...
然后从当前时刻到历史上的时间,在一定时期内搜索一个订单......如果没有找到一个订单,就打开一个订单。
我为此探索了追踪器的代码,一切似乎都很清楚。
但我不知道如何为曲线交叉后的第一根柱子计时,所以它是最右边的一根柱子。
我觉得需要一个专门的操作员,但我无法制定它。
这不是做这件事的方法。为所有3个缓冲区调用iCustom,将每个值写到自己的变量中,然后对这些值做你想做的事。
对于布林带,根据帮助中的例子,对于第二个条形,你不需要取消选择它们。
谢谢你。
但由于我是文盲,我不得不一直翻看我的手册,我挖出了以下内容:自定义指标 是按照作者的算法编写的程序。而教程中说,iCustom返回指定的自定义指标的值。
但我不使用任何自定义(即我理解的--由我开发的)指标。
我需要检索标准指标(如果我可以这样称呼它们的话)的值:移动平均线、布林线和随机震荡指标,以及我所指定的参数。当然,我是 "凭直觉 "做的--我发现的第一件事将被应用。 但你建议的变体对我来说似乎也不合适。
如果不使用所有这些缓冲区、数组和循环,就没有解决方案吗?我在他们那里就像大海中的一块巨石--我一下子就沉下去了。
你好,亲爱的专业人士,我已经很久没有和你联系了。
问题是,有一个专家顾问有2个穆瓦克的交叉点,但没有人愿意开一个订单。
无效的贸易()。
{ double ma_fast=ma(Period_, Shift_, Method_MA_, Apply_to_, 0), ma_slow=ma(Period__, Shift__, Method_MA__, Apply_to__, 0);
if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt)
{
if(sumSO>0 && !ClosePos(OP_SELL)) 返回。
如果(MO(OP_BUY,GetLot(),GetComment())==-1) 返回。
if(!ModifyByTicket(T)) 返回。
NumbUp=0;NumbDn=0。
}
否则
等等...
即,如果有一个交叉的距离,打开一个订单
我需要一个代码来找到最后一次穿越的时间 ...
然后从当前时刻到历史上的时间,在一定时期内搜索一个订单......如果没有找到一个订单,就打开一个订单。
我为此探索了追踪器的代码,一切似乎都很清楚。
但我不知道如何为曲线交叉后的第一根柱子计时,使其成为最右边的一根柱子。
我觉得需要一个专门的操作员,但我无法制定它。
这个专家顾问并不是通过交集来工作的。标准如下:如果快速的МА比慢速的高X个点,并且没有开仓,就在市场上开仓。
为了找到交叉点,人们应该总是取两个值--交叉点之前的快/慢速MA和交叉点之后的快/慢速MA,以便找出它们的交换位置,可以这么说。换句话说
if(FastMA_2<SlowMA_2 && FastMA_1>SlowMA_1) - 快速的МА在第一和第二小节之间从下往上越过了慢速的МА。
在一个无限循环中,从零条到检测到交叉点,将是X+1条,你需要X条的时间,也就是交叉点后最近的一条。
谢谢你。
但是,由于我是文盲,我不得不一直翻阅教科书,这是我挖出来的:自定义指标是一个程序...,按照作者的算法编写。而教程中说,iCustom返回指定的自定义指标的值。
但我不使用任何自定义(即我理解的--由我开发的)指标。
我需要检索标准指标(如果我可以这样称呼它们的话)的值:移动平均线、布林线和随机震荡指标,以及我所指定的参数。当然,我是 "凭直觉 "做的--我发现的第一件事将被应用。 但你建议的变体对我来说似乎也不合适。
如果不使用所有这些缓冲器、数组和循环,就没有解决方案吗?我在他们那里就像大海中的一块巨石--我一下子就沉下去了。
你好,亲爱的专业人士,我已经很久没有和你联系了。
问题是,有一个专家顾问有2个穆瓦克的交叉点,但没有人愿意开一个订单。
无效的贸易()。
{ double ma_fast=ma(Period_, Shift_, Method_MA_, Apply_to_, 0), ma_slow=ma(Period__, Shift__, Method_MA__, Apply_to__, 0);
if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt)
{
if(sumSO>0 && !ClosePos(OP_SELL)) 返回。
如果(MO(OP_BUY,GetLot(),GetComment())==-1) 返回。
if(!ModifyByTicket(T)) 返回。
NumbUp=0;NumbDn=0。
}
否则
等等...
即,如果有一个交叉的距离,打开一个订单
我需要一个代码来找到最后一次穿越的时间 ...
然后从当前时刻到历史上的时间,在一定时期内搜索一个订单......如果没有找到一个订单,就打开一个订单。
我为此探索了追踪器的代码,一切似乎都很清楚。
但我不知道如何为曲线交叉后的第一根柱子计时,使其成为最右边的一根柱子。
我觉得需要一个专门的操作员,但我无法制定它。