错误、漏洞、问题 - 页 33 1...262728293031323334353637383940...3184 新评论 [删除] 2010.07.06 05:02 #321 Urain:这是一个值得注意的建议。虽然从普通逻辑的角度来看,这就像用右手抓左耳一样(但这不是由你决定的,而是由开发者决定的)。为什么可以调用非本地仪器的数据? 如果你仍然需要创建自定义指标,并从所需的符号中调用它们,一般来说,结论是认为头我买。 这种调用的可能性是必要的,开发人员在编写指数时肯定不能假设这种方法。我指的是用户指标参数中的工具指示(而不是在他们看来应该在iCustom()参数中)。PSiCustom()在工作中的优先权似乎最初被赋予了机械交易,事实上,它假设一些时刻将被考虑,一些行动将在专家顾问中执行,然后才会为自定义指标调用iCustom()。否则,所有的工作和责任都落在执行indyke代码的程序员身上(这可能会导致致命的错误和后果,因为太多花哨的indyke可能导致整个系统的制动或崩溃)。 [删除] 2010.07.06 05:09 #322 Urain:值得关注的建议。 但同样,我可能会用日元的数据来调用欧元的预备指标(例如,没有足够的日元数据)。 我没有这个长度的数据,它能告诉我什么?"?"同一首歌。在本地工具中处理错误和瓶颈要容易得多,初步检查和最终检查是在专家顾问或数据请求指标的调用前后进行。我假设有第二种方式,从我的观点来看,这从根本上是错误的。根据它的逻辑,你需要在指标中创建一个或多个函数(从计算器中调用),在其中计算你需要的一切,并将结果返回给计算器。PS但问题是--你可以计算出任意符号的条数。但其他事情呢? Vladimir 2010.07.06 05:25 #323 Prival:错误。描述。ATS总是在市场上(滚动的双手0.2)。测试模式下,所有滴答声。一切都很正常。测试模式,通过打开价格。同一片。出于某种原因,它分成了两个交易。也许这只是它的显示方式,但这是不正确的。它不应该是这样的。 将开头的 命令与结尾的命令重新排列。应该按照这样的顺序 - 关闭位置 - 修改职位 - 开放的职位 那么你的平仓和开仓就会在同一个柱子上。 Prival 2010.07.06 07:05 #324 gpwr: 将开头的命令与结尾的命令重新排列。顺序应该是这样的 - 关闭位置 - 修改职位 - 开放的职位 那么你的收盘和开盘将在同一个柱子上。 如果市场是买入0.1,我就开出卖出0.2。这个操作的结果应该是一次交易的0.1.1,而不是两次。我想开发商明白我在说什么。 ddd06 2010.07.06 11:10 #325 我写了这样的代码#property indicator_separate_window #property indicator_buffers 2 #property indicator_plots 2 //--- plot Label1 #property indicator_label1 "I1" #property indicator_type1 DRAW_LINE #property indicator_color1 Red #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- plot Label2 #property indicator_label2 "I2" #property indicator_type2 DRAW_LINE #property indicator_color2 Green #property indicator_style2 STYLE_SOLID #property indicator_width2 1 //--- indicator buffers double I1Buffer[]; double I2Buffer[]; int OnInit() { SetIndexBuffer(0,I1Buffer,INDICATOR_DATA); SetIndexBuffer(1,I2Buffer,INDICATOR_DATA); return(0); } int OnCalculate (const int rates_total, // размер массива price[] const int prev_calculated, // обработано баров на предыдущем вызове const int begin, // откуда начинаются значимые данные const double& price[]) // массив для расчета { string Symbol_1="EURUSD",Symbol_2="GBPUSD"; if(rates_total<1) return(0); double Arr1[],Arr2[]; int end,rez0,rez1; end=MathMin((int)SeriesInfoInteger(Symbol_1,0,SERIES_BARS_COUNT)-1,(int)SeriesInfoInteger(Symbol_2,0,SERIES_BARS_COUNT)-1); end=MathMin(end,rates_total-prev_calculated+1); rez0=CopyClose(Symbol_1,PERIOD_CURRENT, 0,end, Arr1); if(rez0==-1){Print("Ошибка копирования ",Symbol_1," ",GetLastError()); return(0);} rez1=CopyClose(Symbol_2,PERIOD_CURRENT, 0,end, Arr2); if(rez1==-1){Print("Ошибка копирования ",Symbol_2," ",GetLastError()); return(0);} if(rez1!=rez0){Print("Ошибка Синхронизации"); return(0);} ArraySetAsSeries(Arr1,true); ArraySetAsSeries(Arr2,true); int li=rates_total-1; for(int i=0;i<end;i++) { I1Buffer[li]=Arr1[i]+0.26; I2Buffer[li]=Arr2[i]; li--; } return(rates_total); } 它似乎工作得很好,但它是否考虑到了一切,我不知道。 如果是这样,这里有一个变体给你。 如果不正确,请纠正。 ddd06 2010.07.06 13:16 #326 现在我有一个问题。 为什么从专家顾问中调用该指标,其数值与指标不一致。 即指标为1.5123,EA为1.5117。 我试图使用它,因为我不知道如何阅读它,我不想错过它。static int Handle; int bars; void OnInit() { Handle=iCustom(NULL,0,"proverka"); } void OnTick() { if(bars==Bars(_Symbol,_Period))return; bars=Bars(_Symbol,_Period); double buf1[],buf2[]; if(CopyBuffer(Handle,0,0,2,buf1)<0 || CopyBuffer(Handle,1,0,2,buf2)<0)Alert("Ошибка копирования значений индикаторных буферов ",GetLastError(),"!!"); Print("Время "+TimeToString(TimeCurrent(),TIME_DATE|TIME_MINUTES)," буф1-",buf1[0]," буф2-",buf2[0]); } 和图像 而第一个缓冲区,也就是它所运行的仪器,也是重合的。 附加的文件: prover.mq5 1 kb proverka.mq5 2 kb Slava 2010.07.06 13:20 #327 ddd06: 现在我有一个问题。 为什么从专家顾问中调用该指标,其数值与指标不一致。 即指标为1.5123,EA为1.5117。 下面是EA的代码,除了在附件中重复的代码。 而你看的是指标的前值。我怀疑它正好是1.5117。按索引1取当前(最后)值。或者指定数组 SetAsSeries(bufX,true) ddd06 2010.07.06 13:28 #328 stringo: 而你看一下之前的指标值。 1.512380 - 当前 1.512310 - 前期 Mykola Demko 2010.07.06 13:35 #329 ddd06:我写了这样的代码 它似乎工作得很好,但是否考虑到了所有我不知道。 如果是这样,这里有一个变体给你。 如果不正确,请纠正。 是的,我重做的版本也有对数组长度的检查,但我像往常一样迷失在系列的方向上。结果发现,绘图继续进行,但由于阵列的长度小于图表的长度,绘图从末端到中间(或左右)。这就是为什么我有一个印象,就是没有渲染。总的来说,我怀疑在这个地方会有很长一段时间的混乱。 因为同样的问题出现在mql4.com的访问者身上,现在他们正在这里下载。 ddd06 2010.07.06 13:50 #330 Urain: 这就对了。 这很好。我认为这个代码很简单,而且是本地的,所以你可以把它作为一个基础。 关于EA的问题--我应该写信给服务台 吗? Общайтесь с разработчиками через Сервисдеск! www.mql5.com Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы. 1...262728293031323334353637383940...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这是一个值得注意的建议。
虽然从普通逻辑的角度来看,这就像用右手抓左耳一样(但这不是由你决定的,而是由开发者决定的)。
为什么可以调用非本地仪器的数据?
如果你仍然需要创建自定义指标,并从所需的符号中调用它们,一般来说,结论是认为头我买。
这种调用的可能性是必要的,开发人员在编写指数时肯定不能假设这种方法。
我指的是用户指标参数中的工具指示(而不是在他们看来应该在iCustom()参数中)。
PS
iCustom()在工作中的优先权似乎最初被赋予了机械交易,事实上,它假设一些时刻将被考虑,一些行动将在专家顾问中执行,然后才会为自定义指标调用iCustom()。
否则,所有的工作和责任都落在执行indyke代码的程序员身上(这可能会导致致命的错误和后果,因为太多花哨的indyke可能导致整个系统的制动或崩溃)。
值得关注的建议。
但同样,我可能会用日元的数据来调用欧元的预备指标(例如,没有足够的日元数据)。我没有这个长度的数据,它能告诉我什么?"?"同一首歌。
在本地工具中处理错误和瓶颈要容易得多,初步检查和最终检查是在专家顾问或数据请求指标的调用前后进行。
我假设有第二种方式,从我的观点来看,这从根本上是错误的。根据它的逻辑,你需要在指标中创建一个或多个函数(从计算器中调用),在其中计算你需要的一切,并将结果返回给计算器。
PS
但问题是--你可以计算出任意符号的条数。但其他事情呢?
错误。描述。ATS总是在市场上(滚动的双手0.2)。
测试模式下,所有滴答声。一切都很正常。
测试模式,通过打开价格。同一片。
出于某种原因,它分成了两个交易。也许这只是它的显示方式,但这是不正确的。它不应该是这样的。
将开头的 命令与结尾的命令重新排列。应该按照这样的顺序
- 关闭位置
- 修改职位
- 开放的职位
那么你的平仓和开仓就会在同一个柱子上。
将开头的命令与结尾的命令重新排列。顺序应该是这样的
- 关闭位置
- 修改职位
- 开放的职位
那么你的收盘和开盘将在同一个柱子上。
如果市场是买入0.1,我就开出卖出0.2。这个操作的结果应该是一次交易的0.1.1,而不是两次。
我想开发商明白我在说什么。
我写了这样的代码
它似乎工作得很好,但它是否考虑到了一切,我不知道。
如果是这样,这里有一个变体给你。
如果不正确,请纠正。
现在我有一个问题。
为什么从专家顾问中调用该指标,其数值与指标不一致。
即指标为1.5123,EA为1.5117。
我试图使用它,因为我不知道如何阅读它,我不想错过它。
和图像
而第一个缓冲区,也就是它所运行的仪器,也是重合的。
现在我有一个问题。
为什么从专家顾问中调用该指标,其数值与指标不一致。
即指标为1.5123,EA为1.5117。
下面是EA的代码,除了在附件中重复的代码。
而你看一下之前的指标值。
我写了这样的代码
它似乎工作得很好,但是否考虑到了所有我不知道。
如果是这样,这里有一个变体给你。
如果不正确,请纠正。
是的,我重做的版本也有对数组长度的检查,但我像往常一样迷失在系列的方向上。
结果发现,绘图继续进行,但由于阵列的长度小于图表的长度,绘图从末端到中间(或左右)。
这就是为什么我有一个印象,就是没有渲染。
总的来说,我怀疑在这个地方会有很长一段时间的混乱。
因为同样的问题出现在mql4.com的访问者身上,现在他们正在这里下载。
这就对了。
这很好。我认为这个代码很简单,而且是本地的,所以你可以把它作为一个基础。
关于EA的问题--我应该写信给服务台 吗?