[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 181 1...174175176177178179180181182183184185186187188...432 新评论 Sergey Diubakin 2013.02.26 11:08 #1801 Activict:下午好。我有这样一个问题。我从其他专家顾问和感应器的代码碎片中艰难地重新设计了这个指标以满足自己的需要。这不是一个大的代码,它以我想要的方式工作。问题是,它在内部进行一些计算,并在图表上显示出向上或向下的箭头。请告知如何使专家顾问在图表上出现箭头时按正确的方向开立订单。更确切地说,我只需要知道现在哪个箭头是活动的,我想我可以做其他的事情。这里有一段代码可以让它更清晰,它是指标中的一个初始化部分 SetIndexBuffer(1, Vverh); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,233); SetIndexBuffer(2,Vniz); SetIndexStyle(2,DRAW_ARROW); SetIndexArrow(2,234); 提前感谢大家使用内置的iCustom功能来接收你在专家顾问中需要的自定义指标 的值。 double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)例如,你需要知道在最后一个完全形成的柱子上是否有一个向上或向下的箭头。double Up=iCustom(NULL, 0, name/* название индикатора */, /* настраиваемые параметры индикатора через запятую */, 1, 1); // стрелка вверх double Dw=iCustom(NULL, 0, name/* название индикатора */, /* настраиваемые параметры индикатора через запятую */, 2, 1); // стрелка вниз Maksim Paulau 2013.02.26 11:32 #1802 谢谢你的答复是的,箭头有时会丢失。如果箭头消失了,这个方法是否会读出 "0"?箭头只画在新出现的柱子上,之前的柱子不会重新画,在出现的那一刻,有必要打开一个交易,如果箭头消失了,就分别关闭。 mikhail12 2013.02.26 11:59 #1803 有什么办法可以让EA比平时更频繁地使用程序代码向服务器发送请求?这样,就不会有一个请求,而是有两个,或者为此你可以重复程序的外壳......。如果有三个要求而不是一个,那么重复两次......?? Sergey Diubakin 2013.02.26 12:14 #1804 Activict:是的,箭头有时会丢失。如果箭头不见了,这个方法通过定制会不会读成'0'? 是的,会的。激活。箭头只画在形成的柱子上,之前的柱子不会重新画,在发生的那一刻,有必要打开位置,如果箭头消失,则关闭。 因此,如果箭头是在一个完全形成的柱子上,它将不再消失。箭头可以在当前栏上多次出现和消失。 Alexey Subbotin 2013.02.26 12:57 #1805 激活。спасибо за ответ! Да стрелки иногда пропадают. Этот способ через кастом будет считывать "0" если стрелка пропадет? 在指标的代码中被指定为 "空 "的值被视为与iCustom。通常情况下,它可以是0或EMPTY_VALUE。 EMPTY_VALUE在指标中是默认的,但如果你把SetIndexEmptyValue 放在init()中,它就会有所不同。 Viktar Dzemikhau 2013.02.26 14:06 #1806 yellownight: 有什么办法可以让EA比平时更频繁地使用程序代码向服务器发送请求?这样,就不会有一个请求,而是有两个,或者为此你可以重复程序的外壳......。如果有三个要求而不是一个,那么重复两次......?? 这对你没有任何好处。用请求轰炸服务器,你的账户可能会被完全禁用。我知道这种情况发生在那些 "过度请求 "和用太多的请求 "轰炸 "服务器的人身上。 Viktar Dzemikhau 2013.02.26 14:13 #1807 我已经写了一个简单的指标。以下是代码。//+------------------------------------------------------------------+ //| AngleByLineFromMA.mq4 | //| hoz | //| | //+------------------------------------------------------------------+ #property copyright "hoz" #property link "" extern string h1 = "основные параметры машки"; extern int maTF = 0; extern int maPeriod = 50; extern int maShiftByPrice = 0; extern int maMethod = 0; extern int maPrice = 0; extern int shiftBarsBack1 = 2; // Первое значение shift extern int shiftBarsBack2 = 7; // Второе значение shift extern string h2 = "==============================="; string h3 = "Другие переменные"; double pointOfMaFirst, // Первая тока (начало отрисовки отрезка) pointOfMaLast, // Вторая тока отрезка (конец отрисовки отрезка) varsAngle[1000]; // Буфер для хранения значение возвращаемых машкой #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Red //#property indicator_minimum -45 //#property indicator_maximum 45 //+------------------------------------------------------------------+ //| Функция инициализации индикатора | //+------------------------------------------------------------------+ int init() { IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); SetIndexBuffer(0,varsAngle); // Связываем массив значений угла с буфером SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2); // -------------- блок инициализации закончен ---------------------- return(0); } //+------------------------------------------------------------------+ //| Функция деинициализации индикатора | //+------------------------------------------------------------------+ int deinit() { ObjectsDeleteAll(); // Очистим график от всего // -------------- блок инициализации закончен ---------------------- return(0); } //+------------------------------------------------------------------+ //| Функция итерации эксперта | //+------------------------------------------------------------------+ int start() { int i, countedBars = IndicatorCounted(); int limit = Bars - countedBars; if (limit > 400) limit = 400; for(i = limit;i > 1;i--) { pointOfMaFirst = iMA(Symbol(),maTF,maPeriod,maShiftByPrice,maMethod,maPrice,shiftBarsBack1+i); // Начальная точка прямой pointOfMaLast = iMA(Symbol(),maTF,maPeriod,maShiftByPrice,maMethod,maPrice,shiftBarsBack2+i); // Крайняя точка прямой varsAngle[i] = pointOfMaFirst - pointOfMaLast; Print("varsAngle[i] = ", varsAngle[i]); } return(0); } 这里面只有一个缓冲区。指标值的类型为双数。在专家顾问中,我决定获得指标的值,并将其作为过滤器应用于交易中。在这里,我写了一个简单的函数调用,这个指标的缓冲区在最后形成的酒吧。//+-------------------------------------------------------------------------------------+ //| Получаем направление фильтрующей МА | //+-------------------------------------------------------------------------------------+ double GetSlopeOfMa() { double slope = iCustom(NULL, i_TF, "AngleByLineFromMA simplest", 0, 1); Print ("slope = ", slope); return(slope); } 测试仪中的斜率 值不正确。2013.02.26 16:57:26 2009.10.26 00:23 D_Aleks_first_pattern EURUSD,H1: slope = 2147483647 2013.02.26 16:57:26 2009.10.26 00:23 D_Aleks_first_pattern EURUSD,H1: slope = 2147483647 2013.02.26 16:57:26 2009.10.26 00:23 D_Aleks_first_pattern EURUSD,H1: slope = 2147483647 2013.02.26 16:57:26 2009.10.26 00:23 D_Aleks_first_pattern EURUSD,H1: slope = 2147483647 2013.02.26 16:57:26 2009.10.26 00:23 D_Aleks_first_pattern EURUSD,H1: slope = 2147483647 2013.02.26 16:57:26 2009.10.26 00:23 D_Aleks_first_pattern EURUSD,H1: slope = 2147483647 为什么?该类型是正确的。这个电话也是正确的。该指标根本就能正常工作。这里是来自测试者的日志,但来自真实的当前市场。 2013.02.26 16:57:05 AngleByLineFromMA simplest EURUSD,H1: varsAngle[i] = 0.0009 2013.02.26 16:57:05 AngleByLineFromMA simplest EURUSD,H1: varsAngle[i] = 0.0009 2013.02.26 16:57:05 AngleByLineFromMA simplest EURUSD,H1: varsAngle[i] = 0.0009 2013.02.26 16:57:05 AngleByLineFromMA simplest EURUSD,H1: varsAngle[i] = 0.0009 2013.02.26 16:57:05 AngleByLineFromMA simplest EURUSD,H1: varsAngle[i] = 0.0009 2013.02.26 16:57:05 AngleByLineFromMA simplest EURUSD,H1: varsAngle[i] = 0.0009 2013.02.26 16:57:05 AngleByLineFromMA simplest EURUSD,H1: varsAngle[i] = 0.001 2013.02.26 16:57:05 AngleByLineFromMA simplest EURUSD,H1: varsAngle[i] = 0.001 2013.02.26 16:57:05 AngleByLineFromMA simplest EURUSD,H1: varsAngle[i] = 0.0011 2013.02.26 16:57:05 AngleByLineFromMA simplest EURUSD,H1: varsAngle[i] = 0.0011 2013.02.26 16:57:05 AngleByLineFromMA simplest EURUSD,H1: varsAngle[i] = 0.0011 2013.02.26 16:57:05 AngleByLineFromMA simplest EURUSD,H1: varsAngle[i] = 0.0011 2013.02.26 16:57:05 AngleByLineFromMA simplest EURUSD,H1: varsAngle[i] = 0.001 2013.02.26 16:57:05 AngleByLineFromMA simplest EURUSD,H1: varsAngle[i] = 0.001 为什么总是返回一些数字2147483647,而不是需要的数字? Sergey Diubakin 2013.02.26 14:21 #1808 hoz:我已经写了一个简单的指标。以下是代码。 它只有一个缓冲区。指标值为双倍 类型。在专家顾问中,我决定获得指标的值,并将其作为过滤器应用于交易中。在这里,我写了一个简单的函数调用,这个指标的缓冲区在最后形成的条形上。 测试仪中返回的斜率 值不正确。为什么?该类型是正确的。这个电话也是正确的。该指标根本就能正常工作。这是测试器上的日志记录,以及来自真实的当前市场。为什么总是返回一些数字2147483647,而不是需要的数字?在测试者开始工作时,历史上没有足够的条数来正确计算指标。//+-------------------------------------------------------------------------------------+ //| Получаем направление фильтрующей МА | //+-------------------------------------------------------------------------------------+ double GetSlopeOfMa() { if(iBars(NULL, i_TF)<maPeriod) { Print("Недостаточно баров в истории для корректного расчёта значений индикатора!"); return(-1.0); } double slope = iCustom(NULL, i_TF, "AngleByLineFromMA simplest", 0, 1); Print ("slope = ", slope); return(slope); } Viktar Dzemikhau 2013.02.26 14:45 #1809 //+-------------------------------------------------------------------------------------+ //| Получаем направление фильтрующей МА | //+-------------------------------------------------------------------------------------+ double GetSlopeOfMa() { if(iBars(NULL, i_TF) < maPeriod) { Print("Недостаточно баров в истории для корректного расчёта значений индикатора!"); return(0); } double slope = iCustom(NULL, i_TF, "AngleByLineFromMA simplest", 0, 1); Print ("slope = ", slope); Print ("iBars(NULL, i_TF) = ", iBars(NULL, i_TF)); return(slope); }我从2007年开始从Dukascopy下载了一个故事...不可能没有足够的酒吧。MA期仅为50。我粘贴了你的行文,但我更正了return(0)......并增加了图表上的条数 的输出。 在这里的日志中。2013.02.26 17:53:26 2009.10.26 00:22 D_Aleks_first_pattern EURUSD,H1: iBars(NULL, i_TF) = 15895 2013.02.26 17:53:26 2009.10.26 00:22 D_Aleks_first_pattern EURUSD,H1: slope = 2147483647 2013.02.26 17:53:26 2009.10.26 00:22 D_Aleks_first_pattern EURUSD,H1: iBars(NULL, i_TF) = 15895 2013.02.26 17:53:26 2009.10.26 00:22 D_Aleks_first_pattern EURUSD,H1: slope = 2147483647 2013.02.26 17:53:26 2009.10.26 00:22 D_Aleks_first_pattern EURUSD,H1: iBars(NULL, i_TF) = 15895 2013.02.26 17:53:26 2009.10.26 00:22 D_Aleks_first_pattern EURUSD,H1: slope = 2147483647 2013.02.26 17:53:26 2009.10.26 00:22 D_Aleks_first_pattern EURUSD,H1: iBars(NULL, i_TF) = 15895 2013.02.26 17:53:26 2009.10.26 00:22 D_Aleks_first_pattern EURUSD,H1: slope = 2147483647 Victor Nikolaev 2013.02.26 14:59 #1810 hoz:我从2007年开始从Dukascopy下载了一个故事...不可能没有足够的酒吧。MA期仅为50。这是你的行,但我用return(0)纠正了它 ...在这里,它是在日志中。 问题似乎出在指标上 if (limit > 400) limit = 400; 1...174175176177178179180181182183184185186187188...432 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
下午好。我有这样一个问题。
我从其他专家顾问和感应器的代码碎片中艰难地重新设计了这个指标以满足自己的需要。这不是一个大的代码,它以我想要的方式工作。
问题是,它在内部进行一些计算,并在图表上显示出向上或向下的箭头。
请告知如何使专家顾问在图表上出现箭头时按正确的方向开立订单。
更确切地说,我只需要知道现在哪个箭头是活动的,我想我可以做其他的事情。
这里有一段代码可以让它更清晰,它是指标中的一个初始化部分
SetIndexBuffer(1, Vverh);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,233);
SetIndexBuffer(2,Vniz);
SetIndexStyle(2,DRAW_ARROW);
SetIndexArrow(2,234);
提前感谢大家
使用内置的iCustom功能来接收你在专家顾问中需要的自定义指标 的值。
例如,你需要知道在最后一个完全形成的柱子上是否有一个向上或向下的箭头。
谢谢你的答复是的,箭头有时会丢失。如果箭头消失了,这个方法是否会读出 "0"?
箭头只画在新出现的柱子上,之前的柱子不会重新画,在出现的那一刻,有必要打开一个交易,如果箭头消失了,就分别关闭。
是的,箭头有时会丢失。如果箭头不见了,这个方法通过定制会不会读成'0'?
是的,会的。
箭头只画在形成的柱子上,之前的柱子不会重新画,在发生的那一刻,有必要打开位置,如果箭头消失,则关闭。
спасибо за ответ! Да стрелки иногда пропадают. Этот способ через кастом будет считывать "0" если стрелка пропадет?
在指标的代码中被指定为 "空 "的值被视为与iCustom。通常情况下,它可以是0或EMPTY_VALUE。
EMPTY_VALUE在指标中是默认的,但如果你把SetIndexEmptyValue 放在init()中,它就会有所不同。
有什么办法可以让EA比平时更频繁地使用程序代码向服务器发送请求?这样,就不会有一个请求,而是有两个,或者为此你可以重复程序的外壳......。如果有三个要求而不是一个,那么重复两次......??
我已经写了一个简单的指标。以下是代码。
这里面只有一个缓冲区。指标值的类型为双数。在专家顾问中,我决定获得指标的值,并将其作为过滤器应用于交易中。
在这里,我写了一个简单的函数调用,这个指标的缓冲区在最后形成的酒吧。
测试仪中的斜率 值不正确。为什么?该类型是正确的。这个电话也是正确的。该指标根本就能正常工作。这里是来自测试者的日志,但来自真实的当前市场。
为什么总是返回一些数字2147483647,而不是需要的数字?
我已经写了一个简单的指标。以下是代码。
它只有一个缓冲区。指标值为双倍 类型。在专家顾问中,我决定获得指标的值,并将其作为过滤器应用于交易中。
在这里,我写了一个简单的函数调用,这个指标的缓冲区在最后形成的条形上。
测试仪中返回的斜率 值不正确。为什么?该类型是正确的。这个电话也是正确的。该指标根本就能正常工作。这是测试器上的日志记录,以及来自真实的当前市场。
为什么总是返回一些数字2147483647,而不是需要的数字?
在测试者开始工作时,历史上没有足够的条数来正确计算指标。
我从2007年开始从Dukascopy下载了一个故事...不可能没有足够的酒吧。MA期仅为50。
我粘贴了你的行文,但我更正了return(0)......并增加了图表上的条数 的输出。
在这里的日志中。
2013.02.26 17:53:26 2009.10.26 00:22 D_Aleks_first_pattern EURUSD,H1: iBars(NULL, i_TF) = 15895 2013.02.26 17:53:26 2009.10.26 00:22 D_Aleks_first_pattern EURUSD,H1: slope = 2147483647 2013.02.26 17:53:26 2009.10.26 00:22 D_Aleks_first_pattern EURUSD,H1: iBars(NULL, i_TF) = 15895 2013.02.26 17:53:26 2009.10.26 00:22 D_Aleks_first_pattern EURUSD,H1: slope = 2147483647 2013.02.26 17:53:26 2009.10.26 00:22 D_Aleks_first_pattern EURUSD,H1: iBars(NULL, i_TF) = 15895 2013.02.26 17:53:26 2009.10.26 00:22 D_Aleks_first_pattern EURUSD,H1: slope = 2147483647 2013.02.26 17:53:26 2009.10.26 00:22 D_Aleks_first_pattern EURUSD,H1: iBars(NULL, i_TF) = 15895 2013.02.26 17:53:26 2009.10.26 00:22 D_Aleks_first_pattern EURUSD,H1: slope = 2147483647
我从2007年开始从Dukascopy下载了一个故事...不可能没有足够的酒吧。MA期仅为50。
这是你的行,但我用return(0)纠正了它 ...
在这里,它是在日志中。
问题似乎出在指标上