编码帮助 - 页 95

 

亲爱的各位,这是我第一次写关于外汇的帖子,所以如果我说错了什么,请大家多多包涵...。

这个网站是学习外汇的最佳场所之一,我从几年前就开始阅读这个网站。我想把注意力放在这个链接上:codebase.mql4.com/5900

该EA是RUBBERBANDS_2 EA,由作者。 StJojo (2009.08.17 11:30).它的工作方式非常有趣,(经过最低限度的优化工作)在任何货币对 上。基本上,它可以作为一个(请允许我这样说)半自动的自动化系统。事实上,因为它在横盘市场上运行得很好,我发现当横盘市场的概率较高时,可以在新闻区间激活。因为我认为作者已经开放了代码,如果有人喜欢这个想法,我想增加一个变量,使其从某个小时/分钟开始工作,在某个时间/小时/分钟 "静止"(即:在当前时段结束时静止该EA)。这将更有利于 "预设 "EA后天的工作时间,相对于第二天的新闻。我附上了上述链接中的文件。

我还附上了 "forex_news_market_clock "指标,这是我用来读取图表上的新信息的指标。

感谢每个人在这个网站上所做的工作(当然还有整个网络上的工作...)。希望有人能提供帮助,非常感谢。

附加的文件:
 
vitoingletto:
亲爱的各位,这是我第一次写关于外汇的帖子,所以如果我说错了什么,请大家多多包涵...。

这个网站是学习外汇的最佳场所之一,我从几年前就开始阅读。我想把注意力放在这个链接上:codebase.mql4.com/5900

该EA是RUBBERBANDS_2 EA,由作者。 StJojo (2009.08.17 11:30).它的工作方式非常有趣,(经过最低限度的优化工作)在任何货币对上。基本上,它可以作为一个(请允许我这样说)半自动的自动化系统。事实上,因为它在横盘市场上运行得很好,我发现当横盘市场的概率较高时,可以在新闻区间激活。因为我认为作者已经开放了代码,如果有人喜欢这个想法,我想增加一个变量,使其从某个小时/分钟开始工作,在某个时间/小时/分钟 "静止"(即:在当前时段结束时静止该EA)。这将更有利于 "预设 "EA后天的工作时间,相对于第二天的新闻。我附上了上述链接中的文件。

我还附上了 "forex_ news_market_clock "指标,这是我用来读取图表上的新闻的指标。

感谢大家在这个网站(当然还有整个网络......)上的工作。希望有人能提供帮助,非常感谢。

你好,Vitoingletto。

谢谢你的EA,添加了一个时间过滤器和周五 收盘功能,还有一个神奇的数字,帮助EA在一定程度上区分订单。

附加的文件:
 

你好...

不知道你能不能在代码中加入直接一次性导出数据的功能(m1、m5、m30、m15、h1、h4、d1......),显然是在不同的文件中。目前,你必须要启动它很多次......(对于每个tmeframe)。

我将大大节省导出数据的时间。

你可以在你的代码中插入这个函数吗?一个想法可能类似于这个附件中的脚本(Period_converter_auto - MQL4 Code Base),它将数据全部转化为一个volta.Si可以在专家中播放吗?

谢谢

附加的文件:
 
dr.feelgood1989:
你好...

不知道你能不能在代码中加入直接一次性导出数据的功能(m1、m5、m30、m15、h1、h4、d1......),显然是放在不同的文件中。目前,你必须要启动它很多次......(对于每个tmeframe)。

我将大大节省导出数据的时间。

你可以在你的代码中插入这个函数吗?一个想法可能类似于这个附件中的脚本(Period_converter_auto - MQL4 Code Base),它将数据全部转化为一个volta.Si可以在专家中播放吗?

谢谢

dr.feelgood1989

使用这个,并简单地将其附加到您希望导出的所有时间框架。它将为你看的每个时间段制作一个名为符号+"_"+时间框架的文件。你可以把它作为你自定义指标导出的模板。

附加的文件:
 

谢谢你的回答...Mladen

实际上我已经是这样了。我发布的脚本(参考例子)对所有的时间段(转换)都是一次完成工作。

专家从她修改的 "重写 "一个单一的时间框架(以区分文件),当它被用于单一时间

我想知道,如果启动一个单一的专家是重写所有其他的时间框架(例如:EA1M在测试器上启动,并且文件也写在其他时间框架M5,M15...)

谢谢 :)

 
mladen:
pgtips,

你的主循环是什么样子的(或者贴出你试图这样做的代码)?

PS: 你必须改变iOpen()和iClose()的最后一个参数,以指向所选条形的正确日期。

你好,Mladen。

我被这个问题困住了,所以想试试其他的方法。

经过几天的搜索,我找到了这个附件中的指标,它与我所需要的很接近,但它被做得不同。

它显示的是当前的蜡烛(来自日线),但没有iopen/close变量可以选择显示一天后的蜡烛,即移位-1。

你能告诉我如何使它有一个回溯X天的转变吗。? 因此,如果前一天的条形图是红色的,那么当前的方框就是红色的,如果前一天是绿色的,那么当前方框就是绿色的。

我可以在此基础上叠加突破箱指标,但如果这个指标能有时间限制,那就真的太好了。

我知道你很忙,而且你的时间是免费的,但如果你能帮助我,我将非常感激。

非常感谢

PG

附加的文件:
 

你好。

我仍在努力解决这个问题。

在附件中,我已经设法使用枢轴指标,根据前一天的收盘价,即前一天的绿色或红色,让我得到每天的颜色变化。

现在我需要做一个矩形,并根据我想看到的显示时间(上午11点到下午17点)来填充它,高点和低点是这段时间内的任何结果。

我设置//

ObjectCreate("Rectangle",OBJ_RECTANGLE, 0, Time[periodBegin], Low[1], Time[periodEnd], High[1]) 。

但是得到了错误,根本没有显示。

extern int periodBegin = 11; /11:00 am

extern int periodEnd = 17; // 17:00 pm

我设置了extern bool Plot_rectangles=true;所以它 "应该 "为每一天绘制一些东西。

我在这里错过了什么?

谢谢你

PG

附加的文件:
 

我想我知道我问题的答案,但是......还是想确认一下

a. 指标是较高的时间框架

b. 是当前的时间 框架。

比如我想用a.作为基础趋势b.作为进场,这能做到吗?

 
mtuppers:
我想我知道我问题的答案,但是......还是想确认一下

a. 指标是较高的时间框架

b. 是当前时间框架。

比如我想用a作为基础趋势b作为入口,这能做到吗?

是的,你可以。

只需在timeFrame参数中用更高的时间框架调用a,就可以了。为了避免多时间框架EA的回测陷阱,请在多时间框架指标上使用封闭条(指数1而不是0),否则你会得到不切实际的好结果,因为在回测中,metatrader会调用当前时间 框架以外的其他时间框架。

 

你好。

我希望你能帮我解决这个问题。我想让窗口二中的点(箭头;水蓝色和黄色)在窗口一(主图表窗口)的收盘价(或买入信号的高点/卖出信号 的低点)上显示为点(箭头)。我试了好几个小时,但我永远不会成为一个程序员;-)

#属性 indicator_separate_window

#属性 indicator_minimum -100.0

#属性 indicator_maximum 100.0

#属性 indicator_levelcolor 石板灰

#属性 indicator_levelstyle 1

#属性 indicator_buffers 8

#属性 indicator_color1 Lime

#属性 indicator_color2 红色

#属性指示器_颜色3 黑色

#属性 indicator_color4 黑色

#属性指示器_color5 黑色

#财产指示器_颜色6 黑色

#属性指示器_color7 水

#属性指示器_颜色8 黄色

#属性指示器宽度1 1

#属性指示器_level1 60.0

#属性指示器宽度2 1

#属性指示器_level2 50.0

#属性 Indicator_level3 -50.0

#属性 Indicator_level4 -60.0

外部int WavePeriod = 10;

extern int AvgPeriod = 21;

extern bool SoundAlert = FALSE;

Extern bool EmailAlert = FALSE;

double g_ibuf_92[];

double g_ibuf_96[];

double g_ibuf_100[];

double g_ibuf_104[];

双份g_ibuf_108[]。

双份g_ibuf_112[]。

双份g_ibuf_116[]。

双份g_ibuf_120[]。

int gi_124 = -50。

int gi_128 = 50;

int gi_132;

int init() {

IndicatorShortName("TrendWave")。

SetIndexBuffer(0, g_ibuf_100);

SetIndexLabel(0, "ESA");

SetIndexStyle(0, DRAW_NONE);

SetIndexDrawBegin(0, 0);

SetIndexBuffer(1, g_ibuf_112);

SetIndexLabel(1, "DD Values")。

SetIndexStyle(1, DRAW_NONE);

SetIndexDrawBegin(1, 0);

SetIndexBuffer(2, g_ibuf_104);

SetIndexLabel(2, "DD");

SetIndexStyle(2, DRAW_NONE);

SetIndexDrawBegin(2, 0);

SetIndexBuffer(3, g_ibuf_108);

SetIndexLabel(3, "CI");

SetIndexStyle(3, DRAW_NONE);

SetIndexDrawBegin(3, 0);

SetIndexBuffer(4, g_ibuf_92);

SetIndexLabel(4, "Bull");

SetIndexStyle(4, DRAW_LINE, STYLE_SOLID, 1, Lime);

SetIndexDrawBegin(4, 0);

SetIndexBuffer(5, g_ibuf_96);

SetIndexLabel(5, "Bear");

SetIndexStyle(5, DRAW_LINE, STYLE_SOLID, 1, Red);

SetIndexDrawBegin(5, 0);

SetIndexBuffer(6, g_ibuf_116);

SetIndexLabel(6, "Buy Dot");

SetIndexStyle(6, DRAW_ARROW, STYLE_SOLID, 2, Aqua)。

SetIndexArrow(6, 108);

SetIndexDrawBegin(6, 0);

SetIndexBuffer(7, g_ibuf_120);

SetIndexLabel(7, "Sell Dot");

SetIndexStyle(7, DRAW_ARROW, STYLE_SOLID, 2, Yellow);

SetIndexArrow(7, 108);

SetIndexDrawBegin(7, 0);

ArrayResize(g_ibuf_100, Bars)。

ArrayResize(g_ibuf_112, Bars);

ArrayResize(g_ibuf_104, Bars);

ArrayResize(g_ibuf_108, Bars)。

ArrayResize(g_ibuf_92, Bars);

ArrayResize(g_ibuf_96, Bars);

ArrayResize(g_ibuf_116, Bars);

ArrayResize(g_ibuf_120, Bars)。

返回(0)。

}

int start() {

double l_ima_on_arr_0;

int li_12 = IndicatorCounted();

如果 (li_12 < 0) 返回 (-1);

如果(li_12 > 0)li_12--。

int li_8 = Bars - li_12;

for (int li_16 = li_8; li_16 > 0; li_16--) {

g_ibuf_100[li_16] = iMA(NULL, 0, WavePeriod, 0, MODE_EMA, PRICE_TYPICAL, li_16)。

ArraySetAsSeries(g_ibuf_100, TRUE)。

}

for (li_16 = li_8; li_16 > 0; li_16--) {

g_ibuf_112[li_16] = MathAbs((iHigh(NULL, 0, li_16) + iClose(NULL, 0, li_16) + iLow(NULL, 0, li_16) )/ 3.0 - g_ibuf_100[li_16])。

ArraySetAsSeries(g_ibuf_112, TRUE)。

}

for (li_16 = li_8; li_16 > 0; li_16--) {

l_ima_on_arr_0 = iMAOnArray(g_ibuf_112, 0, WavePeriod, 0, MODE_EMA, li_16)。

g_ibuf_104[li_16] = l_ima_on_arr_0;

ArraySetAsSeries(g_ibuf_104, TRUE)。

}

for (li_16 = li_8; li_16 > 0; li_16--) {

if (g_ibuf_104[li_16] > 0.0) g_ibuf_108[li_16] = ((iHigh(NULL, 0, li_16) + iClose(NULL, 0, li_16) + iLow(NULL, 0, li_16) )/ 3.0 - g_ibuf_100[li_16])/ (0.015 * g_ibuf_104[li_16])。

否则g_ibuf_108[li_16] = 0;

ArraySetAsSeries(g_ibuf_108, TRUE)。

}

for (li_16 = li_8; li_16 > 0; li_16--) {

l_ima_on_arr_0 = iMAOnArray(g_ibuf_108, 0, AvgPeriod, 0, MODE_EMA, li_16) 。

g_ibuf_92[li_16] = l_ima_on_arr_0;

ArraySetAsSeries(g_ibuf_92, TRUE)。

}

for (li_16 = li_8; li_16 > 0; li_16--) {

l_ima_on_arr_0 = iMAOnArray(g_ibuf_92, 0, 4, 0, MODE_SMA, li_16)。

g_ibuf_96[li_16] = l_ima_on_arr_0;

ArraySetAsSeries(g_ibuf_96, TRUE)。

}

for (li_16 = li_8; li_16 > 0; li_16--) {

if (g_ibuf_92[li_16] >= g_ibuf_96[li_16] && g_ibuf_92[li_16 + 1] <= g_ibuf_96[li_16 + 1] && g_ibuf_92[li_16] < gi_124) {

g_ibuf_116[li_16] = g_ibuf_92[li_16];

SendAlert("buy")。

} else g_ibuf_116[li_16] = -1000;

如果(g_ibuf_92[li_16] = g_ibuf_96[li_16 + 1] && g_ibuf_92[li_16] > gi_128) {

g_ibuf_120[li_16] = g_ibuf_96[li_16];

SendAlert("卖出")。

} else g_ibuf_120[li_16] = -1000;

}

返回(0)。

}

void SendAlert(string as_0) {

如果(Time[0] != gi_132) {

如果(SoundAlert) {

如果(as_0 == "buy") Alert(Symbol() + " => " + TimeToStr(TimeCurrent() )+ " 买入")。

如果(as_0 == "卖出") Alert(Symbol() + " => " + TimeToStr(TimeCurrent() ) + " 卖出")+ "卖出")。

}

如果(EmailAlert) {

如果(as_0 == "buy") SendMail("TrendWave Alert", Symbol() + " => " + TimeToStr(TimeCurrent())+ " 买入")。

如果(as_0 == "卖出") SendMail("TrendWave Alert", Symbol() + " => " + TimeToStr(TimeCurrent())+ "卖出")。

}

gi_132 = Time[0];

}

}