文章 "创建一个在若干工具上交易的 EA 交易程序" - 页 4 123456 新评论 gisip 2010.07.05 11:23 #31 Interesting:如果我理解正确的话,一个缓冲区就足够了(只需正确计算并绘制在图表上)。PS对于当前的变体,我的印象是诱导器显示的是 "左 "数据(历史的开端),而不是 "右 "数据(当前)....。或者说我完全不理解这个指标的逻辑....。如果您输出欧元兑美元(EURUSD)到欧元兑美元(EURUSD)或欧元兑日元(EURJPY)到欧元兑日元(EURJPY),则一切正常。因此,输出方向似乎是正确的。我在这里尝试了很多变体,甚至像这样:handle1=iMA(InstrumentName,PERIOD_CURRENT,ex_Period_MA_1,0,MODE_SMA, PRICE_CLOSE);...copied=CopyBuffer(handle1,0,0,0,Counted_bars,Buf_0);还是什么也显示不出来。是否有人有在一个屏幕上显示两个不同工具的示例? Sergey Pavlov 2010.07.05 11:34 #32 gisip:我做错了什么?为什么我不能正常显示另一个工具的图表?在 MQL4 中一切正常,而在这里只有在同一工具上显示时才能正常,而且不会出错。它在裁剪形式下工作。添加检查和经济。#property indicator_separate_window // 指示器在单独窗口中绘制 #property indicator_buffers 1 #property indicator_plots 1 #property indicator_type1 DRAW_LINE #property indicator_color1 Aqua input string InstrumentName="EURJPY"; //-- 指标数组 double ScreenBuffer[]; //-- 动态缓冲区 -- double ArrayBuffer[]; //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ int OnInit() // 特殊的 init() 函数 { //-------------------------------------------------------------------- IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName); SetIndexBuffer(0,ScreenBuffer,INDICATOR_DATA); ArraySetAsSeries(ArrayBuffer,true); ArraySetAsSeries(ScreenBuffer,true); 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 Counted_bars; // 运行的条数 int copied; //-------------------------------------------------------------------- copied=(int)SeriesInfoInteger(InstrumentName,0,SERIES_BARS_COUNT); copied=CopyClose(InstrumentName,PERIOD_M1,0,copied,ArrayBuffer);//-- 将数据写入内存缓冲区 -- for(int i=0; i<copied; i++) { ScreenBuffer[i]=ArrayBuffer[i]; } //-------------------------------------------------------------------- return(rates_total); } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectsDeleteAll(0,0,-1); // 图表中的所有对象都会被删除。 } [删除] 2010.07.05 11:41 #33 gisip:如果输出欧元兑美元(EURUSD)至欧元兑美元(EURUSD)或欧元兑日元(EURJPY)至欧元兑日元(EURJPY),则一切正常。所以输出方向是正确的。我在这里尝试了很多变体,甚至像这样:handle1=iMA(InstrumentName,PERIOD_CURRENT,ex_Period_MA_1,0,MODE_SMA, PRICE_CLOSE);...copied=CopyBuffer(handle1,0,0,0,Counted_bars,Buf_0);还是什么也显示不出来。是否有人有在一个屏幕上显示两个不同工具的示例?您有 MQL4 的源代码吗?我已经提出了一个替代方案,即为当前工具创建一个索引,并对其进行 100% 的调试。之后,您可以在 Expert Advisor 或其他指标中使用必要的参数轻松调用它。采用这种方法时,您需要更改指标的基本逻辑,因为传给计算器的参数对于其他工具来说并不完全正确(条数 和其他事项可能不匹配)....。总的来说,这个概念不是很 "正确"(说得轻一点)。PS简而言之,这里有两种选择:1.使用 iCustom();2.重写诱导器的逻辑,使其在计算器中接收参数中指定的仪器上的所有数据(代价高昂且不太正确的方法)。 Документация по MQL5: Доступ к таймсериям и индикаторам / Bars www.mql5.com Доступ к таймсериям и индикаторам / Bars - Документация по MQL5 Rashid Umarov 2010.07.05 11:44 #34 gisip: 改了,还是不行,图表不真实。在指标中这样做//+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ int OnInit() // 特殊 init() 函数 { //-------------------------------------------------------------------- IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName); SetIndexBuffer(0,ScreenBuffer,INDICATOR_DATA); ArraySetAsSeries(ScreenBuffer,true); return 0; // 退出 }并阅读 "数组和时间序列中的索引方向"部分 [删除] 2010.07.05 12:05 #35 DC2008:裁剪后的表格有效。增加检查和经济性。这里不需要这两样东西。//1//-- 动态缓冲区 -- double ArrayBuffer[]; ............... ArraySetAsSeries(ArrayBuffer,true); //2 for(int i=0; i<copied; i++) { ScreenBuffer[i]=ArrayBuffer[i]; } Sergey Pavlov 2010.07.05 12:07 #36 Interesting:这两样东西是你不需要的。 事实上,是的 gisip 2010.07.05 12:55 #37 是的,我觉得成功了!非常感谢大家我会进一步测试的。 Prival 2010.07.05 15:13 #38 需要可视化交易。Expert Advisor 支持多种货币。比方说,它挂在欧元兑美元上,在其他货币对上打开交易。结果有差异,我知道这是我的错,但我无法检查(当 Expert Advisor 挂在 EURUSD 上时,我无法打开 带有 AUDUSD 交易的图表)。 如果 Expert Advisor 挂在澳元兑美元上,我打开后会看到它按照我的程序运行,但如果挂在欧元兑美元上,结果就不同了,我不明白为什么。可视化交易将非常有帮助。 Документация по MQL5: Операции с графиками / ChartOpen www.mql5.com Операции с графиками / ChartOpen - Документация по MQL5 Anatoliy Ivanov 2010.07.16 22:41 #39 7.测试 Exp_TEMA.mq5 时,Told[] Tnew[1]expression 得到以下值: Told[] Expression could not be evaluated Tnew[1] Invalid array range. 这些值是什么意思,对 Expert Advisor 的工作结果有什么影响? 8.在测试过程中,Exp_TEMA.mq5 为什么会在一栏内打开交易? 9.如果我们不平仓,而是反向开仓,即以双倍交易量反向开仓,是否会减少代码、减少交易执行时间、减少滑点、减少成本(佣金等)? 栏内交易。 [删除] 2010.07.16 22:51 #40 ias:7.Exp_TEMA.mq5 测试时,表达式 Told[] Tnew[1]得到以下值: Told[] Expression couldn't be evaluated Tnew[1] Invalid array range. 这些值是什么意思,对 Expert Advisor 的工作有什么影响? 至于Tnew[1] 数组范围无效,似乎是范围超限。不要忘记数组项 的编号是从 0 开始的! 123456 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
如果我理解正确的话,一个缓冲区就足够了(只需正确计算并绘制在图表上)。
PS
对于当前的变体,我的印象是诱导器显示的是 "左 "数据(历史的开端),而不是 "右 "数据(当前)....。
或者说我完全不理解这个指标的逻辑....。
如果您输出欧元兑美元(EURUSD)到欧元兑美元(EURUSD)或欧元兑日元(EURJPY)到欧元兑日元(EURJPY),则一切正常。
因此,输出方向似乎是正确的。
我在这里尝试了很多变体,甚至像这样:
handle1=iMA(InstrumentName,PERIOD_CURRENT,ex_Period_MA_1,0,MODE_SMA, PRICE_CLOSE);
...
copied=CopyBuffer(handle1,0,0,0,Counted_bars,Buf_0);
还是什么也显示不出来。
是否有人有在一个屏幕上显示两个不同工具的示例?
我做错了什么?为什么我不能正常显示另一个工具的图表?
在 MQL4 中一切正常,而在这里只有在同一工具上显示时才能正常,而且不会出错。
它在裁剪形式下工作。添加检查和经济。
如果输出欧元兑美元(EURUSD)至欧元兑美元(EURUSD)或欧元兑日元(EURJPY)至欧元兑日元(EURJPY),则一切正常。
所以输出方向是正确的。
我在这里尝试了很多变体,甚至像这样:
handle1=iMA(InstrumentName,PERIOD_CURRENT,ex_Period_MA_1,0,MODE_SMA, PRICE_CLOSE);
...
copied=CopyBuffer(handle1,0,0,0,Counted_bars,Buf_0);
还是什么也显示不出来。
是否有人有在一个屏幕上显示两个不同工具的示例?
您有 MQL4 的源代码吗?
我已经提出了一个替代方案,即为当前工具创建一个索引,并对其进行 100% 的调试。之后,您可以在 Expert Advisor 或其他指标中使用必要的参数轻松调用它。
采用这种方法时,您需要更改指标的基本逻辑,因为传给计算器的参数对于其他工具来说并不完全正确(条数 和其他事项可能不匹配)....。
总的来说,这个概念不是很 "正确"(说得轻一点)。
PS
简而言之,这里有两种选择:
1.使用 iCustom();
2.重写诱导器的逻辑,使其在计算器中接收参数中指定的仪器上的所有数据(代价高昂且不太正确的方法)。
改了,还是不行,图表不真实。
在指标中这样做
并阅读 "数组和时间序列中的索引方向"部分
裁剪后的表格有效。增加检查和经济性。
这里不需要这两样东西。
//1
//2
这两样东西是你不需要的。
是的,我觉得成功了!
非常感谢大家
我会进一步测试的。
需要可视化交易。Expert Advisor 支持多种货币。比方说,它挂在欧元兑美元上,在其他货币对上打开交易。结果有差异,我知道这是我的错,但我无法检查(当 Expert Advisor 挂在 EURUSD 上时,我无法打开 带有 AUDUSD 交易的图表)。
如果 Expert Advisor 挂在澳元兑美元上,我打开后会看到它按照我的程序运行,但如果挂在欧元兑美元上,结果就不同了,我不明白为什么。可视化交易将非常有帮助。
7.测试 Exp_TEMA.mq5 时,Told[] Tnew[1]expression 得到以下值:
Told[] Expression could not be evaluated
Tnew[1] Invalid array range.
这些值是什么意思,对 Expert Advisor 的工作结果有什么影响?
8.在测试过程中,Exp_TEMA.mq5 为什么会在一栏内打开交易?
9.如果我们不平仓,而是反向开仓,即以双倍交易量反向开仓,是否会减少代码、减少交易执行时间、减少滑点、减少成本(佣金等)?
栏内交易。
7.Exp_TEMA.mq5 测试时,表达式 Told[] Tnew[1]得到以下值:
Told[] Expression couldn't be evaluated
Tnew[1] Invalid array range.
这些值是什么意思,对 Expert Advisor 的工作有什么影响?